From b97785a371b09a674dbef8029a99a730ee928e8d Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 19 Dec 2007 09:55:26 +0000
Subject: [PATCH] Fix for issue 2446 part #1.

---
 opends/src/server/org/opends/server/admin/SingletonRelationDefinition.java |   68 ++++++++++++++++++++++++++++++++--
 1 files changed, 64 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/admin/SingletonRelationDefinition.java b/opends/src/server/org/opends/server/admin/SingletonRelationDefinition.java
index a2eccaa..27a3b78 100644
--- a/opends/src/server/org/opends/server/admin/SingletonRelationDefinition.java
+++ b/opends/src/server/org/opends/server/admin/SingletonRelationDefinition.java
@@ -56,10 +56,17 @@
    *          The type of server managed object configuration that
    *          this relation definition refers to.
    */
-  public static class Builder
+  public static final class Builder
       <C extends ConfigurationClient, S extends Configuration>
       extends AbstractBuilder<C, S, SingletonRelationDefinition<C, S>> {
 
+    // The optional default managed object associated with this
+    // singleton relation.
+    private DefaultManagedObject<? extends C, ? extends S>
+      defaultManagedObject = null;
+
+
+
     /**
      * Creates a new builder which can be used to incrementally build
      * an singleton relation definition.
@@ -79,21 +86,47 @@
 
 
     /**
+     * Sets the optional default managed object associated with this
+     * singleton relation definition.
+     *
+     * @param defaultManagedObject
+     *          The default managed object or <code>null</code> if
+     *          there is no default managed object defined for this
+     *          relation definition.
+     */
+    public void setDefaultManagedObject(
+        DefaultManagedObject<? extends C, ? extends S> defaultManagedObject) {
+      this.defaultManagedObject = defaultManagedObject;
+    }
+
+
+
+    /**
      * {@inheritDoc}
      */
     @Override
     protected SingletonRelationDefinition<C, S> buildInstance(
         Common<C, S> common) {
-      return new SingletonRelationDefinition<C, S>(common);
+      return new SingletonRelationDefinition<C, S>(common,
+          defaultManagedObject);
     }
 
   }
 
 
 
+  // The optional default managed object associated with this
+  // singleton relation.
+  private final DefaultManagedObject<? extends C, ? extends S>
+    defaultManagedObject;
+
+
+
   // Private constructor.
-  private SingletonRelationDefinition(Common<C, S> common) {
+  private SingletonRelationDefinition(Common<C, S> common,
+      DefaultManagedObject<? extends C, ? extends S> defaultManagedObject) {
     super(common);
+    this.defaultManagedObject = defaultManagedObject;
   }
 
 
@@ -109,10 +142,25 @@
 
 
   /**
+   * Gets the optional default managed object associated with this
+   * singleton relation definition.
+   *
+   * @return Returns the default managed object or <code>null</code>
+   *         if there is no default managed object defined for this
+   *         relation definition.
+   */
+  public DefaultManagedObject<? extends C, ? extends S>
+      getDefaultManagedObject() {
+    return defaultManagedObject;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override
-  public final void toString(StringBuilder builder) {
+  public void toString(StringBuilder builder) {
     builder.append("name=");
     builder.append(getName());
     builder.append(" type=composition parent=");
@@ -122,4 +170,16 @@
     builder.append(" minOccurs=1 maxOccurs=1");
   }
 
+
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  protected void initialize() throws Exception {
+    if (defaultManagedObject != null) {
+      defaultManagedObject.initialize();
+    }
+  }
+
 }

--
Gitblit v1.10.0