From c51e868e27ab66bd7d0950d390f28c4c65d0abba Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Mon, 22 Sep 2014 09:13:47 +0000
Subject: [PATCH] OPENDJ-1574 CR-4564: Allow editing of single-valued InetAddress properties

---
 opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java b/opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java
index d38558a..4635e6c 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/PropertyValueEditor.java
@@ -1969,10 +1969,15 @@
 
       if (result.isSuccess()) {
         // Set the new property value(s).
-        Collection<T> newValues = result.getValues();
+        Collection<T> values = result.getValues();
+        // Both newValues and oldValues sets need to use the PropertyDefinition
+        // as their comparator. Constructing a TreeSet<T> directly with the
+        // values collection will fail if the values are e.g. InetAddresses.
+        SortedSet<T> newValues = new TreeSet<T>(d);
+        newValues.addAll(values);
         SortedSet<T> oldValues = new TreeSet<T>(mo.getPropertyValues(d));
-        mo.setPropertyValues(d, newValues);
-        if (newValues.size() > 0)
+        mo.setPropertyValues(d, values);
+        if (values.size() > 0)
         {
           isLastChoiceReset = false;
         }
@@ -1981,7 +1986,7 @@
           // There are no newValues when we do a reset.
           isLastChoiceReset = true;
         }
-        registerModification(d, new TreeSet<T>(newValues), oldValues);
+        registerModification(d, newValues, oldValues);
         app.println();
         app.pressReturnToContinue();
         return MenuResult.success(false);

--
Gitblit v1.10.0