[jboss-svn-commits] JBL Code SVN: r25641 - in labs/jbossrules/trunk/drools-process/drools-process-task/src: main/java/org/drools/task/service/responsehandlers and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 13 12:29:24 EDT 2009


Author: stampy88
Date: 2009-03-13 12:29:23 -0400 (Fri, 13 Mar 2009)
New Revision: 25641

Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddAttachmentResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddCommentResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddTaskResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteAttachmentResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteCommentResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingEventResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetContentResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetTaskResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingSetContentResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskOperationResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskSummaryResponseHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java
Log:
Fixed JBRULES-2006 and refactored handlers to make synchronization cleaner

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,16 +1,15 @@
 /**
- * 
+ *
  */
 package org.drools.process.workitem.wsht;
 
 import org.drools.task.service.BaseMinaHandler.ResponseHandler;
 
-public abstract class AbstractBlockingResponseHandler
-    implements
-    ResponseHandler {
-    protected volatile Boolean done = Boolean.FALSE;
+public abstract class AbstractBlockingResponseHandler implements ResponseHandler {
+
+    private volatile boolean done;
     private String error;
-    
+
     public boolean hasError() {
         return error != null;
     }
@@ -23,31 +22,33 @@
         this.error = error;
     }
 
-    public boolean isDone() {
-        synchronized ( done ) {
-            return done;
-        }
+    public synchronized boolean isDone() {
+        return done;
     }
 
-    public boolean waitTillDone(long time) {
-        long totalWaitTime = 0;
-        try {
-            while ( true ) {
-                synchronized ( done ) {
-                    if ( done ) {
-                        return true;
-                    }
-                }
-                if ( totalWaitTime >= time ) {
-                    break;
-                }
-                Thread.sleep( 250 );
-                totalWaitTime += 250;
+    protected synchronized void setDone(boolean done) {
+        this.done = done;
+        notifyAll();
+    }
+
+    /**
+     * This method will wait the specified amount of time in milliseconds for the response to
+     * be completed. Completed is determined via the <field>done</field>. Returns true if the
+     * reponse was completed in time, false otherwise
+     *
+     * @param time max time to wait
+     * @return true if response is available, false otherwise
+     */
+    public synchronized boolean waitTillDone(long time) {
+
+        if (!isDone()) {
+            try {
+                wait(time);
+            } catch (InterruptedException e) {
+                // swallow and return state of done
             }
-        } catch ( Exception e ) {
-            // swallow, as we are either true or false
         }
-        return false;
+
+        return isDone();
     }
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,40 +1,29 @@
 /**
- * 
+ *
  */
 package org.drools.process.workitem.wsht;
 
 import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
 
 public class BlockingAddTaskResponseHandler extends AbstractBlockingResponseHandler implements AddTaskResponseHandler {
+    private static final int DEFAULT_WAIT_TIME = 10000;
+    
     private volatile long taskId;
 
     public synchronized void execute(long taskId) {
-        synchronized ( this.done ) {        
-            this.taskId = taskId;
-            this.done = true;
-            notifyAll(); 
-        }
+        this.taskId = taskId;
+        setDone(true);
     }
-    
-    public synchronized long getTaskId() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+
+    public long getTaskId() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means taskId is available 
+        boolean done = waitTillDone(DEFAULT_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Task Id");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve Task Id" );
-        }
-        
+
         return taskId;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package org.drools.process.workitem.wsht;
 
@@ -7,35 +7,26 @@
 import org.drools.eventmessaging.Payload;
 
 public class BlockingEventResponseHandler extends AbstractBlockingResponseHandler implements EventResponseHandler {
+    // todo why is this timeout different from the others?? - also, if this should be the same
+    // they can be collasped into the base class
+    private static final int DEFAULT_WAIT_TIME = 1000000;
+
     private volatile Payload payload;
 
     public synchronized void execute(Payload payload) {
-        synchronized ( this.done ) {            
-            this.payload = payload;        
-            this.done = true;
-        }
-        notifyAll();        
+        this.payload = payload;
+        setDone(true);
     }
-    
-    public synchronized Payload getPayload() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+
+    public Payload getPayload() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means payload is available 
+        boolean done = waitTillDone(DEFAULT_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve event payload");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 1000000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve event payload" );
-        }
-        
+
         return payload;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package org.drools.process.workitem.wsht;
 
@@ -7,29 +7,24 @@
 import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
 
 public class BlockingGetTaskResponseHandler extends AbstractBlockingResponseHandler implements GetTaskResponseHandler {
-    private volatile Task task;
+    private static final int DEFAULT_WAIT_TIME = 10000;
 
+    private volatile Task task;
+    
     public synchronized void execute(Task task) {
-        synchronized ( this.done ) {        
-            this.task = task;
-            this.done = true;
-            notifyAll();     
-        }
+        this.task = task;
+        setDone(true);
     }
-    
-    public synchronized Task getTask() {
-        if ( task == null ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notifiation
-            }
+
+    public Task getTask() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means task is available 
+        boolean done = waitTillDone(DEFAULT_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Task");
         }
-        
-        if ( task == null ) {
-            throw new RuntimeException("Timeout : unable to retrieve Task Id" );
-        }
-        
+
         return task;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,16 +1,17 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.BaseMinaHandler.ResponseHandler;
 
-public abstract class AbstractBlockingResponseHandler
-    implements
-    ResponseHandler {
-    protected volatile Boolean done = Boolean.FALSE;
+// todo: this class is the same as org.drools.process.workitem.wsht.AbstractBlockingResponseHandler - need to
+// consolodate them
+public abstract class AbstractBlockingResponseHandler implements ResponseHandler {
+
+    private volatile boolean done;
     private String error;
-    
+
     public boolean hasError() {
         return error != null;
     }
@@ -23,31 +24,33 @@
         this.error = error;
     }
 
-    public boolean isDone() {
-        synchronized ( done ) {
-            return done;
-        }
+    public synchronized boolean isDone() {
+        return done;
     }
 
-    public boolean waitTillDone(long time) {
-        long totalWaitTime = 0;
-        try {
-            while ( true ) {
-                synchronized ( done ) {
-                    if ( done ) {
-                        return true;
-                    }
-                }
-                if ( totalWaitTime >= time ) {
-                    break;
-                }
-                Thread.sleep( 250 );
-                totalWaitTime += 250;
+    protected synchronized void setDone(boolean done) {
+        this.done = done;
+        notifyAll();
+    }
+
+    /**
+     * This method will wait the specified amount of time in milliseconds for the response to
+     * be completed. Completed is determined via the <field>done</field>. Returns true if the
+     * reponse was completed in time, false otherwise
+     *
+     * @param time max time to wait
+     * @return true if response is available, false otherwise
+     */
+    public synchronized boolean waitTillDone(long time) {
+
+        if (!isDone()) {
+            try {
+                wait(time);
+            } catch (InterruptedException e) {
+                // swallow and return state of done
             }
-        } catch ( Exception e ) {
-            // swallow, as we are either true or false
         }
-        return false;
+
+        return isDone();
     }
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddAttachmentResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddAttachmentResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddAttachmentResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,64 +1,44 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.AddAttachmentResponseHandler;
 
 public class BlockingAddAttachmentResponseHandler extends AbstractBlockingResponseHandler implements AddAttachmentResponseHandler {
-    private volatile long attachmentId ;
+    private static final int ATTACHMENT_ID_WAIT_TIME = 10000;
+    private static final int CONTENT_ID_WAIT_TIME = 3000;
+
+    private volatile long attachmentId;
     private volatile long contentId;
 
     public synchronized void execute(long attachmentId, long contentId) {
-        synchronized ( this.done ) {        
-            this.attachmentId = attachmentId;
-            this.contentId = contentId;
-            this.done = true;
-            notifyAll();     
-        }
+        this.attachmentId = attachmentId;
+        this.contentId = contentId;
+        setDone(true);
     }
-    
-    public synchronized long getAttachmentId() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+
+    public  long getAttachmentId() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means attachmentId is available
+        boolean done = waitTillDone(ATTACHMENT_ID_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Attachment Id");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve Attachment Id" );
-        }
-        
+
         return attachmentId;
-    }       
-    
-    public synchronized long getContentId() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+    }
+
+    public long getContentId() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means contentId is available
+        boolean done = waitTillDone(CONTENT_ID_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Attachment Content Id");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 3000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve Attachment Content Id" );
-        }
-        
+
         return contentId;
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddCommentResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddCommentResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddCommentResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,41 +1,30 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.AddCommentResponseHandler;
 
 public class BlockingAddCommentResponseHandler extends AbstractBlockingResponseHandler
-    implements
-    AddCommentResponseHandler {
-    private volatile long    commentId;
+        implements AddCommentResponseHandler {
 
+    private static final int COMMENT_ID_WAIT_TIME = 10000;
+
+    private volatile long commentId;
+
     public synchronized void execute(long commentId) {
-        synchronized ( this.done ) {
-            this.commentId = commentId;
-            this.done = true;
-            notifyAll();
-        }
+        this.commentId = commentId;
+        setDone(true);
     }
 
-    public synchronized long getCommentId() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+    public long getCommentId() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means commentId is available 
+        boolean done = waitTillDone(COMMENT_ID_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Comment Id");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException( "Timeout : unable to retrieve Task Id" );
-        }
 
         return commentId;
     }

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddTaskResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddTaskResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingAddTaskResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,40 +1,29 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
 
 public class BlockingAddTaskResponseHandler extends AbstractBlockingResponseHandler implements AddTaskResponseHandler {
+    private static final int TASK_ID_WAIT_TIME = 10000;
+
     private volatile long taskId;
 
     public synchronized void execute(long taskId) {
-        synchronized ( this.done ) {        
-            this.taskId = taskId;
-            this.done = true;
-            notifyAll(); 
-        }
+        this.taskId = taskId;
+        setDone(true);
     }
-    
-    public synchronized long getTaskId() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+
+    public long getTaskId() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means taskId is available 
+        boolean done = waitTillDone(TASK_ID_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Task Id");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve Task Id" );
-        }
-        
+
         return taskId;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteAttachmentResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteAttachmentResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteAttachmentResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,14 +1,12 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.DeleteAttachmentResponseHandler;
 
 public class BlockingDeleteAttachmentResponseHandler extends AbstractBlockingResponseHandler implements DeleteAttachmentResponseHandler {
-      public void setIsDone(boolean done) {
-          synchronized ( this.done ) {
-            this.done = done;
-        }
-      }
+    public void setIsDone(boolean done) {
+        setDone(done);
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteCommentResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteCommentResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingDeleteCommentResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,14 +1,12 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.DeleteCommentResponseHandler;
 
 public class BlockingDeleteCommentResponseHandler extends AbstractBlockingResponseHandler implements DeleteCommentResponseHandler {
-      public void setIsDone(boolean done) {
-          synchronized ( this.done ) {
-            this.done = done;
-        }
-      }
+    public void setIsDone(boolean done) {
+        setDone(done);
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingEventResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingEventResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingEventResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
@@ -7,35 +7,24 @@
 import org.drools.eventmessaging.Payload;
 
 public class BlockingEventResponseHandler extends AbstractBlockingResponseHandler implements EventResponseHandler {
+    private static final int PAYLOAD_WAIT_TIME = 10000;
+
     private volatile Payload payload;
 
     public synchronized void execute(Payload payload) {
-        synchronized ( this.done ) {            
-            this.payload = payload;        
-            this.done = true;
-        }
-        notifyAll();        
+        this.payload = payload;
+        setDone(true);
     }
-    
-    public synchronized Payload getPayload() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+
+    public Payload getPayload() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means payload is available 
+        boolean done = waitTillDone(PAYLOAD_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve event payload");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve event payload" );
-        }
-        
+
         return payload;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetContentResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetContentResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetContentResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
@@ -7,29 +7,24 @@
 import org.drools.task.service.TaskClientHandler.GetContentResponseHandler;
 
 public class BlockingGetContentResponseHandler extends AbstractBlockingResponseHandler implements GetContentResponseHandler {
+    private static final int CONTENT_WAIT_TIME = 10000;
+
     private volatile Content content;
 
     public synchronized void execute(Content content) {
-        synchronized ( this.done ) {        
-            this.content = content;
-            this.done = true;
-            notifyAll();                
-        }
+        this.content = content;
+        setDone(true);
     }
-    
-    public synchronized Content getContent() {
-        if ( content == null ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notifiation
-            }
+
+    public Content getContent() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means content is available 
+        boolean done = waitTillDone(CONTENT_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Attachment Content");
         }
-        
-        if ( content == null ) {
-            throw new RuntimeException("Timeout : unable to retrieve Attachment Content" );
-        }
-        
+
         return content;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetTaskResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetTaskResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingGetTaskResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
@@ -7,29 +7,24 @@
 import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
 
 public class BlockingGetTaskResponseHandler extends AbstractBlockingResponseHandler implements GetTaskResponseHandler {
+    private static final int TASK_WAIT_TIME = 10000;
+
     private volatile Task task;
 
     public synchronized void execute(Task task) {
-        synchronized ( this.done ) {        
-            this.task = task;
-            this.done = true;
-            notifyAll();     
-        }
+        this.task = task;
+        setDone(true);
     }
-    
-    public synchronized Task getTask() {
-        if ( task == null ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notifiation
-            }
+
+    public Task getTask() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means task is available 
+        boolean done = waitTillDone(TASK_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Task");
         }
-        
-        if ( task == null ) {
-            throw new RuntimeException("Timeout : unable to retrieve Task Id" );
-        }
-        
+
         return task;
-    }       
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingSetContentResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingSetContentResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingSetContentResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,40 +1,29 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.SetDocumentResponseHandler;
 
 public class BlockingSetContentResponseHandler extends AbstractBlockingResponseHandler implements SetDocumentResponseHandler {
+    private static final int CONTENT_ID_WAIT_TIME = 10000;
+
     private volatile long contentId;
 
     public synchronized void execute(long contentId) {
-        synchronized ( this.done ) {        
-            this.contentId = contentId;
-            this.done = true;
-            notifyAll();
+        this.contentId = contentId;
+        setDone(true);
+    }
+
+    public long getContentId() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means contentId is available 
+        boolean done = waitTillDone(CONTENT_ID_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve Content Id");
         }
-    }    
-    
-    public synchronized long getContentId() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
-        }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve Content Id" );
-        }
-        
+
         return contentId;
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskOperationResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskOperationResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskOperationResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,14 +1,12 @@
 /**
- * 
+ *
  */
 package org.drools.task.service.responsehandlers;
 
 import org.drools.task.service.TaskClientHandler.TaskOperationResponseHandler;
 
 public class BlockingTaskOperationResponseHandler extends AbstractBlockingResponseHandler implements TaskOperationResponseHandler {
-      public void setIsDone(boolean done) {
-          synchronized ( this.done ) {
-            this.done = done;
-        }
-      }
+    public void setIsDone(boolean done) {
+        setDone(done);
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskSummaryResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskSummaryResponseHandler.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/BlockingTaskSummaryResponseHandler.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -1,43 +1,32 @@
 package org.drools.task.service.responsehandlers;
 
-import java.util.List;
-
 import org.drools.task.query.TaskSummary;
 import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
 
+import java.util.List;
+
 public class BlockingTaskSummaryResponseHandler extends AbstractBlockingResponseHandler implements TaskSummaryResponseHandler {
-	
-	private volatile List<TaskSummary> results;
 
-	public synchronized void execute(List<TaskSummary> results) {
-        synchronized ( this.done ) {        
-    		this.results = results;
-            this.done = true;
-            notifyAll(); 
-        }
-	}
+    private static final int RESULTS_WAIT_TIME = 10000;
 
-	public synchronized List<TaskSummary> getResults() {
-        boolean isDone;
-        synchronized ( done ) {
-            isDone = this.done;
+    private volatile List<TaskSummary> results;
+
+    public synchronized void execute(List<TaskSummary> results) {
+        this.results = results;
+        setDone(true);
+    }
+
+    public List<TaskSummary> getResults() {
+        // note that this method doesn't need to be synced because if waitTillDone returns true,
+        // it means results is available 
+        boolean done = waitTillDone(RESULTS_WAIT_TIME);
+
+        if (!done) {
+            throw new RuntimeException("Timeout : unable to retrieve results");
         }
-        if ( !isDone ) {                  
-            try {
-                wait( 10000 );
-            } catch ( InterruptedException e ) {
-                // swallow as this is just a notification
-            }
-        }        
-        synchronized ( done ) {
-            isDone = this.done;
-        }        
-        if ( !isDone ) {
-            throw new RuntimeException("Timeout : unable to retrieve results" );
-        }
-        
+
         return results;
-	}
+    }
 
-};
+}
 

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java	2009-03-13 16:03:43 UTC (rev 25640)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java	2009-03-13 16:29:23 UTC (rev 25641)
@@ -30,7 +30,8 @@
 import org.drools.task.service.TaskClientHandler;
 
 public class WSHumanTaskHandlerTest extends BaseTest {
-	
+    private static final int MANAGER_COMPLETION_WAIT_TIME = 5000;
+
     MinaTaskServer server;
     MinaTaskClient client;
     WSHumanTaskHandler handler;
@@ -38,15 +39,15 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        server = new MinaTaskServer( taskService );
-        Thread thread = new Thread( server );
+        server = new MinaTaskServer(taskService);
+        Thread thread = new Thread(server);
         thread.start();
-        Thread.sleep( 500 );
+        Thread.sleep(500);
         client = new MinaTaskClient("client 1", new TaskClientHandler());
-		NioSocketConnector connector = new NioSocketConnector();
-		SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
-		client.connect(connector, address);
-		handler = new WSHumanTaskHandler();
+        NioSocketConnector connector = new NioSocketConnector();
+        SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+        client.connect(connector, address);
+        handler = new WSHumanTaskHandler();
     }
 
     protected void tearDown() throws Exception {
@@ -55,412 +56,410 @@
         server.stop();
         super.tearDown();
     }
-    
-	public void testTask() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary task = tasks.get(0);
-		assertEquals("TaskName", task.getName());
-		assertEquals(10, task.getPriority());
-		assertEquals("Comment", task.getDescription());
-		assertEquals(Status.Reserved, task.getStatus());
-		assertEquals("Darth Vader", task.getActualOwner().getId());
-		
-		System.out.println("Starting task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started task " + task.getId());
-		
-		System.out.println("Completing task " + task.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
-		operationResponseHandler.waitTillDone(15000);
-		System.out.println("Completed task " + task.getId());
-		
-		assertTrue(manager.isCompleted());
-	}
-	
-	public void testTaskMultipleActors() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader, Dalai Lama");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary task = tasks.get(0);
-		assertEquals("TaskName", task.getName());
-		assertEquals(10, task.getPriority());
-		assertEquals("Comment", task.getDescription());
-		assertEquals(Status.Ready, task.getStatus());
-		
-		System.out.println("Claiming task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.claim(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Claimed task " + task.getId());
-		
-		System.out.println("Starting task " + task.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started task " + task.getId());
-		
-		System.out.println("Completing task " + task.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Completed task " + task.getId());
-		
-		assertTrue(manager.isCompleted());
-	}
-	
+
+    public void testTask() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        handler.executeWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary task = tasks.get(0);
+        assertEquals("TaskName", task.getName());
+        assertEquals(10, task.getPriority());
+        assertEquals("Comment", task.getDescription());
+        assertEquals(Status.Reserved, task.getStatus());
+        assertEquals("Darth Vader", task.getActualOwner().getId());
+
+        System.out.println("Starting task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started task " + task.getId());
+
+        System.out.println("Completing task " + task.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
+        operationResponseHandler.waitTillDone(15000);
+        System.out.println("Completed task " + task.getId());
+
+        assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+    }
+
+    public void testTaskMultipleActors() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader, Dalai Lama");
+        handler.executeWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary task = tasks.get(0);
+        assertEquals("TaskName", task.getName());
+        assertEquals(10, task.getPriority());
+        assertEquals("Comment", task.getDescription());
+        assertEquals(Status.Ready, task.getStatus());
+
+        System.out.println("Claiming task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.claim(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Claimed task " + task.getId());
+
+        System.out.println("Starting task " + task.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started task " + task.getId());
+
+        System.out.println("Completing task " + task.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.complete(task.getId(), "Darth Vader", null, operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Completed task " + task.getId());
+
+        assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+    }
+
     public void testTaskGroupActors() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("GroupId", "Crusaders");
-		handler.executeWorkItem(workItem, manager);
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("GroupId", "Crusaders");
+        handler.executeWorkItem(workItem, manager);
 
-		Thread.sleep(500);
+        Thread.sleep(500);
 
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner(null,"Crusaders", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary taskSummary = tasks.get(0);
-		assertEquals("TaskName", taskSummary.getName());
-		assertEquals(10, taskSummary.getPriority());
-		assertEquals("Comment", taskSummary.getDescription());
-		assertEquals(Status.Ready, taskSummary.getStatus());
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner(null, "Crusaders", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary taskSummary = tasks.get(0);
+        assertEquals("TaskName", taskSummary.getName());
+        assertEquals(10, taskSummary.getPriority());
+        assertEquals("Comment", taskSummary.getDescription());
+        assertEquals(Status.Ready, taskSummary.getStatus());
 
-		System.out.println("Claiming task " + taskSummary.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.claim(taskSummary.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Claimed task " + taskSummary.getId());
+        System.out.println("Claiming task " + taskSummary.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.claim(taskSummary.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Claimed task " + taskSummary.getId());
 
         //Check if the parent task is InProgress
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( taskSummary.getId(), getTaskResponseHandler );
+        client.getTask(taskSummary.getId(), getTaskResponseHandler);
         Task task = getTaskResponseHandler.getTask();
-        assertEquals(  Status.Ready, task.getTaskData().getStatus() );
-        
+        assertEquals(Status.Ready, task.getTaskData().getStatus());
 
 
-	}
+    }
 
     public void testTaskSingleAndGroupActors() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task One");
-		workItem.setParameter("TaskName", "TaskNameOne");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("GroupId", "Crusaders");
-		handler.executeWorkItem(workItem, manager);
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task One");
+        workItem.setParameter("TaskName", "TaskNameOne");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("GroupId", "Crusaders");
+        handler.executeWorkItem(workItem, manager);
 
-		Thread.sleep(500);
+        Thread.sleep(500);
 
 
-		workItem = new WorkItemImpl();
-		workItem.setName("Human Task Two");
-		workItem.setParameter("TaskName", "TaskNameTwo");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		handler.executeWorkItem(workItem, manager);
+        workItem = new WorkItemImpl();
+        workItem.setName("Human Task Two");
+        workItem.setParameter("TaskName", "TaskNameTwo");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        handler.executeWorkItem(workItem, manager);
 
-		Thread.sleep(500);
+        Thread.sleep(500);
 
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader","Crusaders", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(2, tasks.size());
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "Crusaders", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(2, tasks.size());
 
-	}
+    }
 
-	public void testTaskFail() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary task = tasks.get(0);
-		assertEquals("TaskName", task.getName());
-		assertEquals(10, task.getPriority());
-		assertEquals("Comment", task.getDescription());
-		assertEquals(Status.Reserved, task.getStatus());
-		assertEquals("Darth Vader", task.getActualOwner().getId());
-		
-		System.out.println("Starting task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started task " + task.getId());
-		
-		System.out.println("Failing task " + task.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.fail(task.getId(), "Darth Vader", null, operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Failed task " + task.getId());
-		
-		assertTrue(manager.isAborted());
-	}
-	
-	public void testTaskSkip() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary task = tasks.get(0);
-		assertEquals("TaskName", task.getName());
-		assertEquals(10, task.getPriority());
-		assertEquals("Comment", task.getDescription());
-		assertEquals(Status.Reserved, task.getStatus());
-		assertEquals("Darth Vader", task.getActualOwner().getId());
-		
-		System.out.println("Skipping task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.skip(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Skipped task " + task.getId());
-		
-		assertTrue(manager.isAborted());
-	}
-	
-	public void testTaskAbortSkippable() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		handler.abortWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(0, tasks.size());
-	}
-	
-	public void testTaskAbortNotSkippable() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		workItem.setParameter("Skippable", "false");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		
-		handler.abortWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-	}
-	
-	public void testTaskData() throws Exception {
-		TestWorkItemManager manager = new TestWorkItemManager();
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskName");
-		workItem.setParameter("Comment", "Comment");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
-		workItem.setParameter("Content", "This is the content");
-		handler.executeWorkItem(workItem, manager);
-		
-		Thread.sleep(500);
-		
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary taskSummary = tasks.get(0);
-		assertEquals("TaskName", taskSummary.getName());
-		assertEquals(10, taskSummary.getPriority());
-		assertEquals("Comment", taskSummary.getDescription());
-		assertEquals(Status.Reserved, taskSummary.getStatus());
-		assertEquals("Darth Vader", taskSummary.getActualOwner().getId());
-		
-		BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-		client.getTask(taskSummary.getId(), getTaskResponseHandler);
-		Task task = getTaskResponseHandler.getTask();
-		assertEquals(AccessType.Inline, task.getTaskData().getDocumentAccessType());
-		long contentId = task.getTaskData().getDocumentContentId();
-		assertTrue(contentId != -1);
-		BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
-		client.getContent(contentId, getContentResponseHandler);
-		ByteArrayInputStream bis = new ByteArrayInputStream(getContentResponseHandler.getContent().getContent());
-		ObjectInputStream in = new ObjectInputStream(bis);
-		Object data = in.readObject();
-		in.close();
-		assertEquals("This is the content", data);
-		
-		System.out.println("Starting task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started task " + task.getId());
-		
-		System.out.println("Completing task " + task.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		ContentData result = new ContentData();
-		result.setAccessType(AccessType.Inline);
-		result.setType("java.lang.String");
-		ByteArrayOutputStream bos = new ByteArrayOutputStream();
-		ObjectOutputStream out = new ObjectOutputStream(bos);
-		out.writeObject("This is the result");
-		out.close();
-		result.setContent(bos.toByteArray());
-		client.complete(task.getId(), "Darth Vader", result, operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Completed task " + task.getId());
-		
-		assertTrue(manager.isCompleted());
-		Map<String, Object> results = manager.getResults();
-		assertNotNull(results);
-		assertEquals("Darth Vader", results.get("ActorId"));
-		assertEquals("This is the result", results.get("Result"));
-	}
+    public void testTaskFail() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        handler.executeWorkItem(workItem, manager);
 
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary task = tasks.get(0);
+        assertEquals("TaskName", task.getName());
+        assertEquals(10, task.getPriority());
+        assertEquals("Comment", task.getDescription());
+        assertEquals(Status.Reserved, task.getStatus());
+        assertEquals("Darth Vader", task.getActualOwner().getId());
+
+        System.out.println("Starting task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started task " + task.getId());
+
+        System.out.println("Failing task " + task.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.fail(task.getId(), "Darth Vader", null, operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Failed task " + task.getId());
+
+        assertTrue(manager.isAborted());
+    }
+
+    public void testTaskSkip() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        handler.executeWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary task = tasks.get(0);
+        assertEquals("TaskName", task.getName());
+        assertEquals(10, task.getPriority());
+        assertEquals("Comment", task.getDescription());
+        assertEquals(Status.Reserved, task.getStatus());
+        assertEquals("Darth Vader", task.getActualOwner().getId());
+
+        System.out.println("Skipping task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.skip(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Skipped task " + task.getId());
+
+        assertTrue(manager.isAborted());
+    }
+
+    public void testTaskAbortSkippable() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        handler.executeWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        handler.abortWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(0, tasks.size());
+    }
+
+    public void testTaskAbortNotSkippable() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        workItem.setParameter("Skippable", "false");
+        handler.executeWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+
+        handler.abortWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+    }
+
+    public void testTaskData() throws Exception {
+        TestWorkItemManager manager = new TestWorkItemManager();
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskName");
+        workItem.setParameter("Comment", "Comment");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
+        workItem.setParameter("Content", "This is the content");
+        handler.executeWorkItem(workItem, manager);
+
+        Thread.sleep(500);
+
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary taskSummary = tasks.get(0);
+        assertEquals("TaskName", taskSummary.getName());
+        assertEquals(10, taskSummary.getPriority());
+        assertEquals("Comment", taskSummary.getDescription());
+        assertEquals(Status.Reserved, taskSummary.getStatus());
+        assertEquals("Darth Vader", taskSummary.getActualOwner().getId());
+
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+        client.getTask(taskSummary.getId(), getTaskResponseHandler);
+        Task task = getTaskResponseHandler.getTask();
+        assertEquals(AccessType.Inline, task.getTaskData().getDocumentAccessType());
+        long contentId = task.getTaskData().getDocumentContentId();
+        assertTrue(contentId != -1);
+        BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
+        client.getContent(contentId, getContentResponseHandler);
+        ByteArrayInputStream bis = new ByteArrayInputStream(getContentResponseHandler.getContent().getContent());
+        ObjectInputStream in = new ObjectInputStream(bis);
+        Object data = in.readObject();
+        in.close();
+        assertEquals("This is the content", data);
+
+        System.out.println("Starting task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started task " + task.getId());
+
+        System.out.println("Completing task " + task.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        ContentData result = new ContentData();
+        result.setAccessType(AccessType.Inline);
+        result.setType("java.lang.String");
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ObjectOutputStream out = new ObjectOutputStream(bos);
+        out.writeObject("This is the result");
+        out.close();
+        result.setContent(bos.toByteArray());
+        client.complete(task.getId(), "Darth Vader", result, operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Completed task " + task.getId());
+
+        assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+        Map<String, Object> results = manager.getResults();
+        assertNotNull(results);
+        assertEquals("Darth Vader", results.get("ActorId"));
+        assertEquals("This is the result", results.get("Result"));
+    }
+
     public void testOnAllSubTasksEndParentEndStrategy() throws Exception {
 
         TestWorkItemManager manager = new TestWorkItemManager();
         //Create the parent task
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskNameParent");
-		workItem.setParameter("Comment", "CommentParent");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskNameParent");
+        workItem.setParameter("Comment", "CommentParent");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
         //Set the subtask policy
         workItem.setParameter("SubTaskStrategies", "OnAllSubTasksEndParentEnd");
         handler.executeWorkItem(workItem, manager);
 
 
-		Thread.sleep(500);
+        Thread.sleep(500);
 
         //Test if the task is succesfully created
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary task = tasks.get(0);
-		assertEquals("TaskNameParent", task.getName());
-		assertEquals(10, task.getPriority());
-		assertEquals("CommentParent", task.getDescription());
-		assertEquals(Status.Reserved, task.getStatus());
-		assertEquals("Darth Vader", task.getActualOwner().getId());
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary task = tasks.get(0);
+        assertEquals("TaskNameParent", task.getName());
+        assertEquals(10, task.getPriority());
+        assertEquals("CommentParent", task.getDescription());
+        assertEquals(Status.Reserved, task.getStatus());
+        assertEquals("Darth Vader", task.getActualOwner().getId());
 
-
         //Create the child task
         workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskNameChild1");
-		workItem.setParameter("Comment", "CommentChild1");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskNameChild1");
+        workItem.setParameter("Comment", "CommentChild1");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
         workItem.setParameter("ParentId", task.getId());
-		handler.executeWorkItem(workItem, manager);
+        handler.executeWorkItem(workItem, manager);
 
         Thread.sleep(500);
 
         //Create the child task2
         workItem = new WorkItemImpl();
-		workItem.setName("Human Task2");
-		workItem.setParameter("TaskName", "TaskNameChild2");
-		workItem.setParameter("Comment", "CommentChild2");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
+        workItem.setName("Human Task2");
+        workItem.setParameter("TaskName", "TaskNameChild2");
+        workItem.setParameter("Comment", "CommentChild2");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
         workItem.setParameter("ParentId", task.getId());
-		handler.executeWorkItem(workItem, manager);
+        handler.executeWorkItem(workItem, manager);
 
         Thread.sleep(500);
 
         //Start the parent task
         System.out.println("Starting task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started task " + task.getId());
 
         //Check if the parent task is InProgress
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( task.getId(), getTaskResponseHandler );
+        client.getTask(task.getId(), getTaskResponseHandler);
         Task parentTask = getTaskResponseHandler.getTask();
-        assertEquals(  Status.InProgress, parentTask.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), parentTask.getTaskData().getActualOwner() );
+        assertEquals(Status.InProgress, parentTask.getTaskData().getStatus());
+        assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
 
         //Get all the subtask created for the parent task based on the potential owner
         responseHandler = new BlockingTaskSummaryResponseHandler();
-        client.getSubTasksAssignedAsPotentialOwner(parentTask.getId(),"Darth Vader", "en-UK", responseHandler);
+        client.getSubTasksAssignedAsPotentialOwner(parentTask.getId(), "Darth Vader", "en-UK", responseHandler);
         List<TaskSummary> subTasks = responseHandler.getResults();
         assertEquals(2, subTasks.size());
         TaskSummary subTaskSummary1 = subTasks.get(0);
@@ -470,154 +469,142 @@
 
         //Starting the sub task 1
         System.out.println("Starting sub task " + subTaskSummary1.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started sub task " + subTaskSummary1.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started sub task " + subTaskSummary1.getId());
 
         //Starting the sub task 2
         System.out.println("Starting sub task " + subTaskSummary2.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started sub task " + subTaskSummary2.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started sub task " + subTaskSummary2.getId());
 
-
-
         //Check if the child task 1 is InProgress
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTaskSummary1.getId(), getTaskResponseHandler );
+        client.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
         Task subTask1 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.InProgress, subTask1.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask1.getTaskData().getActualOwner() );
+        assertEquals(Status.InProgress, subTask1.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
 
-
-         //Check if the child task 2 is InProgress
+        //Check if the child task 2 is InProgress
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTaskSummary2.getId(), getTaskResponseHandler );
+        client.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
         Task subTask2 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.InProgress, subTask2.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask2.getTaskData().getActualOwner() );
+        assertEquals(Status.InProgress, subTask2.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
 
         // Complete the child task 1
         System.out.println("Completing sub task " + subTask1.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( subTask1.getId(),"Darth Vader" , null, operationResponseHandler );
-        operationResponseHandler.waitTillDone( 5000 );
+        client.complete(subTask1.getId(), "Darth Vader", null, operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
         System.out.println("Completed sub task " + subTask1.getId());
 
-         // Complete the child task 2
+        // Complete the child task 2
         System.out.println("Completing sub task " + subTask2.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
-        client.complete( subTask2.getId(),"Darth Vader" , null, operationResponseHandler );
-        operationResponseHandler.waitTillDone( 5000 );
+        client.complete(subTask2.getId(), "Darth Vader", null, operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
         System.out.println("Completed sub task " + subTask2.getId());
 
+        //Check if the child task 1 is Completed
 
-
-         //Check if the child task 1 is Completed
-
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTask1.getId(), getTaskResponseHandler );
+        client.getTask(subTask1.getId(), getTaskResponseHandler);
         subTask1 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.Completed, subTask1.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask1.getTaskData().getActualOwner() );
+        assertEquals(Status.Completed, subTask1.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
 
-          //Check if the child task 2 is Completed
+        //Check if the child task 2 is Completed
 
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTask2.getId(), getTaskResponseHandler );
+        client.getTask(subTask2.getId(), getTaskResponseHandler);
         subTask2 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.Completed, subTask2.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask2.getTaskData().getActualOwner() );
+        assertEquals(Status.Completed, subTask2.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
 
-
-
         // Check is the parent task is Complete
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( parentTask.getId(), getTaskResponseHandler );
+        client.getTask(parentTask.getId(), getTaskResponseHandler);
         parentTask = getTaskResponseHandler.getTask();
-        assertEquals(  Status.Completed, parentTask.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), parentTask.getTaskData().getActualOwner() );
+        assertEquals(Status.Completed, parentTask.getTaskData().getStatus());
+        assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
 
+        assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+    }
 
+    public void testOnParentAbortAllSubTasksEndStrategy() throws Exception {
 
-
-
-        assertTrue(manager.isCompleted());
-	}
-
-        public void testOnParentAbortAllSubTasksEndStrategy() throws Exception {
-
         TestWorkItemManager manager = new TestWorkItemManager();
         //Create the parent task
-		WorkItemImpl workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskNameParent");
-		workItem.setParameter("Comment", "CommentParent");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
+        WorkItemImpl workItem = new WorkItemImpl();
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskNameParent");
+        workItem.setParameter("Comment", "CommentParent");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
         //Set the subtask policy
         workItem.setParameter("SubTaskStrategies", "OnParentAbortAllSubTasksEnd");
         handler.executeWorkItem(workItem, manager);
 
 
-		Thread.sleep(500);
+        Thread.sleep(500);
 
         //Test if the task is succesfully created
-		BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
-		client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
-		List<TaskSummary> tasks = responseHandler.getResults();
-		assertEquals(1, tasks.size());
-		TaskSummary task = tasks.get(0);
-		assertEquals("TaskNameParent", task.getName());
-		assertEquals(10, task.getPriority());
-		assertEquals("CommentParent", task.getDescription());
-		assertEquals(Status.Reserved, task.getStatus());
-		assertEquals("Darth Vader", task.getActualOwner().getId());
+        BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+        client.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK", responseHandler);
+        List<TaskSummary> tasks = responseHandler.getResults();
+        assertEquals(1, tasks.size());
+        TaskSummary task = tasks.get(0);
+        assertEquals("TaskNameParent", task.getName());
+        assertEquals(10, task.getPriority());
+        assertEquals("CommentParent", task.getDescription());
+        assertEquals(Status.Reserved, task.getStatus());
+        assertEquals("Darth Vader", task.getActualOwner().getId());
 
-
         //Create the child task
         workItem = new WorkItemImpl();
-		workItem.setName("Human Task");
-		workItem.setParameter("TaskName", "TaskNameChild1");
-		workItem.setParameter("Comment", "CommentChild1");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
+        workItem.setName("Human Task");
+        workItem.setParameter("TaskName", "TaskNameChild1");
+        workItem.setParameter("Comment", "CommentChild1");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
         workItem.setParameter("ParentId", task.getId());
-		handler.executeWorkItem(workItem, manager);
+        handler.executeWorkItem(workItem, manager);
 
         Thread.sleep(500);
 
         //Create the child task2
         workItem = new WorkItemImpl();
-		workItem.setName("Human Task2");
-		workItem.setParameter("TaskName", "TaskNameChild2");
-		workItem.setParameter("Comment", "CommentChild2");
-		workItem.setParameter("Priority", "10");
-		workItem.setParameter("ActorId", "Darth Vader");
+        workItem.setName("Human Task2");
+        workItem.setParameter("TaskName", "TaskNameChild2");
+        workItem.setParameter("Comment", "CommentChild2");
+        workItem.setParameter("Priority", "10");
+        workItem.setParameter("ActorId", "Darth Vader");
         workItem.setParameter("ParentId", task.getId());
-		handler.executeWorkItem(workItem, manager);
+        handler.executeWorkItem(workItem, manager);
 
         Thread.sleep(500);
 
         //Start the parent task
         System.out.println("Starting task " + task.getId());
-		BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(task.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started task " + task.getId());
+        BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(task.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started task " + task.getId());
 
         //Check if the parent task is InProgress
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( task.getId(), getTaskResponseHandler );
+        client.getTask(task.getId(), getTaskResponseHandler);
         Task parentTask = getTaskResponseHandler.getTask();
-        assertEquals(  Status.InProgress, parentTask.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), parentTask.getTaskData().getActualOwner() );
+        assertEquals(Status.InProgress, parentTask.getTaskData().getStatus());
+        assertEquals(users.get("darth"), parentTask.getTaskData().getActualOwner());
 
         //Get all the subtask created for the parent task based on the potential owner
         responseHandler = new BlockingTaskSummaryResponseHandler();
-        client.getSubTasksAssignedAsPotentialOwner(parentTask.getId(),"Darth Vader", "en-UK", responseHandler);
+        client.getSubTasksAssignedAsPotentialOwner(parentTask.getId(), "Darth Vader", "en-UK", responseHandler);
         List<TaskSummary> subTasks = responseHandler.getResults();
         assertEquals(2, subTasks.size());
         TaskSummary subTaskSummary1 = subTasks.get(0);
@@ -627,113 +614,118 @@
 
         //Starting the sub task 1
         System.out.println("Starting sub task " + subTaskSummary1.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started sub task " + subTaskSummary1.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started sub task " + subTaskSummary1.getId());
 
         //Starting the sub task 2
         System.out.println("Starting sub task " + subTaskSummary2.getId());
-		operationResponseHandler = new BlockingTaskOperationResponseHandler();
-		client.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
-		operationResponseHandler.waitTillDone(5000);
-		System.out.println("Started sub task " + subTaskSummary2.getId());
+        operationResponseHandler = new BlockingTaskOperationResponseHandler();
+        client.start(subTaskSummary2.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
+        System.out.println("Started sub task " + subTaskSummary2.getId());
 
-
-
         //Check if the child task 1 is InProgress
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTaskSummary1.getId(), getTaskResponseHandler );
+        client.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
         Task subTask1 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.InProgress, subTask1.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask1.getTaskData().getActualOwner() );
+        assertEquals(Status.InProgress, subTask1.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
 
-
-         //Check if the child task 2 is InProgress
+        //Check if the child task 2 is InProgress
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTaskSummary2.getId(), getTaskResponseHandler );
+        client.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
         Task subTask2 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.InProgress, subTask2.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask2.getTaskData().getActualOwner() );
+        assertEquals(Status.InProgress, subTask2.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
 
         // Complete the parent task
         System.out.println("Completing parent task " + parentTask.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
-        client.skip( parentTask.getId(), "Darth Vader", operationResponseHandler );
-        operationResponseHandler.waitTillDone( 5000 );
+        client.skip(parentTask.getId(), "Darth Vader", operationResponseHandler);
+        operationResponseHandler.waitTillDone(5000);
         System.out.println("Completed parent task " + parentTask.getId());
 
-
-
-
         //Check if the child task 1 is Completed
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTaskSummary1.getId(), getTaskResponseHandler );
+        client.getTask(subTaskSummary1.getId(), getTaskResponseHandler);
         subTask1 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.Completed, subTask1.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask1.getTaskData().getActualOwner() );
+        assertEquals(Status.Completed, subTask1.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask1.getTaskData().getActualOwner());
 
-
-         //Check if the child task 2 is Completed
+        //Check if the child task 2 is Completed
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();
-        client.getTask( subTaskSummary2.getId(), getTaskResponseHandler );
+        client.getTask(subTaskSummary2.getId(), getTaskResponseHandler);
         subTask2 = getTaskResponseHandler.getTask();
-        assertEquals(  Status.Completed, subTask2.getTaskData().getStatus() );
-        assertEquals( users.get( "darth" ), subTask2.getTaskData().getActualOwner() );
+        assertEquals(Status.Completed, subTask2.getTaskData().getStatus());
+        assertEquals(users.get("darth"), subTask2.getTaskData().getActualOwner());
 
+        assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
+    }
 
+    private class TestWorkItemManager implements WorkItemManager {
 
-        assertTrue(manager.isCompleted());
-	}
+        private volatile boolean completed;
+        private volatile boolean aborted;
+        private volatile Map<String, Object> results;
 
+        public synchronized boolean waitTillCompleted(long time) {
+            if (!isCompleted()) {
+                try {
+                    wait(time);
+                } catch (InterruptedException e) {
+                    // swallow and return state of completed
+                }
+            }
 
+            return isCompleted();
+        }
 
-	private class TestWorkItemManager implements WorkItemManager  {
-		
-		private boolean completed;
-		private boolean aborted;
-		private Map<String, Object> results;
-		
-		public void abortWorkItem(long id) {
-			aborted = true;
-		}
-		
-		public boolean isAborted() {
-			return aborted;
-		}
+        public void abortWorkItem(long id) {
+            aborted = true;
+        }
 
-		public void completeWorkItem(long id, Map<String, Object> results) {
-			completed = true;
-			this.results = results;
-		}
-		
-		public boolean isCompleted() {
-			return completed;
-		}
+        public boolean isAborted() {
+            return aborted;
+        }
 
-		public WorkItem getWorkItem(long id) {
-			return null;
-		}
+        public void completeWorkItem(long id, Map<String, Object> results) {
+            this.results = results;
+            setCompleted(true);
+        }
 
-		public Set<WorkItem> getWorkItems() {
-			return null;
-		}
-		
-		public Map<String, Object> getResults() {
-			return results;
-		}
+        private synchronized void setCompleted(boolean completed) {
+            this.completed = completed;
+        }
 
-		public void internalAbortWorkItem(long id) {
-		}
+        public synchronized boolean isCompleted() {
+            return completed;
+        }
 
-		public void internalAddWorkItem(WorkItem workItem) {
-		}
+        public WorkItem getWorkItem(long id) {
+            return null;
+        }
 
-		public void internalExecuteWorkItem(WorkItem workItem) {
-		}
+        public Set<WorkItem> getWorkItems() {
+            return null;
+        }
 
-		public void registerWorkItemHandler(String workItemName, WorkItemHandler handler) {
-		}
-		
-	}
+        public Map<String, Object> getResults() {
+            return results;
+        }
+
+        public void internalAbortWorkItem(long id) {
+        }
+
+        public void internalAddWorkItem(WorkItem workItem) {
+        }
+
+        public void internalExecuteWorkItem(WorkItem workItem) {
+        }
+
+        public void registerWorkItemHandler(String workItemName, WorkItemHandler handler) {
+        }
+
+    }
 }




More information about the jboss-svn-commits mailing list