From cd144ffe68d0d75c8f7c7b5e4026ce80dceececa Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Tue, 26 Apr 2016 13:01:17 +0000
Subject: [PATCH] OPENDJ-2797 Remove SchemaFileElement interface in favor of SDK SchemaElement interface

---
 /dev/null                                                                                     |   59 -------------------
 opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/ObjectClassBuilderTestCase.java    |    5 +
 opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/AbstractSchemaElementTestCase.java |    2 
 opendj-server-legacy/src/main/java/org/opends/server/types/DITStructureRule.java              |    7 +-
 opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java              |    6 +-
 opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java                      |    5 +
 opendj-server-legacy/src/main/java/org/opends/server/types/CommonSchemaElements.java          |   16 +++--
 opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java                        |    4 
 opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java                |   12 +++
 opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java            |   10 ++
 opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java         |   11 +++
 11 files changed, 52 insertions(+), 85 deletions(-)

diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/AbstractSchemaElementTestCase.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/AbstractSchemaElementTestCase.java
index 8124a2b..3efdd37 100644
--- a/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/AbstractSchemaElementTestCase.java
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/AbstractSchemaElementTestCase.java
@@ -12,7 +12,7 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2009 Sun Microsystems, Inc.
- * Portions Copyright 2015 ForgeRock AS.
+ * Portions Copyright 2015-2016 ForgeRock AS.
  */
 package org.forgerock.opendj.ldap.schema;
 
diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/ObjectClassBuilderTestCase.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/ObjectClassBuilderTestCase.java
index 86de65c..8229015 100644
--- a/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/ObjectClassBuilderTestCase.java
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/ObjectClassBuilderTestCase.java
@@ -11,7 +11,7 @@
  * Header, with the fields enclosed by brackets [] replaced by your own identifying
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
- * Copyright 2015 ForgeRock AS.
+ * Copyright 2015-2016 ForgeRock AS.
  */
 package org.forgerock.opendj.ldap.schema;
 
@@ -184,7 +184,8 @@
         }
     }
 
-    private boolean assertSchemaElementsContains(final Set<? extends AbstractSchemaElement> elements, final String nameOrOID) {
+    private boolean assertSchemaElementsContains(final Set<? extends AbstractSchemaElement> elements,
+            final String nameOrOID) {
         for (final AbstractSchemaElement element : elements) {
             final String oid = element instanceof AttributeType ? ((AttributeType) element).getNameOrOID()
                                                             : ((ObjectClass) element).getNameOrOID();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
index cef2067..bb526d9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -66,6 +66,7 @@
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.opendj.ldap.schema.MatchingRuleUse;
 import org.forgerock.opendj.ldap.schema.ObjectClassType;
+import org.forgerock.opendj.ldap.schema.SchemaElement;
 import org.forgerock.opendj.server.config.server.SchemaBackendCfg;
 import org.opends.server.api.AlertGenerator;
 import org.opends.server.api.Backend;
@@ -110,7 +111,6 @@
 import org.opends.server.types.Privilege;
 import org.opends.server.types.RestoreConfig;
 import org.opends.server.types.Schema;
-import org.opends.server.types.SchemaFileElement;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.util.BackupManager;
 import org.opends.server.util.BuildVersion;
@@ -1213,7 +1213,7 @@
     }
   }
 
-  private void addNewSchemaElement(Set<String> modifiedSchemaFiles, SchemaFileElement elem)
+  private void addNewSchemaElement(Set<String> modifiedSchemaFiles, SchemaElement elem)
   {
     String schemaFile = getSchemaFile(elem);
     if (schemaFile == null || schemaFile.length() == 0)
@@ -1245,7 +1245,7 @@
     return schemaFile == null ? finalFile : null;
   }
 
-  private <T extends SchemaFileElement> void replaceExistingSchemaElement(
+  private <T extends SchemaElement> void replaceExistingSchemaElement(
       Set<String> modifiedSchemaFiles, T newElem, T existingElem)
   {
     String newSchemaFile = getSchemaFile(newElem);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java
index 1e948a7..b0f68b8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/SomeSchemaElement.java
@@ -24,11 +24,11 @@
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaBuilder;
+import org.forgerock.opendj.ldap.schema.SchemaElement;
 import org.opends.server.config.ConfigConstants;
 import org.opends.server.core.ServerContext;
 import org.opends.server.types.CommonSchemaElements;
 import org.opends.server.types.ObjectClass;
-import org.opends.server.types.SchemaFileElement;
 import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
 import org.opends.server.util.ServerConstants;
 
@@ -41,7 +41,7 @@
  */
 @RemoveOnceSDKSchemaIsUsed("This class is a temporary mechanism"
     + " to manage in the same way SDK and server schema element classes")
-public class SomeSchemaElement implements SchemaFileElement
+public class SomeSchemaElement implements SchemaElement
 {
   private final ObjectClass objectClass;
   private AttributeType attributeType;
@@ -294,4 +294,10 @@
       .toSchema();
     return schema.getAttributeType(attributeType.getNameOrOID());
   }
+
+  @Override
+  public String getDescription()
+  {
+    return attributeType != null ? attributeType.getDescription() : objectClass.getDescription();
+  }
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/CommonSchemaElements.java b/opendj-server-legacy/src/main/java/org/opends/server/types/CommonSchemaElements.java
index 7d167a7..0a0731d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/CommonSchemaElements.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/CommonSchemaElements.java
@@ -12,7 +12,7 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
  */
 package org.opends.server.types;
 
@@ -26,6 +26,7 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.SchemaElement;
 
 import static org.forgerock.util.Reject.*;
 import static org.opends.messages.SchemaMessages.*;
@@ -62,7 +63,7 @@
      mayInstantiate=false,
      mayExtend=false,
      mayInvoke=true)
-public abstract class CommonSchemaElements implements SchemaFileElement {
+public abstract class CommonSchemaElements implements SchemaElement {
   /** Indicates whether this definition is declared "obsolete". */
   private final boolean isObsolete;
 
@@ -301,7 +302,7 @@
    *         for this schema definition, or <code>null</code> if it
    *         is not known or if it is not stored in any schema file.
    */
-  public static String getSchemaFile(SchemaFileElement elem)
+  public static String getSchemaFile(SchemaElement elem)
   {
     return getSingleValueProperty(elem, SCHEMA_PROPERTY_FILENAME);
   }
@@ -314,7 +315,7 @@
    * @return The single value for this property, or <code>null</code> if it
    *         is this property is not set.
    */
-  public static String getSingleValueProperty(SchemaFileElement elem,
+  public static String getSingleValueProperty(SchemaElement elem,
       String propertyName)
   {
     List<String> values = elem.getExtraProperties().get(propertyName);
@@ -335,7 +336,7 @@
    * @param  schemaFile  The name of the schema file that contains the
    *                     definition for this schema element.
    */
-  public static void setSchemaFile(SchemaFileElement elem, String schemaFile)
+  public static void setSchemaFile(SchemaElement elem, String schemaFile)
   {
     setExtraProperty(elem, SCHEMA_PROPERTY_FILENAME, schemaFile);
   }
@@ -346,6 +347,7 @@
    * @return The description for this schema definition, or
    *         <code>null</code> if there is no description.
    */
+  @Override
   public final String getDescription() {
     return description;
   }
@@ -378,7 +380,7 @@
    * @param  value  The value for the "extra" property.  If it is
    *                {@code null}, then any existing definition will be removed.
    */
-  public static void setExtraProperty(SchemaFileElement elem,
+  public static void setExtraProperty(SchemaElement elem,
       String name, String value)
   {
     ifNull(name);
@@ -463,7 +465,7 @@
    * @return  The definition string used to create this attribute
    *          type including the X-SCHEMA-FILE extension.
    */
-  public static String getDefinitionWithFileName(SchemaFileElement elem)
+  public static String getDefinitionWithFileName(SchemaElement elem)
   {
     final String schemaFile = getSchemaFile(elem);
     final String definition = elem.toString();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java b/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java
index dca6b5a..db13c49 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/DITContentRule.java
@@ -17,6 +17,7 @@
 package org.opends.server.types;
 
 import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.SchemaElement;
 
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -41,8 +42,7 @@
      mayInstantiate=false,
      mayExtend=false,
      mayInvoke=true)
-public final class DITContentRule
-       implements SchemaFileElement
+public final class DITContentRule implements SchemaElement
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
@@ -498,4 +498,12 @@
     return definition;
   }
 
+
+
+  @Override
+  public String getDescription()
+  {
+    return description;
+  }
+
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/DITStructureRule.java b/opendj-server-legacy/src/main/java/org/opends/server/types/DITStructureRule.java
index 43ce2a3..5d4c7d5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/DITStructureRule.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/DITStructureRule.java
@@ -12,7 +12,7 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
  */
 package org.opends.server.types;
 
@@ -23,6 +23,7 @@
 import java.util.Set;
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.schema.SchemaElement;
 
 import static org.forgerock.util.Reject.*;
 import static org.opends.server.util.ServerConstants.*;
@@ -36,8 +37,7 @@
      mayInstantiate=false,
      mayExtend=false,
      mayInvoke=true)
-public final class DITStructureRule
-       implements SchemaFileElement
+public final class DITStructureRule implements SchemaElement
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
@@ -234,6 +234,7 @@
    *
    * @return  The description for this DIT structure rule.
    */
+  @Override
   public String getDescription()
   {
     return description;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java b/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java
index eecb35c..42076f6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/LDAPSyntaxDescription.java
@@ -24,6 +24,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.forgerock.opendj.ldap.schema.SchemaElement;
+
 /**
  * This class defines a data structure for storing and interacting
  * with an ldap syntax, which defines the custom ldap syntaxes.
@@ -34,8 +36,7 @@
      mayExtend=false,
      mayInvoke=true)
 
-public final class LDAPSyntaxDescription
-       implements SchemaFileElement
+public final class LDAPSyntaxDescription implements SchemaElement
 {
   /**
    * The set of additional name-value pairs associated with this ldap
@@ -231,4 +232,10 @@
     return definition;
   }
 
+  @Override
+  public String getDescription()
+  {
+    return "";
+  }
+
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java b/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java
index 2fd5775..bfbedfd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/NameForm.java
@@ -17,6 +17,7 @@
 package org.opends.server.types;
 
 import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.SchemaElement;
 
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
@@ -40,8 +41,7 @@
      mayInstantiate=false,
      mayExtend=false,
      mayInvoke=true)
-public final class NameForm
-       implements SchemaFileElement
+public final class NameForm implements SchemaElement
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
@@ -275,6 +275,7 @@
    * @return  The description for this name form, or {@code true} if
    *          there is none.
    */
+  @Override
   public String getDescription()
   {
     return description;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java b/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
index fe9812b..b1895a4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
@@ -1861,7 +1861,7 @@
    * @throws  DirectoryException  If a problem occurs while rebuilding
    *                              any of the schema elements.
    */
-  public void rebuildDependentElements(SchemaFileElement element) throws DirectoryException
+  public void rebuildDependentElements(SchemaElement element) throws DirectoryException
   {
     try
     {
@@ -1907,7 +1907,7 @@
     }
   }
 
-  private void circularityCheck(int depth, SchemaFileElement element) throws DirectoryException
+  private void circularityCheck(int depth, SchemaElement element) throws DirectoryException
   {
     if (depth > 20)
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaFileElement.java b/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaFileElement.java
deleted file mode 100644
index 2af5517..0000000
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/SchemaFileElement.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * The contents of this file are subject to the terms of the Common Development and
- * Distribution License (the License). You may not use this file except in compliance with the
- * License.
- *
- * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
- * specific language governing permission and limitations under the License.
- *
- * When distributing Covered Software, include this CDDL Header Notice in each file and include
- * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
- * Header, with the fields enclosed by brackets [] replaced by your own identifying
- * information: "Portions Copyright [year] [name of copyright owner]".
- *
- * Copyright 2008 Sun Microsystems, Inc.
- * Portions copyright 2013-2014 ForgeRock AS.
- */
-package org.opends.server.types;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * This interface defines a set of methods that must be provided by a
- * schema file element, which is a schema element that is loaded from
- * a schema configuration file.
- * <BR><BR>
- * Note that this interface is not meant to be implemented by
- * third-party code, and only the following classes should be
- * considered schema file elements:
- * <UL>
- *   <LI>{@code org.opends.server.types.AttributeType}</LI>
- *   <LI>{@code org.opends.server.types.ObjectClass}</LI>
- *   <LI>{@code org.opends.server.types.NameForm}</LI>
- *   <LI>{@code org.opends.server.types.DITContentRule}</LI>
- *   <LI>{@code org.opends.server.types.DITStructureRule}</LI>
- *   <LI>{@code org.opends.server.types.MatchingRuleUse}</LI>
- * </UL>
- */
-@org.opends.server.types.PublicAPI(
-     stability=org.opends.server.types.StabilityLevel.VOLATILE,
-     mayInstantiate=false,
-     mayExtend=false,
-     mayInvoke=true)
-public interface SchemaFileElement
-{
-
-  /**
-   * Retrieves the "extra" properties for this schema definition.
-   * <p>
-   * FIXME Contrary to the SDK, this method returns a modifiable Map.
-   *
-   * @return Returns a Map of the "extra" properties for this schema definition,
-   *         where the key is the property name and the value is a List of
-   *         Strings representing the property values.
-   *         Single valued properties have a List with a single element inside.
-   */
-  Map<String, List<String>> getExtraProperties();
-
-}

--
Gitblit v1.10.0