From ef98b739b780e41d9b40c5c392ebec62455a022c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 11 Dec 2013 15:03:48 +0000
Subject: [PATCH] Code cleanups

---
 opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java |  198 +++++++++++++++++++++----------------------------
 1 files changed, 84 insertions(+), 114 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java b/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
index be817f2..e786696 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
@@ -23,13 +23,11 @@
  *
  *
  *      Copyright 2007-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2011 ForgeRock AS
+ *      Portions Copyright 2011-2013 ForgeRock AS
  *      Portions Copyright 2012 profiq, s.r.o.
  */
 package org.opends.server.tools.dsconfig;
 
-
-
 import static org.opends.messages.DSConfigMessages.*;
 import static org.opends.messages.ToolMessages.*;
 import static org.opends.server.tools.dsconfig.ArgumentExceptionFactory.*;
@@ -80,7 +78,7 @@
 import org.opends.server.util.cli.ConsoleApplication;
 import org.opends.server.util.cli.MenuResult;
 
-
+import com.forgerock.opendj.util.Pair;
 
 /**
  * A sub-command handler which is used to modify the properties of a
@@ -382,8 +380,9 @@
 
 
 
-  // Check that any referenced components are enabled if
-  // required.
+  /**
+   * Check that any referenced components are enabled if required.
+   */
   private static MenuResult<Void> checkReferences(ConsoleApplication app,
       ManagementContext context, ManagedObject<?> mo,
       SubCommandHandler handler) throws ClientException,
@@ -586,34 +585,42 @@
 
 
 
-  // The sub-commands naming arguments.
+  /** The sub-commands naming arguments. */
   private final List<StringArgument> namingArgs;
 
-  // The path of the managed object.
+  /** The path of the managed object. */
   private final ManagedObjectPath<?, ?> path;
 
-  // The argument which should be used to specify zero or more
-  // property value adds.
+  /**
+   * The argument which should be used to specify zero or more property value
+   * adds.
+   */
   private final StringArgument propertyAddArgument;
 
-  // The argument which should be used to specify zero or more
-  // property value removes.
+  /**
+   * The argument which should be used to specify zero or more property value
+   * removes.
+   */
   private final StringArgument propertyRemoveArgument;
 
-  // The argument which should be used to specify zero or more
-  // property value resets.
+  /**
+   * The argument which should be used to specify zero or more property value
+   * resets.
+   */
   private final StringArgument propertyResetArgument;
 
-  // The argument which should be used to specify zero or more
-  // property value assignments.
+  /**
+   * The argument which should be used to specify zero or more property value
+   * assignments.
+   */
   private final StringArgument propertySetArgument;
 
-  // The sub-command associated with this handler.
+  /** The sub-command associated with this handler. */
   private final SubCommand subCommand;
 
 
 
-  // Private constructor.
+  /** Private constructor. */
   private SetPropSubCommandHandler(
       SubCommandArgumentParser parser, ManagedObjectPath<?, ?> path,
       RelationDefinition<?, ?> r) throws ArgumentException {
@@ -670,24 +677,21 @@
    * @return Returns the relation definition associated with the type
    *         of component that this sub-command handles.
    */
+  @Override
   public RelationDefinition<?, ?> getRelationDefinition() {
     return path.getRelationDefinition();
   }
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public SubCommand getSubCommand() {
     return subCommand;
   }
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @SuppressWarnings("unchecked")
   @Override
   public MenuResult<Integer> run(ConsoleApplication app,
@@ -775,22 +779,15 @@
               OPTION_DSCFG_LONG_RESET);
       }
 
-      // Check the property definition.
-      PropertyDefinition<?> pd;
-      try {
-        pd = d.getPropertyDefinition(m);
-      } catch (IllegalArgumentException e) {
-        throw ArgumentExceptionFactory.unknownProperty(d, m);
-      }
+      PropertyDefinition<?> pd = getPropertyDefinition(d, m);
 
-      // Mandatory properties which have no defined defaults cannot be
-      // reset.
-      if (pd.hasOption(PropertyOption.MANDATORY)) {
-        if (pd.getDefaultBehaviorProvider()
-            instanceof UndefinedDefaultBehaviorProvider) {
-          throw ArgumentExceptionFactory.unableToResetMandatoryProperty(d, m,
-              OPTION_DSCFG_LONG_SET);
-        }
+      // Mandatory properties which have no defined defaults cannot be reset.
+      if (pd.hasOption(PropertyOption.MANDATORY)
+          && pd.getDefaultBehaviorProvider()
+              instanceof UndefinedDefaultBehaviorProvider)
+      {
+        throw ArgumentExceptionFactory.unableToResetMandatoryProperty(d, m,
+            OPTION_DSCFG_LONG_SET);
       }
 
       // Save the modification type.
@@ -802,30 +799,11 @@
 
     // Set properties.
     for (String m : propertySetArgument.getValues()) {
-      // Parse the property "property:value".
-      int sep = m.indexOf(':');
+      Pair<String, String> pair = parseValue(m);
+      String propertyName = pair.getFirst();
+      String value = pair.getSecond();
 
-      if (sep < 0) {
-        throw ArgumentExceptionFactory.missingSeparatorInPropertyArgument(m);
-      }
-
-      if (sep == 0) {
-        throw ArgumentExceptionFactory.missingNameInPropertyArgument(m);
-      }
-
-      String propertyName = m.substring(0, sep);
-      String value = m.substring(sep + 1, m.length());
-      if (value.length() == 0) {
-        throw ArgumentExceptionFactory.missingValueInPropertyArgument(m);
-      }
-
-      // Check the property definition.
-      PropertyDefinition<?> pd;
-      try {
-        pd = d.getPropertyDefinition(propertyName);
-      } catch (IllegalArgumentException e) {
-        throw ArgumentExceptionFactory.unknownProperty(d, propertyName);
-      }
+      PropertyDefinition<?> pd = getPropertyDefinition(d, propertyName);
 
       // Apply the modification.
       if (lastModTypes.containsKey(propertyName)) {
@@ -838,34 +816,15 @@
 
     // Remove properties.
     for (String m : propertyRemoveArgument.getValues()) {
-      // Parse the property "property:value".
-      int sep = m.indexOf(':');
+      Pair<String, String> pair = parseValue(m);
+      String propertyName = pair.getFirst();
+      String value = pair.getSecond();
 
-      if (sep < 0) {
-        throw ArgumentExceptionFactory.missingSeparatorInPropertyArgument(m);
-      }
-
-      if (sep == 0) {
-        throw ArgumentExceptionFactory.missingNameInPropertyArgument(m);
-      }
-
-      String propertyName = m.substring(0, sep);
-      String value = m.substring(sep + 1, m.length());
-      if (value.length() == 0) {
-        throw ArgumentExceptionFactory.missingValueInPropertyArgument(m);
-      }
-
-      // Check the property definition.
-      PropertyDefinition<?> pd;
-      try {
-        pd = d.getPropertyDefinition(propertyName);
-      } catch (IllegalArgumentException e) {
-        throw ArgumentExceptionFactory.unknownProperty(d, propertyName);
-      }
+      PropertyDefinition<?> pd = getPropertyDefinition(d, propertyName);
 
       // Apply the modification.
-      if (lastModTypes.containsKey(propertyName) &&
-        (lastModTypes.get(propertyName) == ModificationType.SET)) {
+      if (lastModTypes.containsKey(propertyName)
+          && lastModTypes.get(propertyName) == ModificationType.SET) {
         throw ArgumentExceptionFactory.incompatiblePropertyModification(m);
       }
 
@@ -875,34 +834,15 @@
 
     // Add properties.
     for (String m : propertyAddArgument.getValues()) {
-      // Parse the property "property:value".
-      int sep = m.indexOf(':');
+      Pair<String, String> pair = parseValue(m);
+      String propertyName = pair.getFirst();
+      String value = pair.getSecond();
 
-      if (sep < 0) {
-        throw ArgumentExceptionFactory.missingSeparatorInPropertyArgument(m);
-      }
-
-      if (sep == 0) {
-        throw ArgumentExceptionFactory.missingNameInPropertyArgument(m);
-      }
-
-      String propertyName = m.substring(0, sep);
-      String value = m.substring(sep + 1, m.length());
-      if (value.length() == 0) {
-        throw ArgumentExceptionFactory.missingValueInPropertyArgument(m);
-      }
-
-      // Check the property definition.
-      PropertyDefinition<?> pd;
-      try {
-        pd = d.getPropertyDefinition(propertyName);
-      } catch (IllegalArgumentException e) {
-        throw ArgumentExceptionFactory.unknownProperty(d, propertyName);
-      }
+      PropertyDefinition<?> pd = getPropertyDefinition(d, propertyName);
 
       // Apply the modification.
-      if (lastModTypes.containsKey(propertyName) &&
-        (lastModTypes.get(propertyName) == ModificationType.SET)) {
+      if (lastModTypes.containsKey(propertyName)
+          && lastModTypes.get(propertyName) == ModificationType.SET) {
         throw ArgumentExceptionFactory.incompatiblePropertyModification(m);
       }
 
@@ -948,8 +888,38 @@
     }
   }
 
+  /** Parse and check the property "property:value". */
+  private Pair<String, String> parseValue(String m) throws ArgumentException
+  {
+    int sep = m.indexOf(':');
+    if (sep < 0) {
+      throw ArgumentExceptionFactory.missingSeparatorInPropertyArgument(m);
+    }
+    if (sep == 0) {
+      throw ArgumentExceptionFactory.missingNameInPropertyArgument(m);
+    }
 
-  // Apply a single modification to the current change-set.
+    String propertyName = m.substring(0, sep);
+    String value = m.substring(sep + 1, m.length());
+    if (value.length() == 0) {
+      throw ArgumentExceptionFactory.missingValueInPropertyArgument(m);
+    }
+    return Pair.of(propertyName, value);
+  }
+
+  /** Get and check the property definition. */
+  private PropertyDefinition<?> getPropertyDefinition(
+      ManagedObjectDefinition<?, ?> def, String propertyName)
+      throws ArgumentException
+  {
+    try {
+      return def.getPropertyDefinition(propertyName);
+    } catch (IllegalArgumentException e) {
+      throw ArgumentExceptionFactory.unknownProperty(def, propertyName);
+    }
+  }
+
+  /** Apply a single modification to the current change-set. */
   @SuppressWarnings("unchecked")
   private <T> void modifyPropertyValues(ManagedObject<?> mo,
       PropertyDefinition<T> pd, Map<PropertyDefinition, Set> changes,
@@ -976,7 +946,7 @@
         values.add(value);
         break;
       case REMOVE:
-        if (values.remove(value) != true) {
+        if (!values.remove(value)) {
           // value was not part of values
           throw ArgumentExceptionFactory.
             unknownValueForMultiValuedProperty(s, pd.getName());

--
Gitblit v1.10.0