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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Sep 4 00:07:57 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-09-04 00:07:56 -0400 (Thu, 04 Sep 2008)
New Revision: 22375

Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.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/TaskService.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
Log:
JBRULES-1745 WS-Human-Task
-Added client/server stuff for suspend and resumed

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/TaskData.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -25,6 +25,8 @@
     Externalizable {
     @Enumerated(EnumType.STRING)
     private Status           status      = Status.Created;         // initial default state
+    
+    private Status           previousStatus = null;
 
     @ManyToOne()
     private User             actualOwner;
@@ -64,6 +66,13 @@
         } else {
             out.writeBoolean( false );
         }
+        
+        if ( previousStatus != null ) {
+            out.writeBoolean( true );
+            out.writeUTF( previousStatus.toString() );
+        } else {
+            out.writeBoolean( false );
+        }        
 
         if ( actualOwner != null ) {
             out.writeBoolean( true );
@@ -111,6 +120,10 @@
         if ( in.readBoolean() ) {
             status = Status.valueOf( in.readUTF() );
         }
+        
+        if ( in.readBoolean() ) {
+            previousStatus = Status.valueOf( in.readUTF() );
+        }
 
         if ( in.readBoolean() ) {
             actualOwner = new User();
@@ -146,9 +159,18 @@
     }
 
     public void setStatus(Status status) {
+        previousStatus = this.status;
         this.status = status;
+    }        
+
+    public Status getPreviousStatus() {
+        return previousStatus;
     }
 
+    public void setPreviousStatus(Status previousStatus) {
+        this.previousStatus = previousStatus;
+    }
+
     public User getActualOwner() {
         return actualOwner;
     }
@@ -232,6 +254,8 @@
         result = prime * result + ((expirationTime == null) ? 0 : expirationTime.hashCode());
         result = prime * result + (skipable ? 1231 : 1237);
         result = prime * result + ((status == null) ? 0 : status.hashCode());
+        result = prime * result + ((previousStatus == null) ? 0 : previousStatus.hashCode());
+        
         return result;
     }
 
@@ -264,6 +288,9 @@
         if ( status == null ) {
             if ( other.status != null ) return false;
         } else if ( !status.equals( other.status ) ) return false;
+        if ( previousStatus == null ) {
+            if ( other.previousStatus != null ) return false;
+        } else if ( !previousStatus.equals( other.previousStatus ) ) return false;        
         if ( activationTime == null ) {
             if ( other.activationTime != null ) return false;
         } else if ( activationTime.getTime() != other.activationTime.getTime() ) return false;

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -10,6 +10,10 @@
     StopResponse,
     ReleaseRequest,
     ReleaseResponse,    
+    SuspendRequest,
+    SuspendResponse,    
+    ResumeRequest,
+    ResumeResponse,      
     CompleteRequest,
     CompleteResponse,   
     FailRequest,

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -213,6 +213,26 @@
         session.write( cmd ); 
     }    
     
+    public void suspend(long taskId, long userId) {
+        List args = new ArrayList( 1 );
+        args.add( taskId );
+        args.add(  userId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.SuspendRequest, args);
+        
+        session.write( cmd ); 
+    }     
+    
+    public void resume(long taskId, long userId) {
+        List args = new ArrayList( 1 );
+        args.add( taskId );
+        args.add(  userId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.ResumeRequest, args);
+        
+        session.write( cmd ); 
+    }     
+    
+    
+    
     public void complete(long taskId, long userId) {
         List args = new ArrayList( 1 );
         args.add( taskId );

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	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -57,6 +57,18 @@
                 service.release( taskId, userId );   
                 break;
             }               
+            case SuspendRequest : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                long userId = ( Long ) cmd.getArguments().get( 1 );
+                service.suspend( taskId, userId );   
+                break;
+            }        
+            case ResumeRequest : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                long userId = ( Long ) cmd.getArguments().get( 1 );
+                service.resume( taskId, userId );   
+                break;
+            }             
             case CompleteRequest : {
                 long taskId = ( Long ) cmd.getArguments().get( 0 );
                 long userId = ( Long ) cmd.getArguments().get( 1 );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -267,7 +267,8 @@
         
         TaskData taskData = task.getTaskData();
         
-        if ( taskData.getStatus() == Status.InProgress && taskData.getActualOwner().equals( user ) ) {
+        PeopleAssignments people = task.getPeopleAssignments();        
+        if ( taskData.getStatus() == Status.InProgress && ( taskData.getActualOwner().equals( user ) || isAllowed( user, new List[] { people.getBusinessAdministrators() } ) ) ) {
             // Status must be InProgress and actual owner, switch to Reserved
             em.getTransaction().begin();
             taskData.setStatus( Status.Reserved );
@@ -306,7 +307,8 @@
         TaskData taskData = task.getTaskData();
         
         // task must be reserved or in progress and owned by user
-        if ( (taskData.getStatus() == Status.Reserved || taskData.getStatus() == Status.InProgress) && taskData.getActualOwner().equals( user ) ) {
+        PeopleAssignments people = task.getPeopleAssignments();        
+        if ( (taskData.getStatus() == Status.Reserved || taskData.getStatus() == Status.InProgress) && ( taskData.getActualOwner().equals( user ) || isAllowed( user, new List[] { people.getBusinessAdministrators() } ) ) ) {
             em.getTransaction().begin();
             taskData.setStatus( Status.Ready );
             taskData.setActualOwner( null );
@@ -316,6 +318,58 @@
         } 
     }
 
+    public void suspend(long taskId, long userId) {
+        Task task = em.find( Task.class,
+                             taskId );
+        
+        User user = em.find( User.class, userId );
+        
+        TaskData taskData = task.getTaskData();
+        
+        List[] allowed;
+        PeopleAssignments people = task.getPeopleAssignments();
+        if ( taskData.getStatus() == Status.Ready ) {
+            // If it's ready then potential owners can suspect too
+            allowed = new List[] { people.getPotentialOwners(), people.getBusinessAdministrators() };
+        } else {
+            allowed = new List[] { people.getBusinessAdministrators() };
+        }
+        
+        if ( (taskData.getStatus() != Status.Completed && taskData.getStatus() != Status.Failed && taskData.getStatus() != Status.Created) && ( ( taskData.getActualOwner() != null && taskData.getActualOwner().equals( user ) ) || isAllowed( user, allowed ) ) ) {
+            em.getTransaction().begin();
+            taskData.setStatus( Status.Suspended );
+            em.getTransaction().commit();
+        } else {
+            //@TODO Error            
+        }
+    }
+    
+    public void resume(long taskId, long userId) {
+        Task task = em.find( Task.class,
+                             taskId );
+        
+        User user = em.find( User.class, userId );
+        
+        TaskData taskData = task.getTaskData();
+        
+        List[] allowed;
+        PeopleAssignments people = task.getPeopleAssignments();
+        if ( taskData.getPreviousStatus() == Status.Ready ) {
+            // If it's ready then potential owners can suspect too
+            allowed = new List[] { people.getPotentialOwners(), people.getBusinessAdministrators() };
+        } else {
+            allowed = new List[] { people.getBusinessAdministrators() };
+        }
+        
+        if ( (taskData.getStatus() == Status.Suspended) && ( ( taskData.getActualOwner() != null && taskData.getActualOwner().equals( user ) ) || isAllowed( user, allowed ) ) ) {
+            em.getTransaction().begin();
+            taskData.setStatus( taskData.getPreviousStatus() );
+            em.getTransaction().commit();
+        } else {
+            //@TODO Error            
+        }
+    }    
+    
     public void fail(long taskId, long userId) {
         Task task = em.find( Task.class,
                              taskId );

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceCommentsAndAttachmentsTest.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -20,6 +20,7 @@
 import org.drools.task.BaseTest;
 import org.drools.task.Comment;
 import org.drools.task.Deadline;
+import org.drools.task.Status;
 import org.drools.task.Task;
 import org.drools.task.query.TaskSummary;
 import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
@@ -96,7 +97,9 @@
         
         assertEquals( (long)addCommentResponseHandler.getCommentId(), (long) returnedComment.getId() );
         
+        // Make the same as the returned tasks, so we can test equals
         task.getTaskData().setComments( comments1 );
+        task.getTaskData().setStatus( Status.Created );
         assertEquals(task, task1);       
         
         // test we can have multiple comments
@@ -181,7 +184,9 @@
         assertEquals( (long) addAttachmentResponseHandler.getAttachmentId(), (long) returnedAttachment.getId() );
         assertEquals( (long) addAttachmentResponseHandler.getContentId(),  (long) returnedAttachment.getContentId() );        
         
+        // Make the same as the returned tasks, so we can test equals
         task.getTaskData().setAttachments( attachments1 );
+        task.getTaskData().setStatus( Status.Created );
         assertEquals(task, task1);            
         
         BlockingGetAttachmentContentResponseHandler  getAttachmentContentResponseHandler = new BlockingGetAttachmentContentResponseHandler();

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	2008-09-04 03:04:04 UTC (rev 22374)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2008-09-04 04:07:56 UTC (rev 22375)
@@ -445,7 +445,233 @@
         assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
         assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() ); 
     }
+
+    public void testSuspendFromReady() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Check is Ready
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Ready, task1.getTaskData().getStatus() );
+        assertNull( task1.getTaskData().getActualOwner() );  
+        
+        // Check is Suspended
+        client.suspend( taskId, users.get( "darth" ).getId() );        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Suspended, task2.getTaskData().getStatus() );
+        assertEquals( Status.Ready, task2.getTaskData().getPreviousStatus() );
+        assertNull( task1.getTaskData().getActualOwner() );                  
+    }
     
+    public void testSuspendFromReserved() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Check is Reserved
+        client.claim( taskId, users.get( "darth" ).getId() );        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );  
+        
+        // Check is Suspended
+        client.suspend( taskId, users.get( "darth" ).getId() );        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task2.getTaskData().getPreviousStatus() );
+        assertEquals(  Status.Suspended, task2.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() );          
+    }    
+    
+    public void testSuspendFromReservedWithIncorrectUser() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Check is Reserved
+        client.claim( taskId, users.get( "darth" ).getId() );        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );  
+        
+        // Check is not changed
+        client.suspend( taskId, users.get( "bobba" ).getId() );        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );      
+    }    
+    
+    //////////////////////////
+    public void testResumeFromReady() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Check is Ready
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Ready, task1.getTaskData().getStatus() );
+        assertNull( task1.getTaskData().getActualOwner() );  
+        
+        // Check is Suspended
+        client.suspend( taskId, users.get( "darth" ).getId() );                  
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Suspended, task2.getTaskData().getStatus() );
+        assertEquals( Status.Ready, task2.getTaskData().getPreviousStatus() );
+        assertNull( task1.getTaskData().getActualOwner() );    
+        
+        // Check is Resumed
+        client.resume( taskId, users.get( "darth" ).getId() );                  
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task3 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Ready, task3.getTaskData().getStatus() );
+        assertEquals( Status.Suspended, task3.getTaskData().getPreviousStatus() );
+        assertNull( task3.getTaskData().getActualOwner() );         
+    }
+    
+    public void testResumeFromReserved() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Check is Reserved
+        client.claim( taskId, users.get( "darth" ).getId() );        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );  
+        
+        // Check is suspended
+        client.suspend( taskId, users.get( "darth" ).getId() );        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task2.getTaskData().getPreviousStatus() );
+        assertEquals(  Status.Suspended, task2.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task2.getTaskData().getActualOwner() ); 
+        
+        // Check is Resumed
+        client.resume( taskId, users.get( "darth" ).getId() );                  
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task3 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task3.getTaskData().getStatus() );
+        assertEquals( Status.Suspended, task3.getTaskData().getPreviousStatus() );
+        assertEquals( users.get( "darth" ), task3.getTaskData().getActualOwner() );           
+    }    
+    
+    public void testResumeFromReservedWithIncorrectUser() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        // One potential owner, should go straight to state Reserved
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ], users['darth'] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();             
+        
+        // Check is Reserved
+        client.claim( taskId, users.get( "darth" ).getId() );        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );  
+        
+        // Check not changed
+        client.suspend( taskId, users.get( "bobba" ).getId() );        
+        getTaskResponseHandler = new BlockingGetTaskResponseHandler();  
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task2 = getTaskResponseHandler.getTask();
+        assertEquals(  Status.Reserved, task1.getTaskData().getStatus() );
+        assertEquals( users.get( "darth" ), task1.getTaskData().getActualOwner() );      
+    }     
+          
+    
     public void testComplete() {
         Map  vars = new HashedMap();     
         vars.put( "users", users );




More information about the jboss-svn-commits mailing list