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/StringPropertyDefinition.java | 476 ++++++++++++++++++++++++++---------------------------------
1 files changed, 212 insertions(+), 264 deletions(-)
diff --git a/opendj-admin/src/main/java/org/opends/server/admin/StringPropertyDefinition.java b/opendj-admin/src/main/java/org/opends/server/admin/StringPropertyDefinition.java
index 56732e1..f68f6d0 100644
--- a/opendj-admin/src/main/java/org/opends/server/admin/StringPropertyDefinition.java
+++ b/opendj-admin/src/main/java/org/opends/server/admin/StringPropertyDefinition.java
@@ -26,11 +26,8 @@
*/
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;
@@ -39,297 +36,248 @@
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
-
+import org.forgerock.i18n.LocalizableMessage;
/**
* String property definition.
*/
public final class StringPropertyDefinition extends PropertyDefinition<String> {
- /**
- * An interface for incrementally constructing string property
- * definitions.
- */
- public static class Builder extends
- AbstractBuilder<String, StringPropertyDefinition> {
+ /**
+ * An interface for incrementally constructing string property definitions.
+ */
+ public static class Builder extends AbstractBuilder<String, StringPropertyDefinition> {
+
+ // Flag indicating whether values of this property are
+ // case-insensitive.
+ private boolean isCaseInsensitive = true;
+
+ // Optional pattern which values of this property must match.
+ private Pattern pattern = null;
+
+ // Pattern usage which provides a user-friendly summary of the
+ // pattern if present.
+ private String patternUsage = null;
+
+ // Private constructor
+ private Builder(AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+ super(d, propertyName);
+ }
+
+ /**
+ * Set a flag indicating whether values of this property are
+ * case-insensitive.
+ *
+ * @param value
+ * <code>true</code> if values are case-insensitive, or
+ * <code>false</code> otherwise.
+ */
+ public final void setCaseInsensitive(boolean value) {
+ isCaseInsensitive = value;
+ }
+
+ /**
+ * Set the regular expression pattern which values of this property must
+ * match. By default there is no pattern defined.
+ *
+ * @param pattern
+ * The regular expression pattern string, or
+ * <code>null</code> if there is no pattern.
+ * @param patternUsage
+ * A user-friendly usage string representing the pattern
+ * which can be used in error messages and help (e.g. for
+ * patterns which match a host/port combination, the usage
+ * string "HOST:PORT" would be appropriate).
+ * @throws PatternSyntaxException
+ * If the provided regular expression pattern has an invalid
+ * syntax.
+ */
+ public final void setPattern(String pattern, String patternUsage) throws PatternSyntaxException {
+ if (pattern == null) {
+ this.pattern = null;
+ this.patternUsage = null;
+ } else {
+ this.pattern = Pattern.compile(pattern);
+ this.patternUsage = patternUsage;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected StringPropertyDefinition buildInstance(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
+ EnumSet<PropertyOption> options, AdministratorAction adminAction,
+ DefaultBehaviorProvider<String> defaultBehavior) {
+ return new StringPropertyDefinition(d, propertyName, options, adminAction, defaultBehavior,
+ isCaseInsensitive, pattern, patternUsage);
+ }
+
+ }
+
+ /**
+ * Create a string property definition builder.
+ *
+ * @param d
+ * The managed object definition associated with this property
+ * definition.
+ * @param propertyName
+ * The property name.
+ * @return Returns the new string property definition builder.
+ */
+ public static Builder createBuilder(AbstractManagedObjectDefinition<?, ?> d, String propertyName) {
+ return new Builder(d, propertyName);
+ }
// Flag indicating whether values of this property are
// case-insensitive.
- private boolean isCaseInsensitive = true;
+ private final boolean isCaseInsensitive;
// Optional pattern which values of this property must match.
- private Pattern pattern = null;
+ private final Pattern pattern;
// Pattern usage which provides a user-friendly summary of the
// pattern if present.
- private String patternUsage = null;
+ private final String patternUsage;
-
-
- // Private constructor
- private Builder(AbstractManagedObjectDefinition<?, ?> d,
- String propertyName) {
- super(d, propertyName);
- }
-
-
-
- /**
- * Set a flag indicating whether values of this property are
- * case-insensitive.
- *
- * @param value
- * <code>true</code> if values are case-insensitive, or
- * <code>false</code> otherwise.
- */
- public final void setCaseInsensitive(boolean value) {
- isCaseInsensitive = value;
- }
-
-
-
- /**
- * Set the regular expression pattern which values of this
- * property must match. By default there is no pattern defined.
- *
- * @param pattern
- * The regular expression pattern string, or
- * <code>null</code> if there is no pattern.
- * @param patternUsage
- * A user-friendly usage string representing the pattern
- * which can be used in error messages and help (e.g. for
- * patterns which match a host/port combination, the
- * usage string "HOST:PORT" would be appropriate).
- * @throws PatternSyntaxException
- * If the provided regular expression pattern has an
- * invalid syntax.
- */
- public final void setPattern(String pattern, String patternUsage)
- throws PatternSyntaxException {
- if (pattern == null) {
- this.pattern = null;
- this.patternUsage = null;
- } else {
- this.pattern = Pattern.compile(pattern);
+ // Private constructor.
+ private StringPropertyDefinition(AbstractManagedObjectDefinition<?, ?> d, String propertyName,
+ EnumSet<PropertyOption> options, AdministratorAction adminAction,
+ DefaultBehaviorProvider<String> defaultBehavior, boolean isCaseInsensitive, Pattern pattern,
+ String patternUsage) {
+ super(d, String.class, propertyName, options, adminAction, defaultBehavior);
+ this.isCaseInsensitive = isCaseInsensitive;
+ this.pattern = pattern;
this.patternUsage = patternUsage;
- }
}
-
-
/**
* {@inheritDoc}
*/
@Override
- protected StringPropertyDefinition buildInstance(
- AbstractManagedObjectDefinition<?, ?> d, String propertyName,
- EnumSet<PropertyOption> options,
- AdministratorAction adminAction,
- DefaultBehaviorProvider<String> defaultBehavior) {
- return new StringPropertyDefinition(d, propertyName, options,
- adminAction, defaultBehavior, isCaseInsensitive, pattern,
- patternUsage);
+ public <R, P> R accept(PropertyDefinitionVisitor<R, P> v, P p) {
+ return v.visitString(this, p);
}
- }
-
-
-
- /**
- * Create a string property definition builder.
- *
- * @param d
- * The managed object definition associated with this
- * property definition.
- * @param propertyName
- * The property name.
- * @return Returns the new string property definition builder.
- */
- public static Builder createBuilder(AbstractManagedObjectDefinition<?, ?> d,
- String propertyName) {
- return new Builder(d, propertyName);
- }
-
- // Flag indicating whether values of this property are
- // case-insensitive.
- private final boolean isCaseInsensitive;
-
- // Optional pattern which values of this property must match.
- private final Pattern pattern;
-
- // Pattern usage which provides a user-friendly summary of the
- // pattern if present.
- private final String patternUsage;
-
-
-
- // Private constructor.
- private StringPropertyDefinition(AbstractManagedObjectDefinition<?, ?> d,
- String propertyName, EnumSet<PropertyOption> options,
- AdministratorAction adminAction,
- DefaultBehaviorProvider<String> defaultBehavior,
- boolean isCaseInsensitive, Pattern pattern, String patternUsage) {
- super(d, String.class, propertyName, options, adminAction,
- defaultBehavior);
- this.isCaseInsensitive = isCaseInsensitive;
- this.pattern = pattern;
- this.patternUsage = patternUsage;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public <R, P> R accept(PropertyDefinitionVisitor<R, P> v, P p) {
- return v.visitString(this, p);
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public <R, P> R accept(PropertyValueVisitor<R, P> v, String value, P p) {
- return v.visitString(this, value, p);
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String decodeValue(String value)
- throws IllegalPropertyValueStringException {
- ensureNotNull(value);
-
- try {
- validateValue(value);
- } catch (IllegalPropertyValueException e) {
- throw new IllegalPropertyValueStringException(this, value);
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public <R, P> R accept(PropertyValueVisitor<R, P> v, String value, P p) {
+ return v.visitString(this, value, p);
}
- return value;
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String decodeValue(String value) throws IllegalPropertyValueStringException {
+ ensureNotNull(value);
+ try {
+ validateValue(value);
+ } catch (IllegalPropertyValueException e) {
+ throw new IllegalPropertyValueStringException(this, value);
+ }
-
- /**
- * Gets the optional regular expression pattern which values of this
- * property must match.
- *
- * @return Returns the optional regular expression pattern which
- * values of this property must match, or <code>null</code>
- * if there is no pattern.
- */
- public Pattern getPattern() {
- return pattern;
- }
-
-
-
- /**
- * Gets the pattern synopsis of this string property definition in
- * the default locale.
- *
- * @return Returns the pattern synopsis of this string property
- * definition in the default locale, or <code>null</code>
- * if there is no pattern synopsis (which is the case when
- * there is no pattern matching defined for this string
- * property definition).
- */
- public Message getPatternSynopsis() {
- return getPatternSynopsis(Locale.getDefault());
- }
-
-
-
- /**
- * Gets the optional pattern synopsis of this string property
- * definition in the specified locale.
- *
- * @param locale
- * The locale.
- * @return Returns the pattern synopsis of this string property
- * definition in the specified locale, or <code>null</code>
- * if there is no pattern synopsis (which is the case when
- * there is no pattern matching defined for this string
- * property definition).
- */
- public Message getPatternSynopsis(Locale locale) {
- ManagedObjectDefinitionI18NResource resource =
- ManagedObjectDefinitionI18NResource.getInstance();
- String property = "property." + getName()
- + ".syntax.string.pattern.synopsis";
- try {
- return resource
- .getMessage(getManagedObjectDefinition(), property, locale);
- } catch (MissingResourceException e) {
- return null;
+ return value;
}
- }
-
-
- /**
- * Gets a user-friendly usage string representing the pattern which
- * can be used in error messages and help (e.g. for patterns which
- * match a host/port combination, the usage string "HOST:PORT" would
- * be appropriate).
- *
- * @return Returns the user-friendly pattern usage string, or
- * <code>null</code> if there is no pattern.
- */
- public String getPatternUsage() {
- return patternUsage;
- }
-
-
-
- /**
- * Query whether values of this property are case-insensitive.
- *
- * @return Returns <code>true</code> if values are
- * case-insensitive, or <code>false</code> otherwise.
- */
- public boolean isCaseInsensitive() {
- return isCaseInsensitive;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String normalizeValue(String value)
- throws IllegalPropertyValueException {
- ensureNotNull(value);
-
- if (isCaseInsensitive()) {
- return value.trim().toLowerCase();
- } else {
- return value.trim();
+ /**
+ * Gets the optional regular expression pattern which values of this
+ * property must match.
+ *
+ * @return Returns the optional regular expression pattern which values of
+ * this property must match, or <code>null</code> if there is no
+ * pattern.
+ */
+ public Pattern getPattern() {
+ return pattern;
}
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void validateValue(String value) throws IllegalPropertyValueException {
- ensureNotNull(value);
-
- if (pattern != null) {
- Matcher matcher = pattern.matcher(value);
- if (!matcher.matches()) {
- throw new IllegalPropertyValueException(this, value);
- }
+ /**
+ * Gets the pattern synopsis of this string property definition in the
+ * default locale.
+ *
+ * @return Returns the pattern synopsis of this string property definition
+ * in the default locale, or <code>null</code> if there is no
+ * pattern synopsis (which is the case when there is no pattern
+ * matching defined for this string property definition).
+ */
+ public LocalizableMessage getPatternSynopsis() {
+ return getPatternSynopsis(Locale.getDefault());
}
- }
+
+ /**
+ * Gets the optional pattern synopsis of this string property definition in
+ * the specified locale.
+ *
+ * @param locale
+ * The locale.
+ * @return Returns the pattern synopsis of this string property definition
+ * in the specified locale, or <code>null</code> if there is no
+ * pattern synopsis (which is the case when there is no pattern
+ * matching defined for this string property definition).
+ */
+ public LocalizableMessage getPatternSynopsis(Locale locale) {
+ ManagedObjectDefinitionI18NResource resource = ManagedObjectDefinitionI18NResource.getInstance();
+ String property = "property." + getName() + ".syntax.string.pattern.synopsis";
+ try {
+ return resource.getMessage(getManagedObjectDefinition(), property, locale);
+ } catch (MissingResourceException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Gets a user-friendly usage string representing the pattern which can be
+ * used in error messages and help (e.g. for patterns which match a
+ * host/port combination, the usage string "HOST:PORT" would be
+ * appropriate).
+ *
+ * @return Returns the user-friendly pattern usage string, or
+ * <code>null</code> if there is no pattern.
+ */
+ public String getPatternUsage() {
+ return patternUsage;
+ }
+
+ /**
+ * Query whether values of this property are case-insensitive.
+ *
+ * @return Returns <code>true</code> if values are case-insensitive, or
+ * <code>false</code> otherwise.
+ */
+ public boolean isCaseInsensitive() {
+ return isCaseInsensitive;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String normalizeValue(String value) throws IllegalPropertyValueException {
+ ensureNotNull(value);
+
+ if (isCaseInsensitive()) {
+ return value.trim().toLowerCase();
+ } else {
+ return value.trim();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void validateValue(String value) throws IllegalPropertyValueException {
+ ensureNotNull(value);
+
+ if (pattern != null) {
+ Matcher matcher = pattern.matcher(value);
+ if (!matcher.matches()) {
+ throw new IllegalPropertyValueException(this, value);
+ }
+ }
+ }
}
--
Gitblit v1.10.0