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/DNPropertyDefinition.java |  300 +++++++++++++++++++++++++----------------------------------
 1 files changed, 127 insertions(+), 173 deletions(-)

diff --git a/opendj-admin/src/main/java/org/opends/server/admin/DNPropertyDefinition.java b/opendj-admin/src/main/java/org/opends/server/admin/DNPropertyDefinition.java
index a27b348..2b5f8da 100644
--- a/opendj-admin/src/main/java/org/opends/server/admin/DNPropertyDefinition.java
+++ b/opendj-admin/src/main/java/org/opends/server/admin/DNPropertyDefinition.java
@@ -27,214 +27,168 @@
 
 package org.opends.server.admin;
 
-
-
-import static org.opends.server.util.Validator.ensureNotNull;
+import static com.forgerock.opendj.util.Validator.*;
 
 import java.util.EnumSet;
 
 import org.forgerock.opendj.ldap.DN;
-import org.opends.server.types.DirectoryException;
-
-
 
 /**
  * DN property definition.
  */
 public final class DNPropertyDefinition extends PropertyDefinition<DN> {
 
-  // Optional base DN which all valid values must be immediately
-  // subordinate to.
-  private final DN baseDN;
-
-
-
-  /**
-   * An interface for incrementally constructing DN property
-   * definitions.
-   */
-  public static class Builder extends
-      AbstractBuilder<DN, DNPropertyDefinition> {
-
     // Optional base DN which all valid values must be immediately
     // subordinate to.
-    private DN baseDN = null;
-
-
-
-    // Private constructor
-    private Builder(
-        AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
-      super(d, propertyName);
-    }
-
-
+    private final DN baseDN;
 
     /**
-     * Set the base DN which all valid values must be immediately
-     * subordinate to. By default there is no based DN.
-     *
-     * @param baseDN
-     *          The string representation of the base DN.
-     * @throws IllegalArgumentException
-     *           If the provided string is not a valid DN string
-     *           representation.
+     * An interface for incrementally constructing DN property definitions.
      */
-    public void setBaseDN(String baseDN)
-        throws IllegalArgumentException {
-      if (baseDN == null) {
-        setBaseDN((DN) null);
-      } else {
-        try {
-          setBaseDN(DN.decode(baseDN));
-        } catch (DirectoryException e) {
-          throw new IllegalArgumentException(e);
+    public static class Builder extends AbstractBuilder<DN, DNPropertyDefinition> {
+
+        // Optional base DN which all valid values must be immediately
+        // subordinate to.
+        private DN baseDN = null;
+
+        // Private constructor
+        private Builder(AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+            super(d, propertyName);
         }
-      }
+
+        /**
+         * Set the base DN which all valid values must be immediately
+         * subordinate to. By default there is no based DN.
+         *
+         * @param baseDN
+         *            The string representation of the base DN.
+         * @throws IllegalArgumentException
+         *             If the provided string is not a valid DN string
+         *             representation.
+         */
+        public void setBaseDN(String baseDN) throws IllegalArgumentException {
+            if (baseDN == null) {
+                setBaseDN((DN) null);
+            } else {
+                // TODO: is it correct to replace server DN.decode by SDK
+                // valueOf ?
+                setBaseDN(DN.valueOf(baseDN));
+            }
+        }
+
+        /**
+         * Set the base DN which all valid values must be immediately
+         * subordinate to. By default there is no based DN.
+         *
+         * @param baseDN
+         *            The base DN.
+         */
+        public void setBaseDN(DN baseDN) {
+            this.baseDN = baseDN;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        protected DNPropertyDefinition buildInstance(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
+                EnumSet<PropertyOption> options, AdministratorAction adminAction,
+                DefaultBehaviorProvider<DN> defaultBehavior) {
+            return new DNPropertyDefinition(d, propertyName, options, adminAction, defaultBehavior, baseDN);
+        }
     }
 
-
-
     /**
-     * Set the base DN which all valid values must be immediately
-     * subordinate to. By default there is no based DN.
+     * Create a DN property definition builder.
      *
-     * @param baseDN
-     *          The base DN.
+     * @param d
+     *            The managed object definition associated with this property
+     *            definition.
+     * @param propertyName
+     *            The property name.
+     * @return Returns the new boolean property definition builder.
      */
-    public void setBaseDN(DN baseDN) {
-      this.baseDN = baseDN;
+    public static Builder createBuilder(AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+        return new Builder(d, propertyName);
     }
 
+    // Private constructor.
+    private DNPropertyDefinition(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
+            EnumSet<PropertyOption> options, AdministratorAction adminAction,
+            DefaultBehaviorProvider<DN> defaultBehavior, DN baseDN) {
+        super(d, DN.class, propertyName, options, adminAction, defaultBehavior);
+        this.baseDN = baseDN;
+    }
 
+    /**
+     * Get the base DN which all valid values must be immediately subordinate
+     * to, or <code>null</code> if there is no based DN.
+     *
+     * @return Returns the base DN which all valid values must be immediately
+     *         subordinate to.
+     */
+    public DN getBaseDN() {
+        return baseDN;
+    }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    protected DNPropertyDefinition buildInstance(
-        AbstractManagedObjectDefinition<?, ?> d, String propertyName,
-        EnumSet<PropertyOption> options,
-        AdministratorAction adminAction,
-        DefaultBehaviorProvider<DN> defaultBehavior) {
-      return new DNPropertyDefinition(d, propertyName, options,
-          adminAction, defaultBehavior, baseDN);
+    public void validateValue(DN value) throws IllegalPropertyValueException {
+        ensureNotNull(value);
+
+        if (baseDN != null) {
+            DN parent = value.parent();
+
+            if (parent == null) {
+                parent = DN.rootDN();
+            }
+
+            if (!parent.equals(baseDN)) {
+                throw new IllegalPropertyValueException(this, value);
+            }
+        }
     }
-  }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public DN decodeValue(String value) throws IllegalPropertyValueStringException {
+        ensureNotNull(value);
 
-
-  /**
-   * Create a DN property definition builder.
-   *
-   * @param d
-   *          The managed object definition associated with this
-   *          property definition.
-   * @param propertyName
-   *          The property name.
-   * @return Returns the new boolean property definition builder.
-   */
-  public static Builder createBuilder(
-      AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
-    return new Builder(d, propertyName);
-  }
-
-
-
-  // Private constructor.
-  private DNPropertyDefinition(
-      AbstractManagedObjectDefinition<?, ?> d, String propertyName,
-      EnumSet<PropertyOption> options,
-      AdministratorAction adminAction,
-      DefaultBehaviorProvider<DN> defaultBehavior, DN baseDN) {
-    super(d, DN.class, propertyName, options, adminAction, defaultBehavior);
-    this.baseDN = baseDN;
-  }
-
-
-
-  /**
-   * Get the base DN which all valid values must be immediately
-   * subordinate to, or <code>null</code> if there is no based DN.
-   *
-   * @return Returns the base DN which all valid values must be
-   *         immediately subordinate to.
-   */
-  public DN getBaseDN() {
-    return baseDN;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void validateValue(DN value)
-      throws IllegalPropertyValueException {
-    ensureNotNull(value);
-
-    if (baseDN != null) {
-      DN parent = value.getParent();
-
-      if (parent == null) {
-        parent = DN.nullDN();
-      }
-
-      if (!parent.equals(baseDN)) {
-        throw new IllegalPropertyValueException(this, value);
-      }
+        try {
+            // TODO: is it correct to replace server DN.decode by SDK valueOf ?
+            DN dn = DN.valueOf(value);
+            validateValue(dn);
+            return dn;
+        } catch (IllegalPropertyValueException e) {
+            throw new IllegalPropertyValueStringException(this, value);
+        }
     }
-  }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public DN decodeValue(String value)
-      throws IllegalPropertyValueStringException {
-    ensureNotNull(value);
-
-    try {
-      DN dn = DN.decode(value);
-      validateValue(dn);
-      return dn;
-    } catch (DirectoryException e) {
-      throw new IllegalPropertyValueStringException(this, value);
-    } catch (IllegalPropertyValueException e) {
-      throw new IllegalPropertyValueStringException(this, value);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <R, P> R accept(PropertyDefinitionVisitor<R, P> v, P p) {
+        return v.visitDN(this, p);
     }
-  }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <R, P> R accept(PropertyValueVisitor<R, P> v, DN value, P p) {
+        return v.visitDN(this, value, p);
+    }
 
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public <R, P> R accept(PropertyDefinitionVisitor<R, P> v, P p) {
-    return v.visitDN(this, p);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public <R, P> R accept(PropertyValueVisitor<R, P> v, DN value, P p) {
-    return v.visitDN(this, value, p);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public int compare(DN o1, DN o2) {
-    return o1.compareTo(o2);
-  }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public int compare(DN o1, DN o2) {
+        return o1.compareTo(o2);
+    }
 }

--
Gitblit v1.10.0