From d0cdd38e12da2794edc888686757fcb180d2f6be Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 12 Sep 2007 13:24:52 +0000
Subject: [PATCH] Improve the usability of dsconfig when the server rejects a change. Previously dsconfig would just bomb out. With this change dsconfig will either give the user the opportunity to re-edit and fix any mis-configured properties of the component (for create-xxx and set-xxx-prop interactive modes), or drop them back to the component menu (for delete-xxx interactive mode).

---
 opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java b/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java
index ed72af1..3092f5f 100644
--- a/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java
+++ b/opends/src/server/org/opends/server/tools/dsconfig/DSConfig.java
@@ -54,6 +54,7 @@
 import org.opends.server.admin.RelationDefinition;
 import org.opends.server.admin.Tag;
 import org.opends.server.admin.client.ManagedObjectDecodingException;
+import org.opends.server.admin.client.OperationRejectedException;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.tools.ClientException;
 import org.opends.server.types.DebugLogLevel;
@@ -849,6 +850,24 @@
         TextTablePrinter printer = new TextTablePrinter(getErrorStream());
         printer.setDisplayHeadings(false);
         printer.setColumnWidth(1, 0);
+        printer.setIndentWidth(4);
+        builder.print(printer);
+        println();
+      } else if (cause instanceof OperationRejectedException) {
+        OperationRejectedException ore = (OperationRejectedException) cause;
+
+        println();
+        TableBuilder builder = new TableBuilder();
+        for (Message reason : ore.getMessages()) {
+          builder.startRow();
+          builder.appendCell("*");
+          builder.appendCell(reason);
+        }
+
+        TextTablePrinter printer = new TextTablePrinter(getErrorStream());
+        printer.setDisplayHeadings(false);
+        printer.setColumnWidth(1, 0);
+        printer.setIndentWidth(4);
         builder.print(printer);
         println();
       }

--
Gitblit v1.10.0