Author: bimargulies
Date: Sat Dec  4 13:19:53 2010
New Revision: 1042167

URL: http://svn.apache.org/viewvc?rev=1042167&view=rev
Log:
Add a missing accessor for callers who prefer to call wait for themselves.

Modified:
    cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientCallback.java

Modified: 
cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientCallback.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientCallback.java?rev=1042167&r1=1042166&r2=1042167&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientCallback.java 
(original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientCallback.java Sat 
Dec  4 13:19:53 2010
@@ -28,36 +28,45 @@ import java.util.concurrent.TimeoutExcep
 import org.apache.cxf.message.Message;
 
 /**
- * 
+ * Asynchronous callback object for calls to {...@link 
Client#invoke(ClientCallback, String, Object...)}
+ * and related functions.
+ *
+ * The default behavior of this expects the following pattern:
+ * <ol>
+ * <li>ClientCallback cb = new ClientCallback();</li>
+ * <li>client.invoke(cb, "someMethod", ....);</li>
+ * <li>cb.wait();</li>
+ * <li>// CXF calls notify on the callback object when the operation is 
complete.</li>
+ * </ol>
  */
 public class ClientCallback implements Future<Object[]> {
-    
+
     protected Map<String, Object> context;
     protected Object[] result;
     protected Throwable exception;
     protected volatile boolean done;
     protected boolean cancelled;
     protected boolean started;
-    
+
     public ClientCallback() {
     }
-    
+
     /**
-     * Called when a message is first received prior to any actions 
-     * being applied to the message.   The InterceptorChain is setup so 
+     * Called when a message is first received prior to any actions
+     * being applied to the message.   The InterceptorChain is setup so
      * modifications to that can be done.
      */
     public void start(Message msg) {
         started = true;
     }
-    
+
     /**
      * If the processing of the incoming message proceeds normally, this
      * method is called with the response context values and the resulting 
objects.
-     * 
+     *
      * The default behavior just stores the objects and calls notifyAll to wake
      * up threads waiting for the response.
-     * 
+     *
      * @param ctx
      * @param res
      */
@@ -69,14 +78,14 @@ public class ClientCallback implements F
             notifyAll();
         }
     }
-    
+
     /**
      * If processing of the incoming message results in an exception, this
      * method is called with the resulting exception.
-     * 
+     *
      * The default behavior just stores the objects and calls notifyAll to wake
      * up threads waiting for the response.
-     * 
+     *
      * @param ctx
      * @param ex
      */
@@ -88,8 +97,8 @@ public class ClientCallback implements F
             notifyAll();
         }
     }
-    
-    
+
+
     public boolean cancel(boolean mayInterruptIfRunning) {
         if (!started) {
             cancelled = true;
@@ -101,6 +110,12 @@ public class ClientCallback implements F
         return false;
     }
 
+    /**
+     * return the map of items returned from an operation.
+     * @return
+     * @throws InterruptedException if the operation was cancelled.
+     * @throws ExecutionException if the operation resulted in a fault.
+     */
     public Map<String, Object> getResponseContext() throws 
InterruptedException, ExecutionException {
         synchronized (this) {
             if (!done) {
@@ -115,7 +130,10 @@ public class ClientCallback implements F
         }
         return context;
     }
-    
+
+    /**
+     * {...@inheritdoc}
+     */
     public Object[] get() throws InterruptedException, ExecutionException {
         synchronized (this) {
             if (!done) {
@@ -131,7 +149,10 @@ public class ClientCallback implements F
         return result;
     }
 
-    public Object[] get(long timeout, TimeUnit unit) 
+    /**
+     * {...@inheritdoc}
+     */
+    public Object[] get(long timeout, TimeUnit unit)
         throws InterruptedException, ExecutionException, TimeoutException {
         synchronized (this) {
             if (!done) {
@@ -157,4 +178,12 @@ public class ClientCallback implements F
     public boolean isDone() {
         return done;
     }
+
+    /*
+     * If the operation completes with a fault, the resulting exception object 
ends up here.
+     */
+    public Throwable getException() {
+        return exception;
+    }
+
 }


Reply via email to