From 2de738aa8477211d74faeb8620da64054e085914 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.
---
opendj-sdk/opends/src/server/org/opends/server/admin/AggregationRelationDefinition.java | 216 ++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 146 insertions(+), 70 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/AggregationRelationDefinition.java b/opendj-sdk/opends/src/server/org/opends/server/admin/AggregationRelationDefinition.java
index 9b0f159..dbd9300 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/AggregationRelationDefinition.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/AggregationRelationDefinition.java
@@ -29,7 +29,7 @@
-import static org.opends.server.util.Validator.ensureNotNull;
+import static org.opends.server.util.Validator.*;
@@ -47,61 +47,137 @@
<C extends ConfigurationClient, S extends Configuration>
extends RelationDefinition<C, S> {
- // The plural name of the relation.
- private final String pluralName;
+ /**
+ * An interface for incrementally constructing aggregation 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, AggregationRelationDefinition<C, S>> {
+
+ // The maximum number of referenced managed objects.
+ private int maxOccurs = 0;
+
+ // The minimum number of referenced managed objects.
+ private int minOccurs = 0;
+
+ // The path identifying the location of the referenced managed
+ // objects.
+ private ManagedObjectPath path;
+
+ // The plural name of the relation.
+ private final String pluralName;
+
+
+
+ /**
+ * Creates a new builder which can be used to incrementally build
+ * an aggregation 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;
+ }
+
+
+
+ /**
+ * Set the maximum number of referenced managed objects.
+ *
+ * @param maxOccurs
+ * The maximum number of referenced managed objects (or
+ * zero if there is no upper limit).
+ */
+ public void setMaxOccurs(int maxOccurs) {
+ this.maxOccurs = maxOccurs;
+ }
+
+
+
+ /**
+ * Set the minimum number of referenced managed objects.
+ *
+ * @param minOccurs
+ * The minimum number of referenced managed objects.
+ */
+ public void setMinOccurs(int minOccurs) {
+ this.minOccurs = minOccurs;
+ }
+
+
+
+ /**
+ * Set the path identifying the location of the referenced managed
+ * objects.
+ *
+ * @param path
+ * The path identifying the location of the referenced
+ * managed objects.
+ */
+ public void setPath(ManagedObjectPath path) {
+ this.path = path;
+ }
+
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected AggregationRelationDefinition<C, S> buildInstance(
+ Common<C, S> common) {
+ return new AggregationRelationDefinition<C, S>(common, pluralName, path,
+ minOccurs, maxOccurs);
+ }
+
+ }
+
+ // The maximum number of referenced managed objects.
+ private final int maxOccurs;
+
+ // The minimum number of referenced managed objects.
+ private final int minOccurs;
// The path identifying the location of the referenced managed
// objects.
private final ManagedObjectPath path;
- // The minimum number of referenced managed objects.
- private final int minOccurs;
-
- // The maximum number of referenced managed objects.
- private final int maxOccurs;
+ // The plural name of the relation.
+ private final String pluralName;
- /**
- * Create a new aggregation managed object relation definition.
- *
- * @param pd
- * The parent managed object definition.
- * @param name
- * The name of this relation.
- * @param pluralName
- * The plural name of the relation.
- * @param cd
- * The child managed object definition.
- * @param path
- * The path identifying the location of the referenced
- * managed objects.
- * @param minOccurs
- * The minimum number of referenced managed objects.
- * @param maxOccurs
- * The maximum number of referenced managed objects (or
- * zero if there is no upper limit).
- * @throws IllegalArgumentException
- * If minOccurs is less than zero or maxOccurs is less
- * than minOccurs.
- */
- public AggregationRelationDefinition(
- AbstractManagedObjectDefinition<?, ?> pd, String name, String pluralName,
- AbstractManagedObjectDefinition<C, S> cd,
+ // Private constructor.
+ private AggregationRelationDefinition(Common<C, S> common, String pluralName,
ManagedObjectPath path, int minOccurs, int maxOccurs)
throws IllegalArgumentException {
- super(pd, name, cd);
+ super(common);
ensureNotNull(path);
if (minOccurs < 0) {
- throw new IllegalArgumentException(
- "minOccurs is less than zero");
+ throw new IllegalArgumentException("minOccurs is less than zero");
}
if (maxOccurs != 0 && maxOccurs < minOccurs) {
- throw new IllegalArgumentException(
- "maxOccurs is less than minOccurs");
+ throw new IllegalArgumentException("maxOccurs is less than minOccurs");
}
this.pluralName = pluralName;
@@ -113,12 +189,34 @@
/**
- * Get the plural name of the relation.
- *
- * @return Returns the plural name of the relation.
+ * {@inheritDoc}
*/
- public final String getPluralName() {
- return pluralName;
+ @Override
+ public <R, P> R accept(RelationDefinitionVisitor<R, P> v, P p) {
+ return v.visitAggregation(this, p);
+ }
+
+
+
+ /**
+ * Get the maximum number of referenced managed objects.
+ *
+ * @return Returns the maximum number of referenced managed objects
+ * (or zero if there is no upper limit).
+ */
+ public int getMaxOccurs() {
+ return maxOccurs;
+ }
+
+
+
+ /**
+ * Get the minimum number of referenced managed objects.
+ *
+ * @return Returns the minimum number of referenced managed objects.
+ */
+ public int getMinOccurs() {
+ return minOccurs;
}
@@ -137,24 +235,12 @@
/**
- * Get the minimum number of referenced managed objects.
+ * Get the plural name of the relation.
*
- * @return Returns the minimum number of referenced managed objects.
+ * @return Returns the plural name of the relation.
*/
- public int getMinOccurs() {
- return minOccurs;
- }
-
-
-
- /**
- * Get the maximum number of referenced managed objects.
- *
- * @return Returns the maximum number of referenced managed objects
- * (or zero if there is no upper limit).
- */
- public int getMaxOccurs() {
- return maxOccurs;
+ public final String getPluralName() {
+ return pluralName;
}
@@ -177,14 +263,4 @@
builder.append(maxOccurs);
}
}
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public <R, P> R accept(RelationDefinitionVisitor<R, P> v, P p) {
- return v.visitAggregation(this, p);
- }
}
--
Gitblit v1.10.0