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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Apr 11 21:00:16 EDT 2009


Author: stampy88
Date: 2009-04-11 21:00:16 -0400 (Sat, 11 Apr 2009)
New Revision: 26018

Added:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBaseResponseHandler.java
Removed:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java
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/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/process/workitem/wsht/WSHumanTaskHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/BaseMinaHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.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/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java
Log:
Propagated exceptions back to client

Deleted: 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-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/AbstractBlockingResponseHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -1,54 +0,0 @@
-/**
- *
- */
-package org.drools.process.workitem.wsht;
-
-import org.drools.task.service.BaseMinaHandler.ResponseHandler;
-
-public abstract class AbstractBlockingResponseHandler implements ResponseHandler {
-
-    private volatile boolean done;
-    private String error;
-
-    public boolean hasError() {
-        return error != null;
-    }
-
-    public String getError() {
-        return error;
-    }
-
-    public void setError(String error) {
-        this.error = error;
-    }
-
-    public synchronized boolean isDone() {
-        return done;
-    }
-
-    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
-            }
-        }
-
-        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-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingAddTaskResponseHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -4,6 +4,7 @@
 package org.drools.process.workitem.wsht;
 
 import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
+import org.drools.task.service.responsehandlers.AbstractBlockingResponseHandler;
 
 public class BlockingAddTaskResponseHandler extends AbstractBlockingResponseHandler implements AddTaskResponseHandler {
     private static final int DEFAULT_WAIT_TIME = 10000;

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-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingEventResponseHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -5,6 +5,7 @@
 
 import org.drools.eventmessaging.EventResponseHandler;
 import org.drools.eventmessaging.Payload;
+import org.drools.task.service.responsehandlers.AbstractBlockingResponseHandler;
 
 public class BlockingEventResponseHandler extends AbstractBlockingResponseHandler implements EventResponseHandler {
     // todo why is this timeout different from the others?? - also, if this should be the same

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-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/BlockingGetTaskResponseHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -5,6 +5,7 @@
 
 import org.drools.task.Task;
 import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
+import org.drools.task.service.responsehandlers.AbstractBlockingResponseHandler;
 
 public class BlockingGetTaskResponseHandler extends AbstractBlockingResponseHandler implements GetTaskResponseHandler {
     private static final int DEFAULT_WAIT_TIME = 10000;

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java	2009-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -1,49 +1,31 @@
 package org.drools.process.workitem.wsht;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
 import org.drools.eventmessaging.EventKey;
 import org.drools.eventmessaging.EventResponseHandler;
 import org.drools.eventmessaging.Payload;
 import org.drools.runtime.process.WorkItem;
 import org.drools.runtime.process.WorkItemHandler;
 import org.drools.runtime.process.WorkItemManager;
-import org.drools.task.AccessType;
-import org.drools.task.Content;
-import org.drools.task.Group;
-import org.drools.task.I18NText;
-import org.drools.task.OnParentAbortAllSubTasksEndStrategy;
-import org.drools.task.OrganizationalEntity;
-import org.drools.task.PeopleAssignments;
-import org.drools.task.SubTasksStrategy;
-import org.drools.task.SubTasksStrategyFactory;
-import org.drools.task.Task;
-import org.drools.task.TaskData;
-import org.drools.task.User;
-import org.drools.task.event.TaskCompletedEvent;
-import org.drools.task.event.TaskEvent;
-import org.drools.task.event.TaskEventKey;
-import org.drools.task.event.TaskFailedEvent;
-import org.drools.task.event.TaskSkippedEvent;
+import org.drools.task.*;
+import org.drools.task.event.*;
 import org.drools.task.service.ContentData;
 import org.drools.task.service.MinaTaskClient;
 import org.drools.task.service.TaskClientHandler;
+import org.drools.task.service.responsehandlers.AbstractBaseResponseHandler;
 import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
 import org.drools.task.service.TaskClientHandler.GetContentResponseHandler;
 import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
-import org.drools.SystemEventListenerFactory;
 
+import java.io.*;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 public class WSHumanTaskHandler implements WorkItemHandler {
 
 	private String ipAddress = "127.0.0.1";
@@ -198,8 +180,7 @@
 		}
 	}
 	
-    public static class TaskWorkItemAddTaskResponseHandler implements AddTaskResponseHandler {
-        private volatile String error;
+    public static class TaskWorkItemAddTaskResponseHandler extends AbstractBaseResponseHandler implements AddTaskResponseHandler {
         private Map<Long, WorkItemManager> managers;
         private Map<Long, Long> idMapping;
         private WorkItemManager manager;
@@ -234,19 +215,9 @@
             key = new TaskEventKey(TaskSkippedEvent.class, taskId );           
             client.registerForEvent( key, true, eventResponseHandler );
         }
-
-        public void setError(String error) {
-            this.error = error;
-        }
-        
-        public String getError() {
-            return this.error;
-        }       
     }
     
-    private static class TaskCompletedHandler implements EventResponseHandler {
-        private volatile String error;
-        
+    private static class TaskCompletedHandler extends AbstractBaseResponseHandler implements EventResponseHandler {
         private long workItemId;
         private long taskId;
         private Map<Long, WorkItemManager> managers;
@@ -264,7 +235,7 @@
             TaskEvent event = ( TaskEvent ) payload.get();
         	if ( event.getTaskId() != taskId ) {
                 // defensive check that should never happen, just here for testing                
-                this.error = "Expected task id and arrived task id do not march";
+                setError(new IllegalStateException("Expected task id and arrived task id do not march"));
                 return;
             }
         	if (event instanceof TaskCompletedEvent) {
@@ -285,20 +256,11 @@
 		        }
         	}
         }
-
-        public void setError(String error) {
-            this.error = error;
-        }
-        
-        public String getError() {
-            return this.error;
-        }
     }
     
-    private static class GetCompletedTaskResponseHandler implements GetTaskResponseHandler {
+    private static class GetCompletedTaskResponseHandler extends AbstractBaseResponseHandler implements GetTaskResponseHandler {
 
     	private WorkItemManager manager;
-    	private String error;
     	private MinaTaskClient client;
     	
     	public GetCompletedTaskResponseHandler(WorkItemManager manager, MinaTaskClient client) {
@@ -320,23 +282,14 @@
 				manager.completeWorkItem(workItemId, results);
 			}
 		}
-
-		public void setError(String error) {
-            this.error = error;
-        }
-        
-        public String getError() {
-            return this.error;
-        }
     }
     
-    private static class GetResultContentResponseHandler implements GetContentResponseHandler {
+    private static class GetResultContentResponseHandler extends AbstractBaseResponseHandler implements GetContentResponseHandler {
 
     	private WorkItemManager manager;
     	private Task task;
     	private Map<String, Object> results;
-    	private String error;
-    	
+
     	public GetResultContentResponseHandler(WorkItemManager manager, Task task, Map<String, Object> results) {
     		this.manager = manager;
     		this.task = task;
@@ -358,14 +311,5 @@
 				e.printStackTrace();
 			}
 		}
-
-		public void setError(String error) {
-            this.error = error;
-        }
-        
-        public String getError() {
-            return this.error;
-        }
     }
-
 }

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/BaseMinaHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/BaseMinaHandler.java	2009-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/BaseMinaHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -18,6 +18,6 @@
     }
     
     public static interface ResponseHandler {
-        public void setError(String error);
+        public void setError(RuntimeException error);
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java	2009-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -1,16 +1,16 @@
 package org.drools.task.service;
 
-import java.util.List;
-import java.util.Arrays;
-
 import org.apache.mina.core.session.IoSession;
+import org.drools.SystemEventListener;
 import org.drools.eventmessaging.EventResponseHandler;
 import org.drools.eventmessaging.Payload;
 import org.drools.task.Content;
 import org.drools.task.Task;
 import org.drools.task.query.TaskSummary;
-import org.drools.SystemEventListener;
 
+import java.util.Arrays;
+import java.util.List;
+
 public class TaskClientHandler extends BaseMinaHandler {
     private MinaTaskClient client;
 
@@ -49,8 +49,8 @@
             case OperationResponse: {
                 TaskOperationResponseHandler responseHandler = (TaskOperationResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.setIsDone(true);
                     }
@@ -61,8 +61,8 @@
                 Task task = (Task) cmd.getArguments().get(0);
                 GetTaskResponseHandler responseHandler = (GetTaskResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {                    
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(task);
                     }
@@ -73,8 +73,8 @@
                 long taskId = (Long) cmd.getArguments().get(0);
                 AddTaskResponseHandler responseHandler = (AddTaskResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(taskId);
                     }
@@ -85,8 +85,8 @@
                 long commentId = (Long) cmd.getArguments().get(0);
                 AddCommentResponseHandler responseHandler = (AddCommentResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(commentId);
                     }
@@ -96,8 +96,8 @@
             case DeleteCommentResponse: {
                 DeleteCommentResponseHandler responseHandler = (DeleteCommentResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.setIsDone(true);
                     }
@@ -109,8 +109,8 @@
                 long contentId = (Long) cmd.getArguments().get(1);
                 AddAttachmentResponseHandler responseHandler = (AddAttachmentResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(attachmentId,
                                 contentId);
@@ -121,8 +121,8 @@
             case DeleteAttachmentResponse: {
                 DeleteAttachmentResponseHandler responseHandler = (DeleteAttachmentResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.setIsDone(true);
                     }
@@ -133,8 +133,8 @@
                 Content content = (Content) cmd.getArguments().get(0);
                 GetContentResponseHandler responseHandler = (GetContentResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(content);
                     }
@@ -145,8 +145,8 @@
                 long contentId = (Long) cmd.getArguments().get(0);
                 SetDocumentResponseHandler responseHandler = (SetDocumentResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(contentId);
                     }
@@ -157,8 +157,8 @@
                 List<TaskSummary> results = (List<TaskSummary>) cmd.getArguments().get(0);
                 TaskSummaryResponseHandler responseHandler = (TaskSummaryResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(results);
                     }
@@ -169,8 +169,8 @@
                 Payload payload = (Payload) cmd.getArguments().get(0);
                 EventResponseHandler responseHandler = (EventResponseHandler) responseHandlers.remove(cmd.getId());
                 if (responseHandler != null) {
-                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof TaskError) {
-                        responseHandler.setError(((TaskError) cmd.getArguments().get(0)).getMessage());
+                    if (!cmd.getArguments().isEmpty() && cmd.getArguments().get(0) instanceof RuntimeException) {
+                        responseHandler.setError((RuntimeException) cmd.getArguments().get(0));
                     } else {
                         responseHandler.execute(payload);
                     }

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2009-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -340,12 +340,11 @@
                     systemEventListener.debug("Unknown command recieved on server");
                 }
             }
-        } catch (Throwable e) {
+        } catch (RuntimeException e) {
             systemEventListener.exception(e.getMessage(),e);
 
-            TaskError error = new TaskError(e.getMessage());
             List<Object> list = new ArrayList<Object>(1);
-            list.add(error);
+            list.add(e);
             Command resultsCmnd = new Command(cmd.getId(), response, list);
             session.write(resultsCmnd);
         } finally {

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBaseResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBaseResponseHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBaseResponseHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -0,0 +1,66 @@
+package org.drools.task.service.responsehandlers;
+
+import org.drools.task.service.BaseMinaHandler;
+
+import java.lang.reflect.Constructor;
+
+/**
+ * Abstract base class for client ResponseHandlers. Provides synchonized access to <field>done</field> which represents
+ * if the response is completed. Also has an <field>error</field> which will be set when there is a problem with
+ * a response. Users of this class should check to see if the response completed successfully, via
+ * the <method>isDone</method> and the <method>hasError</method>.
+ * <p/>
+ * Please note that the <field>error</field> is actually the Exception that occured on the server while
+ * processing the request.
+ *
+ * @author <a href="mailto:stampy88 at yahoo.com">dave sinclair</a>
+ */
+public abstract class AbstractBaseResponseHandler implements BaseMinaHandler.ResponseHandler {
+    private volatile boolean done;
+    private RuntimeException error;
+
+    public synchronized boolean hasError() {
+        return error != null;
+    }
+
+    public synchronized RuntimeException getError() {
+        return error;
+    }
+
+    public synchronized void setError(RuntimeException error) {
+        this.error = error;
+        notifyAll();
+    }
+
+    public synchronized boolean isDone() {
+        return done;
+    }
+
+    protected synchronized void setDone(boolean done) {
+        this.done = done;
+        notifyAll();
+    }
+
+    /**
+     * This method will take the specified serverSideException, and create a new one for the client based
+     * on the serverSideException. This is done so a proper stack trace can be made for the client, as opposed
+     * to seeing the server side stack.
+     *
+     * @param serverSideException exception used to create client side exception
+     * @return client side exception
+     */
+    protected static RuntimeException createSideException(RuntimeException serverSideException) {
+        RuntimeException clientSideException;
+
+        try {
+            Constructor<? extends RuntimeException> constructor = serverSideException.getClass().getConstructor(String.class);
+
+            clientSideException = constructor.newInstance(serverSideException.getMessage());
+        } catch (Exception e) {
+            // this should never happen - if it does, it is a programming error
+            throw new RuntimeException("Could not create client side exception", e);
+        }
+
+        return clientSideException;
+    }
+}

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-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/responsehandlers/AbstractBlockingResponseHandler.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -3,43 +3,20 @@
  */
 package org.drools.task.service.responsehandlers;
 
-import org.drools.task.service.BaseMinaHandler.ResponseHandler;
+public abstract class AbstractBlockingResponseHandler extends AbstractBaseResponseHandler {
 
-// 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;
-    }
-
-    public String getError() {
-        return error;
-    }
-
-    public void setError(String error) {
-        this.error = error;
-    }
-
-    public synchronized boolean isDone() {
-        return done;
-    }
-
-    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
+     * reponse was completed in time, false otherwise. If an error occurs, this method will throw
+     * a subclass of <code>RuntimeException</code> specific to the error.
      *
      * @param time max time to wait
      * @return true if response is available, false otherwise
+     *
+     * @see org.drools.task.service.PermissionDeniedException
+     * @see org.drools.task.service.CannotAddTaskException
+     * @see javax.persistence.PersistenceException
      */
     public synchronized boolean waitTillDone(long time) {
 
@@ -51,6 +28,10 @@
             }
         }
 
+        if(hasError()) {            
+            throw createSideException(getError());
+        }
+
         return isDone();
     }
 }
\ No newline at end of file

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-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/process/workitem/wsht/WSHumanTaskHandlerTest.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -1,6 +1,7 @@
 package org.drools.process.workitem.wsht;
 
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
 import org.drools.process.instance.impl.WorkItemImpl;
 import org.drools.runtime.process.WorkItem;
 import org.drools.runtime.process.WorkItemHandler;
@@ -10,15 +11,11 @@
 import org.drools.task.Status;
 import org.drools.task.Task;
 import org.drools.task.query.TaskSummary;
-import org.drools.task.service.ContentData;
-import org.drools.task.service.MinaTaskClient;
-import org.drools.task.service.MinaTaskServer;
-import org.drools.task.service.TaskClientHandler;
+import org.drools.task.service.*;
 import org.drools.task.service.responsehandlers.BlockingGetContentResponseHandler;
 import org.drools.task.service.responsehandlers.BlockingGetTaskResponseHandler;
 import org.drools.task.service.responsehandlers.BlockingTaskOperationResponseHandler;
 import org.drools.task.service.responsehandlers.BlockingTaskSummaryResponseHandler;
-import org.drools.SystemEventListenerFactory;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -31,8 +28,9 @@
 import java.util.Set;
 
 public class WSHumanTaskHandlerTest extends BaseTest {
-    private static final int MANAGER_COMPLETION_WAIT_TIME = 5000;
-    private static final int MANAGER_ABORT_WAIT_TIME = 5000;
+    private static final int DEFAULT_WAIT_TIME = 5000;
+    private static final int MANAGER_COMPLETION_WAIT_TIME = DEFAULT_WAIT_TIME;
+    private static final int MANAGER_ABORT_WAIT_TIME = DEFAULT_WAIT_TIME;
 
     MinaTaskServer server;
     MinaTaskClient client;
@@ -85,7 +83,7 @@
         System.out.println("Starting task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Started task " + task.getId());
 
         System.out.println("Completing task " + task.getId());
@@ -122,19 +120,19 @@
         System.out.println("Claiming task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.claim(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         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);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         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);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Completed task " + task.getId());
 
         assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
@@ -165,7 +163,14 @@
         System.out.println("Claiming task " + taskSummary.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.claim(taskSummary.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        PermissionDeniedException denied = null;
+        try {
+            operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch (PermissionDeniedException e) {
+            denied = e;
+        }
+
+        assertNotNull("Should get permissed denied exception", denied);
         System.out.println("Claimed task " + taskSummary.getId());
 
         //Check if the parent task is InProgress
@@ -229,13 +234,13 @@
         System.out.println("Starting task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         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);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Failed task " + task.getId());
 
         assertTrue(manager.waitTillAborted(MANAGER_ABORT_WAIT_TIME));
@@ -267,7 +272,7 @@
         System.out.println("Skipping task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.skip(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Skipped task " + task.getId());
 
         assertTrue(manager.waitTillAborted(MANAGER_ABORT_WAIT_TIME));
@@ -364,7 +369,7 @@
         System.out.println("Starting task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Started task " + task.getId());
 
         System.out.println("Completing task " + task.getId());
@@ -378,7 +383,7 @@
         out.close();
         result.setContent(bos.toByteArray());
         client.complete(task.getId(), "Darth Vader", result, operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Completed task " + task.getId());
 
         assertTrue(manager.waitTillCompleted(MANAGER_COMPLETION_WAIT_TIME));
@@ -445,7 +450,7 @@
         System.out.println("Starting task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Started task " + task.getId());
 
         //Check if the parent task is InProgress
@@ -469,14 +474,14 @@
         System.out.println("Starting sub task " + subTaskSummary1.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         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);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Started sub task " + subTaskSummary2.getId());
 
         //Check if the child task 1 is InProgress
@@ -497,14 +502,14 @@
         System.out.println("Completing sub task " + subTask1.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.complete(subTask1.getId(), "Darth Vader", null, operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Completed sub task " + subTask1.getId());
 
         // 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);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Completed sub task " + subTask2.getId());
 
         //Check if the child task 1 is Completed
@@ -590,7 +595,7 @@
         System.out.println("Starting task " + task.getId());
         BlockingTaskOperationResponseHandler operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(task.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Started task " + task.getId());
 
         //Check if the parent task is InProgress
@@ -614,14 +619,14 @@
         System.out.println("Starting sub task " + subTaskSummary1.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.start(subTaskSummary1.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         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);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Started sub task " + subTaskSummary2.getId());
 
         //Check if the child task 1 is InProgress
@@ -642,7 +647,7 @@
         System.out.println("Completing parent task " + parentTask.getId());
         operationResponseHandler = new BlockingTaskOperationResponseHandler();
         client.skip(parentTask.getId(), "Darth Vader", operationResponseHandler);
-        operationResponseHandler.waitTillDone(5000);
+        operationResponseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         System.out.println("Completed parent task " + parentTask.getId());
 
         //Check if the child task 1 is Completed
@@ -668,7 +673,7 @@
         private volatile boolean aborted;
         private volatile Map<String, Object> results;
 
-        public synchronized boolean waitTillCompleted(long time) {            
+        public synchronized boolean waitTillCompleted(long time) {
             if (!isCompleted()) {
                 try {
                     wait(time);
@@ -678,7 +683,7 @@
             }
 
             return isCompleted();
-        }       
+        }
 
         public synchronized boolean waitTillAborted(long time) {
             if (!isAborted()) {

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2009-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -22,6 +22,7 @@
 public class TaskServiceLifeCycleTest extends BaseTest {
     MinaTaskServer server;
     MinaTaskClient client;
+    private static final int DEFAULT_WAIT_TIME = 5000;
 
     @Override
     protected void setUp() throws Exception {
@@ -156,7 +157,7 @@
         
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );        
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
@@ -191,7 +192,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
@@ -226,7 +227,15 @@
         // State should not change as user isn't potential owner
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "tony" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+
+        PermissionDeniedException denied = null;
+        try {
+            responseHandler.waitTillDone( DEFAULT_WAIT_TIME );
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
@@ -262,7 +271,7 @@
         // Should change to InProgress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "bobba" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
@@ -298,7 +307,15 @@
         // Should change not change
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "tony" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch (PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
+
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
         client.getTask( taskId, getTaskResponseHandler );
@@ -336,7 +353,7 @@
         // Now Stop
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.stop( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -365,7 +382,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -376,7 +393,13 @@
         // Should not stop
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.stop( taskId, users.get( "bobba" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -405,7 +428,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -416,7 +439,7 @@
         // Check is Released
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.release( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -445,7 +468,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -456,7 +479,7 @@
         // Check is Released
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.release( taskId, users.get( "darth" ).getId(), responseHandler );  
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -485,7 +508,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -496,7 +519,13 @@
         // Check is not changed
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.release( taskId, users.get( "bobba" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -532,7 +561,7 @@
         // Check is Suspended
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.suspend( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -562,7 +591,7 @@
         // Check is Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );   
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -573,7 +602,7 @@
         // Check is Suspended
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.suspend( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -603,7 +632,7 @@
         // Check is Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -614,7 +643,13 @@
         // Check is not changed
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.suspend( taskId, users.get( "bobba" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -650,7 +685,7 @@
         // Check is Suspended
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.suspend( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -662,7 +697,7 @@
         // Check is Resumed
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.resume( taskId, users.get( "darth" ).getId(), responseHandler );   
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -692,7 +727,7 @@
         // Check is Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -703,7 +738,7 @@
         // Check is suspended
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.suspend( taskId, users.get( "darth" ).getId(), responseHandler );        
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -715,7 +750,7 @@
         // Check is Resumed
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.resume( taskId, users.get( "darth" ).getId(), responseHandler ); 
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -745,7 +780,7 @@
         // Check is Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -756,7 +791,13 @@
         // Check not changed
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.suspend( taskId, users.get( "bobba" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -784,7 +825,7 @@
         // Check is Complete
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.skip( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -812,12 +853,12 @@
         // Go straight from Ready 
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         // Check is Complete
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.skip( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -845,7 +886,7 @@
         // Check is Delegated
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.delegate( taskId, users.get( "darth" ).getId(), users.get( "tony" ).getId(), responseHandler );    
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );        
@@ -876,7 +917,7 @@
         // Claim and Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -887,7 +928,7 @@
         // Check is Delegated
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.delegate( taskId, users.get( "darth" ).getId(), users.get( "tony" ).getId(), responseHandler );    
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );        
@@ -917,7 +958,7 @@
         // Claim and Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -928,7 +969,13 @@
         // Check was not delegated
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.delegate( taskId, users.get( "bobba" ).getId(), users.get( "tony" ).getId(), responseHandler );    
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );        
@@ -959,7 +1006,7 @@
         // Check is Forwarded
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.forward( taskId, users.get( "darth" ).getId(), users.get( "tony" ).getId(), responseHandler );    
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );        
@@ -990,7 +1037,7 @@
         // Claim and Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1001,7 +1048,7 @@
         // Check is Delegated
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.forward( taskId, users.get( "darth" ).getId(), users.get( "tony" ).getId(), responseHandler );    
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );        
@@ -1032,7 +1079,7 @@
         // Claim and Reserved
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.claim( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1043,7 +1090,13 @@
         // Check was not delegated
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.forward( taskId, users.get( "bobba" ).getId(), users.get( "tony" ).getId(), responseHandler );    
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );        
@@ -1074,7 +1127,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1085,7 +1138,7 @@
         // Check is Complete
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.complete( taskId, users.get( "darth" ).getId(), null, responseHandler ); 
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1114,7 +1167,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );        
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1125,7 +1178,13 @@
         // Should not complete as wrong user
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.complete( taskId, users.get( "bobba" ).getId(), null, responseHandler );  
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1154,7 +1213,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1168,7 +1227,7 @@
         data.setContent("content".getBytes());
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.complete( taskId, users.get( "darth" ).getId(), data, responseHandler ); 
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1204,7 +1263,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1215,7 +1274,7 @@
         // Check is Failed
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.fail( taskId, users.get( "darth" ).getId(), null, responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1244,7 +1303,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );      
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1255,7 +1314,13 @@
         // Should not fail as wrong user
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.fail( taskId, users.get( "bobba" ).getId(), null, responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        PermissionDeniedException denied = null;
+        try{
+            responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
+        } catch(PermissionDeniedException e) {
+            denied = e;
+        }
+        assertNotNull("Should get permissed denied exception", denied);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1284,7 +1349,7 @@
         // Go straight from Ready to Inprogress
         BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
         client.start( taskId, users.get( "darth" ).getId(), responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );
@@ -1299,7 +1364,7 @@
         data.setContent("content".getBytes());
         responseHandler = new BlockingTaskOperationResponseHandler();
         client.fail( taskId, users.get( "darth" ).getId(), data, responseHandler );
-        responseHandler.waitTillDone( 3000 );
+        responseHandler.waitTillDone(DEFAULT_WAIT_TIME);
         
         getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
         client.getTask( taskId, getTaskResponseHandler );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java	2009-04-11 08:39:44 UTC (rev 26017)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java	2009-04-12 01:00:16 UTC (rev 26018)
@@ -201,7 +201,7 @@
         implements
         TaskSummaryResponseHandler {
         private volatile List<TaskSummary> results;
-        private volatile String error;
+        private volatile RuntimeException error;
 
         public synchronized void execute(List<TaskSummary> results) {
             this.results = results;
@@ -231,14 +231,14 @@
             }
         }
 
-        public void setError(String error) {
+        public void setError(RuntimeException error) {
             this.error = error;            
         }
         
-        public String getError() {
+        public RuntimeException getError() {
             return error;
         }
 
-    };
+    }
 
 }




More information about the jboss-svn-commits mailing list