From 116747e396cc2f6ad54fb8b9fe8cf266dd6b5837 Mon Sep 17 00:00:00 2001
From: jcambon <jcambon@localhost>
Date: Mon, 04 Feb 2008 13:36:57 +0000
Subject: [PATCH] Fix for Issue #2825: dsconfig interactive mode : wrong message information

---
 opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java     |   17 ++++++++++++++++-
 opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java |   16 +++++++++-------
 opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagedObject.java              |   13 ++++++++++++-
 3 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagedObject.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagedObject.java
index a7cba0f..77caa91 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagedObject.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ManagedObject.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
  */
 
 package org.opends.server.admin.client;
@@ -132,6 +132,17 @@
       CommunicationException;
 
 
+  /**
+   * Determines whether or not this managed object has been modified since it
+   * was constructed.
+   * In other words, whether or not the set of pending values differs from
+   * the set of active values.
+   *
+   * @return Returns <code>true</code> if this managed object has been
+   *         modified since it was constructed.
+   */
+  boolean isModified();
+
 
   /**
    * Creates a new child managed object bound to the specified
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java
index 19da6fe..f944859 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/client/ldap/LDAPManagedObject.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
  */
 
 package org.opends.server.admin.client.ldap;
@@ -361,4 +361,19 @@
     }
   }
 
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public boolean isModified() {
+    ManagedObjectDefinition<?, ?> d = getManagedObjectDefinition();
+    for (PropertyDefinition<?> pd : d.getAllPropertyDefinitions()) {
+      Property<?> p = getProperty(pd);
+      if (p.isModified()) {
+        return true;
+      }
+    }
+    return false;
+  }
+
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java b/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
index f57a43f..579f210 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.tools.dsconfig;
 
@@ -277,13 +277,15 @@
       }
 
       try {
-        // Commit the changes.
-        mo.commit();
+        // Commit the changes if necessary
+        if (mo.isModified()) {
+          mo.commit();
 
-        // Output success message.
-        app.println();
-        Message msg = INFO_DSCFG_CONFIRM_MODIFY_SUCCESS.get(ufn);
-        app.printVerboseMessage(msg);
+          // Output success message.
+          app.println();
+          Message msg = INFO_DSCFG_CONFIRM_MODIFY_SUCCESS.get(ufn);
+          app.printVerboseMessage(msg);
+        }
 
         return MenuResult.success();
       } catch (MissingMandatoryPropertiesException e) {

--
Gitblit v1.10.0