From 2a52b482ba335b393356c00fac36d9ae597c8441 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 20 Jul 2007 08:43:07 +0000
Subject: [PATCH] Fix issues 1966 and 1792.
---
opends/src/server/org/opends/server/admin/InstantiableRelationDefinition.java | 100 +++++++++++++++++++++++++++++++++++++++----------
1 files changed, 79 insertions(+), 21 deletions(-)
diff --git a/opends/src/server/org/opends/server/admin/InstantiableRelationDefinition.java b/opends/src/server/org/opends/server/admin/InstantiableRelationDefinition.java
index 2035206..89228f7 100644
--- a/opends/src/server/org/opends/server/admin/InstantiableRelationDefinition.java
+++ b/opends/src/server/org/opends/server/admin/InstantiableRelationDefinition.java
@@ -29,6 +29,8 @@
+import static org.opends.server.util.Validator.*;
+
import java.util.Locale;
@@ -48,6 +50,79 @@
<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 class Builder
+ <C extends ConfigurationClient, S extends Configuration>
+ extends AbstractBuilder<C, S, InstantiableRelationDefinition<C, S>> {
+
+ // The optional naming property definition.
+ private PropertyDefinition<?> namingPropertyDefinition;
+
+ // The plural name of the relation.
+ private final String pluralName;
+
+
+
+ /**
+ * 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;
+ }
+
+
+
+ /**
+ * 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 final 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);
+ }
+
+ }
+
// The optional naming property definition.
private final PropertyDefinition<?> namingPropertyDefinition;
@@ -56,27 +131,10 @@
- /**
- * Create a new instantiable managed object 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.
- * @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 InstantiableRelationDefinition(
- AbstractManagedObjectDefinition<?, ?> pd, String name, String pluralName,
- AbstractManagedObjectDefinition<C, S> cd,
- PropertyDefinition<?> namingPropertyDefinition) {
- super(pd, name, cd);
+ // Private constructor.
+ private InstantiableRelationDefinition(Common<C, S> common,
+ String pluralName, PropertyDefinition<?> namingPropertyDefinition) {
+ super(common);
this.pluralName = pluralName;
this.namingPropertyDefinition = namingPropertyDefinition;
}
--
Gitblit v1.10.0