From 2fef5aa0046548cb88034553f522d907195a19f7 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 02 Dec 2013 10:47:18 +0000
Subject: [PATCH] OpenDJ 3 : config framework
---
opendj-admin/src/main/java/org/opends/server/admin/InstantiableRelationDefinition.java | 437 ++++++++++++++++++++++++------------------------------
1 files changed, 197 insertions(+), 240 deletions(-)
diff --git a/opendj-admin/src/main/java/org/opends/server/admin/InstantiableRelationDefinition.java b/opendj-admin/src/main/java/org/opends/server/admin/InstantiableRelationDefinition.java
index 2600a97..65c08b8 100644
--- a/opendj-admin/src/main/java/org/opends/server/admin/InstantiableRelationDefinition.java
+++ b/opendj-admin/src/main/java/org/opends/server/admin/InstantiableRelationDefinition.java
@@ -26,11 +26,8 @@
*/
package org.opends.server.admin;
-import org.opends.messages.Message;
-
-
-import static org.opends.server.util.Validator.*;
+import static com.forgerock.opendj.util.Validator.*;
import java.util.Collections;
import java.util.HashMap;
@@ -38,267 +35,227 @@
import java.util.Map;
import java.util.Set;
-
+import org.forgerock.i18n.LocalizableMessage;
/**
- * A managed object composite relationship definition which represents
- * a composition of zero or more managed objects.
+ * A managed object composite relationship definition which represents a
+ * composition of zero or more managed objects.
*
* @param <C>
- * The type of client managed object configuration that this
- * relation definition refers to.
+ * The type of client managed object configuration that this relation
+ * definition refers to.
* @param <S>
- * The type of server managed object configuration that this
- * relation definition refers to.
+ * The type of server managed object configuration that this relation
+ * definition refers to.
*/
-public final class InstantiableRelationDefinition
- <C extends ConfigurationClient, S extends Configuration>
- extends RelationDefinition<C, S> {
+public final class InstantiableRelationDefinition<C extends ConfigurationClient, S extends Configuration> extends
+ RelationDefinition<C, S> {
- /**
- * An interface for incrementally constructing instantiable relation
- * definitions.
- *
- * @param <C>
- * The type of client managed object configuration that
- * this relation definition refers to.
- * @param <S>
- * The type of server managed object configuration that
- * this relation definition refers to.
- */
- public static final class Builder
- <C extends ConfigurationClient, S extends Configuration>
- extends AbstractBuilder<C, S, InstantiableRelationDefinition<C, S>> {
+ /**
+ * An interface for incrementally constructing instantiable relation
+ * definitions.
+ *
+ * @param <C>
+ * The type of client managed object configuration that this
+ * relation definition refers to.
+ * @param <S>
+ * The type of server managed object configuration that this
+ * relation definition refers to.
+ */
+ public static final class Builder<C extends ConfigurationClient, S extends Configuration> extends
+ AbstractBuilder<C, S, InstantiableRelationDefinition<C, S>> {
+
+ // The optional naming property definition.
+ private PropertyDefinition<?> namingPropertyDefinition = null;
+
+ // The plural name of the relation.
+ private final String pluralName;
+
+ // The optional default managed objects associated with this
+ // instantiable relation definition.
+ private final Map<String, DefaultManagedObject<? extends C, ? extends S>> defaultManagedObjects = new HashMap<String, DefaultManagedObject<? extends C, ? extends S>>();
+
+ /**
+ * Creates a new builder which can be used to incrementally build an
+ * instantiable relation definition.
+ *
+ * @param pd
+ * The parent managed object definition.
+ * @param name
+ * The name of the relation.
+ * @param pluralName
+ * The plural name of the relation.
+ * @param cd
+ * The child managed object definition.
+ */
+ public Builder(AbstractManagedObjectDefinition<?, ?> pd, String name, String pluralName,
+ AbstractManagedObjectDefinition<C, S> cd) {
+ super(pd, name, cd);
+ this.pluralName = pluralName;
+ }
+
+ /**
+ * Adds the named default managed object to this instantiable relation
+ * definition.
+ *
+ * @param name
+ * The name of the default managed object.
+ * @param defaultManagedObject
+ * The default managed object.
+ */
+ public void setDefaultManagedObject(String name,
+ DefaultManagedObject<? extends C, ? extends S> defaultManagedObject) {
+ this.defaultManagedObjects.put(name, defaultManagedObject);
+ }
+
+ /**
+ * Sets the naming property for the instantiable relation definition.
+ *
+ * @param namingPropertyDefinition
+ * The property of the child managed object definition which
+ * should be used for naming, or <code>null</code> if this
+ * relation does not use a property for naming.
+ */
+ public void setNamingProperty(PropertyDefinition<?> namingPropertyDefinition) {
+ ensureNotNull(namingPropertyDefinition);
+ this.namingPropertyDefinition = namingPropertyDefinition;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected InstantiableRelationDefinition<C, S> buildInstance(Common<C, S> common) {
+ return new InstantiableRelationDefinition<C, S>(common, pluralName, namingPropertyDefinition,
+ defaultManagedObjects);
+ }
+
+ }
// The optional naming property definition.
- private PropertyDefinition<?> namingPropertyDefinition = null;
+ private final PropertyDefinition<?> namingPropertyDefinition;
// The plural name of the relation.
private final String pluralName;
// The optional default managed objects associated with this
// instantiable relation definition.
- private final Map<String, DefaultManagedObject<? extends C, ? extends S>>
- defaultManagedObjects = new HashMap<String,
- DefaultManagedObject<? extends C, ? extends S>>();
+ private final Map<String, DefaultManagedObject<? extends C, ? extends S>> defaultManagedObjects;
-
- /**
- * Creates a new builder which can be used to incrementally build
- * an instantiable relation definition.
- *
- * @param pd
- * The parent managed object definition.
- * @param name
- * The name of the relation.
- * @param pluralName
- * The plural name of the relation.
- * @param cd
- * The child managed object definition.
- */
- public Builder(AbstractManagedObjectDefinition<?, ?> pd, String name,
- String pluralName, AbstractManagedObjectDefinition<C, S> cd) {
- super(pd, name, cd);
- this.pluralName = pluralName;
+ // Private constructor.
+ private InstantiableRelationDefinition(Common<C, S> common, String pluralName,
+ PropertyDefinition<?> namingPropertyDefinition,
+ Map<String, DefaultManagedObject<? extends C, ? extends S>> defaultManagedObjects) {
+ super(common);
+ this.pluralName = pluralName;
+ this.namingPropertyDefinition = namingPropertyDefinition;
+ this.defaultManagedObjects = defaultManagedObjects;
}
-
-
- /**
- * Adds the named default managed object to this instantiable
- * relation definition.
- *
- * @param name
- * The name of the default managed object.
- * @param defaultManagedObject
- * The default managed object.
- */
- public void setDefaultManagedObject(String name,
- DefaultManagedObject<? extends C, ? extends S> defaultManagedObject) {
- this.defaultManagedObjects.put(name, defaultManagedObject);
- }
-
-
-
- /**
- * Sets the naming property for the instantiable relation
- * definition.
- *
- * @param namingPropertyDefinition
- * The property of the child managed object definition
- * which should be used for naming, or <code>null</code>
- * if this relation does not use a property for naming.
- */
- public void setNamingProperty(
- PropertyDefinition<?> namingPropertyDefinition) {
- ensureNotNull(namingPropertyDefinition);
- this.namingPropertyDefinition = namingPropertyDefinition;
- }
-
-
-
/**
* {@inheritDoc}
*/
@Override
- protected InstantiableRelationDefinition<C, S> buildInstance(
- Common<C, S> common) {
- return new InstantiableRelationDefinition<C, S>(common, pluralName,
- namingPropertyDefinition, defaultManagedObjects);
+ public <R, P> R accept(RelationDefinitionVisitor<R, P> v, P p) {
+ return v.visitInstantiable(this, p);
}
- }
-
- // The optional naming property definition.
- private final PropertyDefinition<?> namingPropertyDefinition;
-
- // The plural name of the relation.
- private final String pluralName;
-
- // The optional default managed objects associated with this
- // instantiable relation definition.
- private final Map<String, DefaultManagedObject<? extends C, ? extends S>>
- defaultManagedObjects;
-
-
-
- // Private constructor.
- private InstantiableRelationDefinition(Common<C, S> common,
- String pluralName,
- PropertyDefinition<?> namingPropertyDefinition,
- Map<String, DefaultManagedObject<? extends C, ? extends S>>
- defaultManagedObjects) {
- super(common);
- this.pluralName = pluralName;
- this.namingPropertyDefinition = namingPropertyDefinition;
- this.defaultManagedObjects = defaultManagedObjects;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public <R, P> R accept(RelationDefinitionVisitor<R, P> v, P p) {
- return v.visitInstantiable(this, p);
- }
-
-
-
- /**
- * Gets the named default managed object associated with this
- * instantiable relation definition.
- *
- * @param name
- * The name of the default managed object.
- * @return Returns the named default managed object.
- * @throws IllegalArgumentException
- * If there is no default managed object associated with
- * the provided name.
- */
- public DefaultManagedObject<? extends C, ? extends S> getDefaultManagedObject(
- String name) throws IllegalArgumentException {
- if (!defaultManagedObjects.containsKey(name)) {
- throw new IllegalArgumentException(
- "unrecognized default managed object \"" + name + "\"");
+ /**
+ * Gets the named default managed object associated with this instantiable
+ * relation definition.
+ *
+ * @param name
+ * The name of the default managed object.
+ * @return Returns the named default managed object.
+ * @throws IllegalArgumentException
+ * If there is no default managed object associated with the
+ * provided name.
+ */
+ public DefaultManagedObject<? extends C, ? extends S> getDefaultManagedObject(String name)
+ throws IllegalArgumentException {
+ if (!defaultManagedObjects.containsKey(name)) {
+ throw new IllegalArgumentException("unrecognized default managed object \"" + name + "\"");
+ }
+ return defaultManagedObjects.get(name);
}
- return defaultManagedObjects.get(name);
- }
-
-
- /**
- * Gets the names of the default managed objects associated with
- * this instantiable relation definition.
- *
- * @return Returns an unmodifiable set containing the names of the
- * default managed object.
- */
- public Set<String> getDefaultManagedObjectNames() {
- return Collections.unmodifiableSet(defaultManagedObjects.keySet());
- }
-
-
-
- /**
- * Get the property of the child managed object definition which
- * should be used for naming children.
- *
- * @return Returns the property of the child managed object
- * definition which should be used for naming, or
- * <code>null</code> if this relation does not use a
- * property for naming.
- */
- public PropertyDefinition<?> getNamingPropertyDefinition() {
- return namingPropertyDefinition;
- }
-
-
-
- /**
- * Get the plural name of the relation.
- *
- * @return Returns the plural name of the relation.
- */
- public String getPluralName() {
- return pluralName;
- }
-
-
-
- /**
- * Gets the user friendly plural name of this relation definition in
- * the default locale.
- *
- * @return Returns the user friendly plural name of this relation
- * definition in the default locale.
- */
- public Message getUserFriendlyPluralName() {
- return getUserFriendlyPluralName(Locale.getDefault());
- }
-
-
-
- /**
- * Gets the user friendly plural name of this relation definition in
- * the specified locale.
- *
- * @param locale
- * The locale.
- * @return Returns the user friendly plural name of this relation
- * definition in the specified locale.
- */
- public Message getUserFriendlyPluralName(Locale locale) {
- String property = "relation." + getName() + ".user-friendly-plural-name";
- return ManagedObjectDefinitionI18NResource.getInstance().getMessage(
- getParentDefinition(), property, locale);
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void toString(StringBuilder builder) {
- builder.append("name=");
- builder.append(getName());
- builder.append(" type=collection parent=");
- builder.append(getParentDefinition().getName());
- builder.append(" child=");
- builder.append(getChildDefinition().getName());
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void initialize() throws Exception {
- for (DefaultManagedObject<?, ?> dmo : defaultManagedObjects.values()) {
- dmo.initialize();
+ /**
+ * Gets the names of the default managed objects associated with this
+ * instantiable relation definition.
+ *
+ * @return Returns an unmodifiable set containing the names of the default
+ * managed object.
+ */
+ public Set<String> getDefaultManagedObjectNames() {
+ return Collections.unmodifiableSet(defaultManagedObjects.keySet());
}
- }
+
+ /**
+ * Get the property of the child managed object definition which should be
+ * used for naming children.
+ *
+ * @return Returns the property of the child managed object definition which
+ * should be used for naming, or <code>null</code> if this relation
+ * does not use a property for naming.
+ */
+ public PropertyDefinition<?> getNamingPropertyDefinition() {
+ return namingPropertyDefinition;
+ }
+
+ /**
+ * Get the plural name of the relation.
+ *
+ * @return Returns the plural name of the relation.
+ */
+ public String getPluralName() {
+ return pluralName;
+ }
+
+ /**
+ * Gets the user friendly plural name of this relation definition in the
+ * default locale.
+ *
+ * @return Returns the user friendly plural name of this relation definition
+ * in the default locale.
+ */
+ public LocalizableMessage getUserFriendlyPluralName() {
+ return getUserFriendlyPluralName(Locale.getDefault());
+ }
+
+ /**
+ * Gets the user friendly plural name of this relation definition in the
+ * specified locale.
+ *
+ * @param locale
+ * The locale.
+ * @return Returns the user friendly plural name of this relation definition
+ * in the specified locale.
+ */
+ public LocalizableMessage getUserFriendlyPluralName(Locale locale) {
+ String property = "relation." + getName() + ".user-friendly-plural-name";
+ return ManagedObjectDefinitionI18NResource.getInstance().getMessage(getParentDefinition(), property, locale);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void toString(StringBuilder builder) {
+ builder.append("name=");
+ builder.append(getName());
+ builder.append(" type=collection parent=");
+ builder.append(getParentDefinition().getName());
+ builder.append(" child=");
+ builder.append(getChildDefinition().getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void initialize() throws Exception {
+ for (DefaultManagedObject<?, ?> dmo : defaultManagedObjects.values()) {
+ dmo.initialize();
+ }
+ }
}
--
Gitblit v1.10.0