From de3fde4c481bcb00df7b0ce60e80f1482e538a85 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 25 Jun 2008 15:31:12 +0000
Subject: [PATCH] Fix for issue 3327 (cmd line returned by dsconfig with --displayCommand to create new attribute is invalid)

---
 opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java |    8 ++++----
 opends/src/server/org/opends/server/tools/dsconfig/SubCommandHandler.java        |   21 +++++++++++++++++++++
 opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java  |    6 +++---
 3 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java b/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
index 8643ac7..c9820c5 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
@@ -1468,7 +1468,7 @@
           INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
       for (Object value : mod.getModificationValues())
       {
-        arg.addValue(propName+':'+value);
+        arg.addValue(propName+':'+getArgumentValue(value));
       }
       break;
     case SET:
@@ -1478,7 +1478,7 @@
           INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
       for (Object value : mod.getModificationValues())
       {
-        arg.addValue(propName+':'+value);
+        arg.addValue(propName+':'+getArgumentValue(value));
       }
       break;
     case RESET:
@@ -1495,7 +1495,7 @@
           INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get());
       for (Object value : mod.getModificationValues())
       {
-        arg.addValue(propName+':'+value);
+        arg.addValue(propName+':'+getArgumentValue(value));
       }
       arg = null;
       break;
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 a92718e..9709e03 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
@@ -456,7 +456,7 @@
                             INFO_VALUE_SET_PLACEHOLDER.get(), null, null,
                             INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
                         arg.addValue(cvc.getPropertyDefinition().getName()+':'+
-                            cvc.getValue());
+                            getArgumentValue(cvc.getValue()));
                         builder.addArgument(arg);
                       }
                       catch (Throwable t)
@@ -972,7 +972,7 @@
           INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL.get());
       for (Object value : mod.getModificationValues())
       {
-        arg.addValue(propName+':'+value);
+        arg.addValue(propName+':'+getArgumentValue(value));
       }
       break;
     case ADD:
@@ -982,7 +982,7 @@
           INFO_DSCFG_DESCRIPTION_ADD_PROP_VAL.get());
       for (Object value : mod.getModificationValues())
       {
-        arg.addValue(propName+':'+value);
+        arg.addValue(propName+':'+getArgumentValue(value));
       }
       break;
     case SET:
@@ -992,7 +992,7 @@
           INFO_DSCFG_DESCRIPTION_PROP_VAL.get());
       for (Object value : mod.getModificationValues())
       {
-        arg.addValue(propName+':'+value);
+        arg.addValue(propName+':'+getArgumentValue(value));
       }
       break;
     default:
diff --git a/opends/src/server/org/opends/server/tools/dsconfig/SubCommandHandler.java b/opends/src/server/org/opends/server/tools/dsconfig/SubCommandHandler.java
index dddb2b2..c935bc6 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/SubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/SubCommandHandler.java
@@ -70,6 +70,7 @@
 import org.opends.server.admin.client.ManagedObjectDecodingException;
 import org.opends.server.admin.client.ManagementContext;
 import org.opends.server.tools.ClientException;
+import org.opends.server.types.CommonSchemaElements;
 import org.opends.server.util.ServerConstants;
 import org.opends.server.util.args.Argument;
 import org.opends.server.util.args.ArgumentException;
@@ -1227,4 +1228,24 @@
     }
   }
 
+
+  /**
+   * Returns the string value for a given object as it will be displayed
+   * in the equivalent command-line.
+   * @param o the value.
+   * @return the String value to be displayed in the equivalent command-line.
+   */
+  protected static String getArgumentValue(Object o)
+  {
+    String value;
+    if (o instanceof CommonSchemaElements)
+    {
+      value = ((CommonSchemaElements)o).getOID();
+    }
+    else
+    {
+      value = String.valueOf(o);
+    }
+    return value;
+  }
 }

--
Gitblit v1.10.0