From 43a01cb8d6c368843baa014eb80be265bfe092e7 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 01 Jul 2016 13:46:08 +0000
Subject: [PATCH] OPENDJ-3038 Merge ServerSchemaElement class into SchemaUtils class
---
opendj-server-legacy/src/main/java/org/opends/server/util/SchemaUtils.java | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/SchemaUtils.java b/opendj-server-legacy/src/main/java/org/opends/server/util/SchemaUtils.java
index d0fa47d..166b2d0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/SchemaUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/SchemaUtils.java
@@ -15,15 +15,21 @@
*/
package org.opends.server.util;
+import static org.opends.server.types.Schema.addSchemaFileToElementDefinitionIfAbsent;
import static org.opends.server.schema.SchemaConstants.SYNTAX_AUTH_PASSWORD_OID;
import static org.opends.server.schema.SchemaConstants.SYNTAX_USER_PASSWORD_OID;
import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
+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.core.ServerContext;
/** Utility methods related to schema. */
public class SchemaUtils
@@ -67,6 +73,60 @@
}
/**
+ * Retrieves the definition string used to create the provided schema element and including the
+ * X-SCHEMA-FILE extension.
+ *
+ * @param element
+ * The schema element.
+ * @return The definition string used to create the schema element including the X-SCHEMA-FILE
+ * extension.
+ */
+ public static String getElementDefinitionWithFileName(SchemaElement element)
+ {
+ final String definition = element.toString();
+ return addSchemaFileToElementDefinitionIfAbsent(definition, SchemaUtils.getElementSchemaFile(element));
+ }
+
+ /**
+ * Returns the origin of the provided schema element.
+ *
+ * @param element
+ * The schema element.
+ * @return the origin of the schema element as defined in the extra properties.
+ */
+ public static String getElementOrigin(SchemaElement element)
+ {
+ return getElementPropertyAsSingleValue(element, ServerConstants.SCHEMA_PROPERTY_ORIGIN);
+ }
+
+ /**
+ * Returns the single value of the provided extra property for the provided schema element.
+ *
+ * @param element
+ * The schema element.
+ * @param property
+ * The name of property to retrieve.
+ * @return the single value of the extra property
+ */
+ public static String getElementPropertyAsSingleValue(SchemaElement element, String property)
+ {
+ List<String> values = element.getExtraProperties().get(property);
+ return values != null && !values.isEmpty() ? values.get(0) : null;
+ }
+
+ /**
+ * Returns the schema file of the provided schema element.
+ *
+ * @param element
+ * The schema element.
+ * @return the schema file of schema element.
+ */
+ public static String getElementSchemaFile(SchemaElement element)
+ {
+ return getElementPropertyAsSingleValue(element, ServerConstants.SCHEMA_PROPERTY_FILENAME);
+ }
+
+ /**
* Returns a new collection with the result of calling {@link ObjectClass#getNameOrOID()} on each
* element of the provided collection.
*
@@ -101,4 +161,32 @@
}
return results;
}
+
+ /**
+ * Returns the new updated attribute type with the provided extra property and its values.
+ *
+ * @param serverContext
+ * the server context
+ * @param attributeType
+ * attribute type to update
+ * @param property
+ * the property to set
+ * @param values
+ * the values to set
+ * @return the new updated attribute type
+ */
+ public static AttributeType getNewAttributeTypeWithProperty(ServerContext serverContext, AttributeType attributeType,
+ String property, String...values)
+ {
+ SchemaBuilder schemaBuilder =
+ new SchemaBuilder(serverContext != null ? serverContext.getSchemaNG() : Schema.getDefaultSchema());
+ AttributeType.Builder builder =
+ schemaBuilder.buildAttributeType(attributeType).removeExtraProperty(property, (String) null);
+ if (values != null && values.length > 0)
+ {
+ builder.extraProperties(property, values);
+ return builder.addToSchemaOverwrite().toSchema().getAttributeType(attributeType.getNameOrOID());
+ }
+ return attributeType;
+ }
}
--
Gitblit v1.10.0