You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by si...@apache.org on 2012/09/07 05:12:27 UTC

svn commit: r1381848 - in /zookeeper/bookkeeper/trunk: CHANGES.txt hedwig-protocol/src/main/java/org/apache/hedwig/exceptions/PubSubException.java

Author: sijie
Date: Fri Sep  7 03:12:27 2012
New Revision: 1381848

URL: http://svn.apache.org/viewvc?rev=1381848&view=rev
Log:
BOOKKEEPER-394: CompositeException message is not useful (Stu Hood via sijie)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/exceptions/PubSubException.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1381848&r1=1381847&r2=1381848&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Fri Sep  7 03:12:27 2012
@@ -76,6 +76,10 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-386: It should not be possible to replicate a ledger fragment which is at the end of an open ledger (ivank & umamahesh via ivank)
 
+      hedwig-protocol:
+
+        BOOKKEEPER-394: CompositeException message is not useful (Stu Hood via sijie)
+
       hedwig-client:
 
         BOOKKEEPER-274: Hedwig cpp client library should not link to cppunit which is just used for test. (sijie via ivank)

Modified: zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/exceptions/PubSubException.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/exceptions/PubSubException.java?rev=1381848&r1=1381847&r2=1381848&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/exceptions/PubSubException.java (original)
+++ zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/exceptions/PubSubException.java Fri Sep  7 03:12:27 2012
@@ -18,6 +18,7 @@
 package org.apache.hedwig.exceptions;
 
 import java.util.Collection;
+import java.util.Iterator;
 
 import org.apache.hedwig.protocol.PubSubProtocol.StatusCode;
 
@@ -195,9 +196,6 @@ public abstract class PubSubException ex
         }
     }
 
-    /*
-     * Insert new ones here
-     */
     public static class UncertainStateException extends PubSubException {
         public UncertainStateException(String msg) {
             super(StatusCode.UNCERTAIN_STATE, msg);
@@ -218,19 +216,23 @@ public abstract class PubSubException ex
     public static class CompositeException extends PubSubException {
         private final Collection<PubSubException> exceptions;
         public CompositeException(Collection<PubSubException> exceptions) {
-            super(StatusCode.COMPOSITE, "composite exception");
+            super(StatusCode.COMPOSITE, compositeMessage(exceptions));
             this.exceptions = exceptions;
         }
+
         public Collection<PubSubException> getExceptions() {
             return exceptions;
         }
-        @Override
-        public String toString() {
-            StringBuilder builder = new StringBuilder();
-            builder.append(super.toString()).append('\n');
-            for (PubSubException exception : exceptions)
-                builder.append(exception).append('\n');
-            return builder.toString();
+
+        /** Merges the message fields of the given Exceptions into a one line string. */
+        private static String compositeMessage(Collection<PubSubException> exceptions) {
+            StringBuilder builder = new StringBuilder("Composite exception: [");
+            Iterator<PubSubException> iter = exceptions.iterator();
+            if (iter.hasNext())
+                builder.append(iter.next().getMessage());
+            while (iter.hasNext())
+                builder.append(" :: ").append(iter.next().getMessage());
+            return builder.append("]").toString();
         }
     }