From 25767e41837b50d8a577be06e4272c4ae947e837 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Tue, 04 Sep 2007 18:26:12 +0000
Subject: [PATCH] Improve display of OperationRejectedExceptions in dsconfig.

---
 opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java |    9 ++++
 opends/src/messages/messages/dsconfig.properties                                 |   12 +++---
 opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java  |   10 ++++-
 opends/src/server/org/opends/server/admin/client/OperationRejectedException.java |   55 ++++++++++++++++++++-------
 opends/src/server/org/opends/server/tools/dsconfig/DeleteSubCommandHandler.java  |   10 ++++-
 5 files changed, 70 insertions(+), 26 deletions(-)

diff --git a/opends/src/messages/messages/dsconfig.properties b/opends/src/messages/messages/dsconfig.properties
index 3078b41..b14a1c0 100644
--- a/opends/src/messages/messages/dsconfig.properties
+++ b/opends/src/messages/messages/dsconfig.properties
@@ -110,14 +110,10 @@
  communications problem: %s
 SEVERE_ERR_DSCFG_ERROR_CREATE_CME_1036=The %s could not be created because \
  another client is currently making conflicting configuration changes
-SEVERE_ERR_DSCFG_ERROR_CREATE_ORE_1037=The server prevented the %s from being \
- created because of the following reason: %s
 SEVERE_ERR_DSCFG_ERROR_DELETE_MONFE_1038=The %s could not be deleted because \
  it does not exist
 SEVERE_ERR_DSCFG_ERROR_DELETE_AUTHZ_1039=The %s could not be deleted because \
  you do not have the correct authorization
-SEVERE_ERR_DSCFG_ERROR_DELETE_ORE_1040=The server prevented the %s from being \
- deleted because of the following reason: %s
 SEVERE_ERR_DSCFG_ERROR_DELETE_CE_1041=The %s could not be deleted due to a \
  communications problem: %s
 SEVERE_ERR_DSCFG_ERROR_DELETE_CME_1042=The %s could not be deleted because \
@@ -142,8 +138,6 @@
  communications problem: %s
 SEVERE_ERR_DSCFG_ERROR_MODIFY_CME_1052=The %s could not be modified because \
  another client is currently making conflicting configuration changes
-SEVERE_ERR_DSCFG_ERROR_MODIFY_ORE_1053=The server prevented the %s from being \
- modified because of the following reason: %s
 SEVERE_ERR_DSCFG_ERROR_LIST_DDE_1054=The %s could not be retrieved because \
  its type could not be determined. This is probably due to the %s having an \
  invalid LDAP entry. Check that the %s object classes are correct
@@ -412,3 +406,9 @@
 INFO_DSCFG_PROMPT_SECURITY_KEYSTORE_PATH_1381=Keystore path:
 INFO_DSCFG_PROMPT_SECURITY_KEYSTORE_PASSWORD_1382=Password for keystore '%s':
 INFO_DSCFG_PROMPT_SECURITY_CERTIFICATE_NAME_1383=Certificate nickname:
+SEVERE_ERR_DSCFG_ERROR_CREATE_ORE_SINGLE_1384=The %s could not be created because of the following reason: %s
+SEVERE_ERR_DSCFG_ERROR_CREATE_ORE_PLURAL_1385=The %s could not be created because of the following reasons: %s
+SEVERE_ERR_DSCFG_ERROR_DELETE_ORE_SINGLE_1386=The %s could not be deleted because of the following reason: %s
+SEVERE_ERR_DSCFG_ERROR_DELETE_ORE_PLURAL_1387=The %s could not be deleted because of the following reasons: %s
+SEVERE_ERR_DSCFG_ERROR_MODIFY_ORE_SINGLE_1388=The %s could not be modified because of the following reason: %s
+SEVERE_ERR_DSCFG_ERROR_MODIFY_ORE_PLURAL_1389=The %s could not be modified because of the following reasons: %s
diff --git a/opends/src/server/org/opends/server/admin/client/OperationRejectedException.java b/opends/src/server/org/opends/server/admin/client/OperationRejectedException.java
index 8f2d81c..fd5ed40 100644
--- a/opends/src/server/org/opends/server/admin/client/OperationRejectedException.java
+++ b/opends/src/server/org/opends/server/admin/client/OperationRejectedException.java
@@ -63,8 +63,8 @@
 
 
 
-  // Merge the messages into a single message.
-  private static Message getSingleMessage(Collection<Message> messages) {
+  // Gets the default message.
+  private static Message getDefaultMessage(Collection<Message> messages) {
     Validator.ensureNotNull(messages);
     Validator.ensureTrue(!messages.isEmpty());
 
@@ -72,18 +72,30 @@
       return ERR_OPERATION_REJECTED_EXCEPTION_SINGLE.get(messages.iterator()
           .next());
     } else {
+      return ERR_OPERATION_REJECTED_EXCEPTION_PLURAL
+          .get(getSingleMessage(messages));
+    }
+  }
+
+
+
+  // Merge the messages into a single message.
+  private static Message getSingleMessage(Collection<Message> messages) {
+    if (messages.size() == 1) {
+      return messages.iterator().next();
+    } else {
       MessageBuilder builder = new MessageBuilder();
 
       boolean isFirst = true;
       for (Message m : messages) {
         if (!isFirst) {
-          builder.append("; ");
+          builder.append(";  ");
         }
         builder.append(m);
         isFirst = false;
       }
 
-      return ERR_OPERATION_REJECTED_EXCEPTION_PLURAL.get(builder.toMessage());
+      return builder.toMessage();
     }
   }
 
@@ -93,6 +105,16 @@
 
 
   /**
+   * Creates a new operation rejected exception with a default
+   * message.
+   */
+  public OperationRejectedException() {
+    this(ERR_OPERATION_REJECTED_DEFAULT.get());
+  }
+
+
+
+  /**
    * Creates a new operation rejected exception with the provided
    * messages.
    *
@@ -102,7 +124,7 @@
    *          non-empty).
    */
   public OperationRejectedException(Collection<Message> messages) {
-    super(getSingleMessage(messages));
+    super(getDefaultMessage(messages));
 
     this.messages = new ArrayList<Message>(messages);
   }
@@ -124,16 +146,6 @@
 
 
   /**
-   * Creates a new operation rejected exception with a default
-   * message.
-   */
-  public OperationRejectedException() {
-    this(ERR_OPERATION_REJECTED_DEFAULT.get());
-  }
-
-
-
-  /**
    * Gets an unmodifiable collection view of the messages describing
    * the constraint violations that occurred.
    *
@@ -144,4 +156,17 @@
     return Collections.unmodifiableCollection(messages);
   }
 
+
+
+  /**
+   * Creates a single message listing all the messages combined into a
+   * single list separated by semi-colons.
+   *
+   * @return Returns a single message listing all the messages
+   *         combined into a single list separated by semi-colons.
+   */
+  public Message getMessagesAsSingleMessage() {
+    return getSingleMessage(messages);
+  }
+
 }
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 6171137..2206bf1 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
@@ -694,8 +694,14 @@
       Message msg = ERR_DSCFG_ERROR_CREATE_CME.get(d.getUserFriendlyName());
       throw new ClientException(LDAPResultCode.CONSTRAINT_VIOLATION, msg);
     } catch (OperationRejectedException e) {
-      Message msg = ERR_DSCFG_ERROR_CREATE_ORE.get(d.getUserFriendlyName(), e
-          .getMessage());
+      Message msg;
+      if (e.getMessages().size() == 1) {
+        msg = ERR_DSCFG_ERROR_CREATE_ORE_SINGLE.get(d.getUserFriendlyName(), e
+            .getMessagesAsSingleMessage());
+      } else {
+        msg = ERR_DSCFG_ERROR_CREATE_ORE_PLURAL.get(d.getUserFriendlyName(), e
+            .getMessagesAsSingleMessage());
+      }
       throw new ClientException(LDAPResultCode.CONSTRAINT_VIOLATION, msg);
     } catch (CommunicationException e) {
       Message msg = ERR_DSCFG_ERROR_CREATE_CE.get(d.getUserFriendlyName(), e
diff --git a/opends/src/server/org/opends/server/tools/dsconfig/DeleteSubCommandHandler.java b/opends/src/server/org/opends/server/tools/dsconfig/DeleteSubCommandHandler.java
index 06de23f..b628f5d 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/DeleteSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/DeleteSubCommandHandler.java
@@ -297,8 +297,14 @@
           .getUserFriendlyName());
       throw new ClientException(LDAPResultCode.INSUFFICIENT_ACCESS_RIGHTS, msg);
     } catch (OperationRejectedException e) {
-      Message msg = ERR_DSCFG_ERROR_DELETE_ORE.get(relation
-          .getUserFriendlyName(), e.getMessage());
+      Message msg;
+      if (e.getMessages().size() == 1) {
+        msg = ERR_DSCFG_ERROR_DELETE_ORE_SINGLE.get(relation
+            .getUserFriendlyName(), e.getMessagesAsSingleMessage());
+      } else {
+        msg = ERR_DSCFG_ERROR_DELETE_ORE_PLURAL.get(relation
+            .getUserFriendlyName(), e.getMessagesAsSingleMessage());
+      }
       throw new ClientException(LDAPResultCode.CONSTRAINT_VIOLATION, msg);
     } catch (ManagedObjectNotFoundException e) {
       // Ignore the error if the deletion is being forced.
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 f48289f..6e3bbd7 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/SetPropSubCommandHandler.java
@@ -554,7 +554,14 @@
       Message msg = ERR_DSCFG_ERROR_MODIFY_CME.get(ufn);
       throw new ClientException(LDAPResultCode.CONSTRAINT_VIOLATION, msg);
     } catch (OperationRejectedException e) {
-      Message msg = ERR_DSCFG_ERROR_MODIFY_ORE.get(ufn, e.getMessage());
+      Message msg;
+      if (e.getMessages().size() == 1) {
+        msg = ERR_DSCFG_ERROR_MODIFY_ORE_SINGLE.get(ufn, e
+            .getMessagesAsSingleMessage());
+      } else {
+        msg = ERR_DSCFG_ERROR_MODIFY_ORE_PLURAL.get(ufn, e
+            .getMessagesAsSingleMessage());
+      }
       throw new ClientException(LDAPResultCode.CONSTRAINT_VIOLATION, msg);
     } catch (CommunicationException e) {
       Message msg = ERR_DSCFG_ERROR_MODIFY_CE.get(ufn, e.getMessage());

--
Gitblit v1.10.0