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/IntegerPropertyDefinition.java |  552 ++++++++++++++++++++++++------------------------------
 1 files changed, 248 insertions(+), 304 deletions(-)

diff --git a/opendj-admin/src/main/java/org/opends/server/admin/IntegerPropertyDefinition.java b/opendj-admin/src/main/java/org/opends/server/admin/IntegerPropertyDefinition.java
index ec9d92d..96c16e2 100644
--- a/opendj-admin/src/main/java/org/opends/server/admin/IntegerPropertyDefinition.java
+++ b/opendj-admin/src/main/java/org/opends/server/admin/IntegerPropertyDefinition.java
@@ -26,17 +26,14 @@
  */
 
 package org.opends.server.admin;
-import org.opends.messages.Message;
 
-
-
-import static org.opends.server.util.Validator.ensureNotNull;
+import static com.forgerock.opendj.util.Validator.*;
 
 import java.util.EnumSet;
 import java.util.Locale;
 import java.util.MissingResourceException;
 
-
+import org.forgerock.i18n.LocalizableMessage;
 
 /**
  * Integer property definition.
@@ -45,350 +42,297 @@
  * constraints. Support is provided for "unlimited" values. These are
  * represented using a negative value or using the string "unlimited".
  */
-public final class IntegerPropertyDefinition extends
-    PropertyDefinition<Integer> {
+public final class IntegerPropertyDefinition extends PropertyDefinition<Integer> {
 
-  // String used to represent unlimited.
-  private static final String UNLIMITED = "unlimited";
-
-  // The lower limit of the property value.
-  private final int lowerLimit;
-
-  // The optional upper limit of the property value.
-  private final Integer upperLimit;
-
-  // Indicates whether this property allows the use of the "unlimited" value
-  // (represented using a -1 or the string "unlimited").
-  private final boolean allowUnlimited;
-
-
-
-  /**
-   * An interface for incrementally constructing integer property definitions.
-   */
-  public static class Builder extends
-      AbstractBuilder<Integer, IntegerPropertyDefinition> {
+    // String used to represent unlimited.
+    private static final String UNLIMITED = "unlimited";
 
     // The lower limit of the property value.
-    private int lowerLimit = 0;
+    private final int lowerLimit;
 
     // The optional upper limit of the property value.
-    private Integer upperLimit = null;
+    private final Integer upperLimit;
 
     // Indicates whether this property allows the use of the "unlimited" value
     // (represented using a -1 or the string "unlimited").
-    private boolean allowUnlimited = false;
-
-
-
-    // Private constructor
-    private Builder(
-        AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
-      super(d, propertyName);
-    }
-
-
+    private final boolean allowUnlimited;
 
     /**
-     * Set the lower limit.
-     *
-     * @param lowerLimit
-     *          The new lower limit (must be >= 0).
-     * @throws IllegalArgumentException
-     *           If a negative lower limit was specified or the lower limit is
-     *           greater than the upper limit.
+     * An interface for incrementally constructing integer property definitions.
      */
-    public final void setLowerLimit(int lowerLimit)
-        throws IllegalArgumentException {
-      if (lowerLimit < 0) {
-        throw new IllegalArgumentException("Negative lower limit");
-      }
-      if (upperLimit != null && lowerLimit > upperLimit) {
-        throw new IllegalArgumentException(
-            "Lower limit greater than upper limit");
-      }
-      this.lowerLimit = lowerLimit;
-    }
+    public static class Builder extends AbstractBuilder<Integer, IntegerPropertyDefinition> {
 
+        // The lower limit of the property value.
+        private int lowerLimit = 0;
 
+        // The optional upper limit of the property value.
+        private Integer upperLimit = null;
 
-    /**
-     * Set the upper limit.
-     *
-     * @param upperLimit
-     *          The new upper limit or <code>null</code> if there is no upper
-     *          limit.
-     */
-    public final void setUpperLimit(Integer upperLimit) {
-      if (upperLimit != null) {
-        if (upperLimit < 0) {
-          throw new IllegalArgumentException("Negative lower limit");
+        // Indicates whether this property allows the use of the "unlimited"
+        // value
+        // (represented using a -1 or the string "unlimited").
+        private boolean allowUnlimited = false;
+
+        // Private constructor
+        private Builder(AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+            super(d, propertyName);
         }
-        if (lowerLimit > upperLimit) {
-          throw new IllegalArgumentException(
-              "Lower limit greater than upper limit");
+
+        /**
+         * Set the lower limit.
+         *
+         * @param lowerLimit
+         *            The new lower limit (must be >= 0).
+         * @throws IllegalArgumentException
+         *             If a negative lower limit was specified or the lower
+         *             limit is greater than the upper limit.
+         */
+        public final void setLowerLimit(int lowerLimit) throws IllegalArgumentException {
+            if (lowerLimit < 0) {
+                throw new IllegalArgumentException("Negative lower limit");
+            }
+            if (upperLimit != null && lowerLimit > upperLimit) {
+                throw new IllegalArgumentException("Lower limit greater than upper limit");
+            }
+            this.lowerLimit = lowerLimit;
         }
-      }
-      this.upperLimit = upperLimit;
+
+        /**
+         * Set the upper limit.
+         *
+         * @param upperLimit
+         *            The new upper limit or <code>null</code> if there is no
+         *            upper limit.
+         */
+        public final void setUpperLimit(Integer upperLimit) {
+            if (upperLimit != null) {
+                if (upperLimit < 0) {
+                    throw new IllegalArgumentException("Negative lower limit");
+                }
+                if (lowerLimit > upperLimit) {
+                    throw new IllegalArgumentException("Lower limit greater than upper limit");
+                }
+            }
+            this.upperLimit = upperLimit;
+        }
+
+        /**
+         * Specify whether or not this property definition will allow unlimited
+         * values (default is false).
+         *
+         * @param allowUnlimited
+         *            <code>true</code> if the property will allow unlimited
+         *            values, or <code>false</code> otherwise.
+         */
+        public final void setAllowUnlimited(boolean allowUnlimited) {
+            this.allowUnlimited = allowUnlimited;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        protected IntegerPropertyDefinition buildInstance(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
+                EnumSet<PropertyOption> options, AdministratorAction adminAction,
+                DefaultBehaviorProvider<Integer> defaultBehavior) {
+            return new IntegerPropertyDefinition(d, propertyName, options, adminAction, defaultBehavior, lowerLimit,
+                    upperLimit, allowUnlimited);
+        }
+
     }
 
-
-
     /**
-     * Specify whether or not this property definition will allow unlimited
-     * values (default is false).
+     * Create an integer property definition builder.
      *
-     * @param allowUnlimited
-     *          <code>true</code> if the property will allow unlimited values,
-     *          or <code>false</code> otherwise.
+     * @param d
+     *            The managed object definition associated with this property
+     *            definition.
+     * @param propertyName
+     *            The property name.
+     * @return Returns the new integer property definition builder.
      */
-    public final void setAllowUnlimited(boolean allowUnlimited) {
-      this.allowUnlimited = allowUnlimited;
+    public static Builder createBuilder(AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+        return new Builder(d, propertyName);
     }
 
+    // Private constructor.
+    private IntegerPropertyDefinition(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
+            EnumSet<PropertyOption> options, AdministratorAction adminAction,
+            DefaultBehaviorProvider<Integer> defaultBehavior, int lowerLimit, Integer upperLimit, boolean allowUnlimited) {
+        super(d, Integer.class, propertyName, options, adminAction, defaultBehavior);
+        this.lowerLimit = lowerLimit;
+        this.upperLimit = upperLimit;
+        this.allowUnlimited = allowUnlimited;
+    }
 
+    /**
+     * Get the lower limit.
+     *
+     * @return Returns the lower limit.
+     */
+    public int getLowerLimit() {
+        return lowerLimit;
+    }
+
+    /**
+     * Get the upper limit.
+     *
+     * @return Returns the upper limit or <code>null</code> if there is no upper
+     *         limit.
+     */
+    public Integer getUpperLimit() {
+        return upperLimit;
+    }
+
+    /**
+     * Gets the optional unit synopsis of this integer property definition in
+     * the default locale.
+     *
+     * @return Returns the unit synopsis of this integer property definition in
+     *         the default locale, or <code>null</code> if there is no unit
+     *         synopsis.
+     */
+    public LocalizableMessage getUnitSynopsis() {
+        return getUnitSynopsis(Locale.getDefault());
+    }
+
+    /**
+     * Gets the optional unit synopsis of this integer property definition in
+     * the specified locale.
+     *
+     * @param locale
+     *            The locale.
+     * @return Returns the unit synopsis of this integer property definition in
+     *         the specified locale, or <code>null</code> if there is no unit
+     *         synopsis.
+     */
+    public LocalizableMessage getUnitSynopsis(Locale locale) {
+        ManagedObjectDefinitionI18NResource resource = ManagedObjectDefinitionI18NResource.getInstance();
+        String property = "property." + getName() + ".syntax.integer.unit-synopsis";
+        try {
+            return resource.getMessage(getManagedObjectDefinition(), property, locale);
+        } catch (MissingResourceException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Determine whether this property allows unlimited values.
+     *
+     * @return Returns <code>true</code> if this this property allows unlimited
+     *         values.
+     */
+    public boolean isAllowUnlimited() {
+        return allowUnlimited;
+    }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    protected IntegerPropertyDefinition buildInstance(
-        AbstractManagedObjectDefinition<?, ?> d, String propertyName,
-        EnumSet<PropertyOption> options,
-        AdministratorAction adminAction,
-        DefaultBehaviorProvider<Integer> defaultBehavior) {
-      return new IntegerPropertyDefinition(d, propertyName, options,
-          adminAction, defaultBehavior, lowerLimit, upperLimit, allowUnlimited);
+    public void validateValue(Integer value) throws IllegalPropertyValueException {
+        ensureNotNull(value);
+
+        if (!allowUnlimited && value < lowerLimit) {
+            throw new IllegalPropertyValueException(this, value);
+
+            // unlimited allowed
+        } else if (value >= 0 && value < lowerLimit) {
+            throw new IllegalPropertyValueException(this, value);
+        }
+
+        if ((upperLimit != null) && (value > upperLimit)) {
+            throw new IllegalPropertyValueException(this, value);
+        }
     }
 
-  }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String encodeValue(Integer value) throws IllegalPropertyValueException {
+        ensureNotNull(value);
 
+        // Make sure that we correctly encode negative values as "unlimited".
+        if (allowUnlimited) {
+            if (value < 0) {
+                return UNLIMITED;
+            }
+        }
 
-
-  /**
-   * Create an integer property definition builder.
-   *
-   * @param d
-   *          The managed object definition associated with this
-   *          property definition.
-   * @param propertyName
-   *          The property name.
-   * @return Returns the new integer property definition builder.
-   */
-  public static Builder createBuilder(
-      AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
-    return new Builder(d, propertyName);
-  }
-
-
-
-  // Private constructor.
-  private IntegerPropertyDefinition(
-      AbstractManagedObjectDefinition<?, ?> d, String propertyName,
-      EnumSet<PropertyOption> options,
-      AdministratorAction adminAction,
-      DefaultBehaviorProvider<Integer> defaultBehavior, int lowerLimit,
-      Integer upperLimit, boolean allowUnlimited) {
-    super(d, Integer.class, propertyName, options, adminAction,
-        defaultBehavior);
-    this.lowerLimit = lowerLimit;
-    this.upperLimit = upperLimit;
-    this.allowUnlimited = allowUnlimited;
-  }
-
-
-
-  /**
-   * Get the lower limit.
-   *
-   * @return Returns the lower limit.
-   */
-  public int getLowerLimit() {
-    return lowerLimit;
-  }
-
-
-
-  /**
-   * Get the upper limit.
-   *
-   * @return Returns the upper limit or <code>null</code> if there is no upper
-   *         limit.
-   */
-  public Integer getUpperLimit() {
-    return upperLimit;
-  }
-
-
-
-  /**
-   * Gets the optional unit synopsis of this integer property
-   * definition in the default locale.
-   *
-   * @return Returns the unit synopsis of this integer property
-   *         definition in the default locale, or <code>null</code>
-   *         if there is no unit synopsis.
-   */
-  public Message getUnitSynopsis() {
-    return getUnitSynopsis(Locale.getDefault());
-  }
-
-
-
-  /**
-   * Gets the optional unit synopsis of this integer property
-   * definition in the specified locale.
-   *
-   * @param locale
-   *          The locale.
-   * @return Returns the unit synopsis of this integer property
-   *         definition in the specified locale, or <code>null</code>
-   *         if there is no unit synopsis.
-   */
-  public Message getUnitSynopsis(Locale locale) {
-    ManagedObjectDefinitionI18NResource resource =
-      ManagedObjectDefinitionI18NResource.getInstance();
-    String property = "property." + getName() + ".syntax.integer.unit-synopsis";
-    try {
-      return resource.getMessage(getManagedObjectDefinition(),
-          property, locale);
-    } catch (MissingResourceException e) {
-      return null;
-    }
-  }
-
-
-
-  /**
-   * Determine whether this property allows unlimited values.
-   *
-   * @return Returns <code>true</code> if this this property allows unlimited
-   *         values.
-   */
-  public boolean isAllowUnlimited() {
-    return allowUnlimited;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void validateValue(Integer value)
-      throws IllegalPropertyValueException {
-    ensureNotNull(value);
-
-    if (!allowUnlimited && value < lowerLimit) {
-      throw new IllegalPropertyValueException(this, value);
-
-    // unlimited allowed
-    } else if (value >= 0 && value < lowerLimit) {
-      throw new IllegalPropertyValueException(this, value);
+        return value.toString();
     }
 
-    if ((upperLimit != null) && (value > upperLimit)) {
-      throw new IllegalPropertyValueException(this, value);
-    }
-  }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Integer decodeValue(String value) throws IllegalPropertyValueStringException {
+        ensureNotNull(value);
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public String encodeValue(Integer value)
-          throws IllegalPropertyValueException {
-    ensureNotNull(value);
+        if (allowUnlimited) {
+            if (value.trim().equalsIgnoreCase(UNLIMITED)) {
+                return -1;
+            }
+        }
 
-    // Make sure that we correctly encode negative values as "unlimited".
-    if (allowUnlimited) {
-      if (value < 0) {
-        return UNLIMITED;
-      }
+        Integer i;
+        try {
+            i = Integer.valueOf(value);
+        } catch (NumberFormatException e) {
+            throw new IllegalPropertyValueStringException(this, value);
+        }
+
+        try {
+            validateValue(i);
+        } catch (IllegalPropertyValueException e) {
+            throw new IllegalPropertyValueStringException(this, value);
+        }
+
+        return i;
     }
 
-    return value.toString();
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public Integer decodeValue(String value)
-      throws IllegalPropertyValueStringException {
-    ensureNotNull(value);
-
-    if (allowUnlimited) {
-      if (value.trim().equalsIgnoreCase(UNLIMITED)) {
-        return -1;
-      }
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <R, P> R accept(PropertyDefinitionVisitor<R, P> v, P p) {
+        return v.visitInteger(this, p);
     }
 
-    Integer i;
-    try {
-      i = Integer.valueOf(value);
-    } catch (NumberFormatException e) {
-      throw new IllegalPropertyValueStringException(this, value);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <R, P> R accept(PropertyValueVisitor<R, P> v, Integer value, P p) {
+        return v.visitInteger(this, value, p);
     }
 
-    try {
-      validateValue(i);
-    } catch (IllegalPropertyValueException e) {
-      throw new IllegalPropertyValueStringException(this, value);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void toString(StringBuilder builder) {
+        super.toString(builder);
+
+        builder.append(" lowerLimit=");
+        builder.append(lowerLimit);
+
+        if (upperLimit != null) {
+            builder.append(" upperLimit=");
+            builder.append(upperLimit);
+        }
+
+        builder.append(" allowUnlimited=");
+        builder.append(allowUnlimited);
     }
 
-    return i;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public <R, P> R accept(PropertyDefinitionVisitor<R, P> v, P p) {
-    return v.visitInteger(this, p);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public <R, P> R accept(PropertyValueVisitor<R, P> v, Integer value, P p) {
-    return v.visitInteger(this, value, p);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void toString(StringBuilder builder) {
-    super.toString(builder);
-
-    builder.append(" lowerLimit=");
-    builder.append(lowerLimit);
-
-    if (upperLimit != null) {
-      builder.append(" upperLimit=");
-      builder.append(upperLimit);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public int compare(Integer o1, Integer o2) {
+        return o1.compareTo(o2);
     }
 
-    builder.append(" allowUnlimited=");
-    builder.append(allowUnlimited);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public int compare(Integer o1, Integer o2) {
-    return o1.compareTo(o2);
-  }
-
 }

--
Gitblit v1.10.0