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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 2 09:47:42 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-09-02 09:47:41 -0400 (Tue, 02 Sep 2008)
New Revision: 22324

Added:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AttachmentContent.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java
Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.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/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/TaskService.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java
   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/resources/org/drools/task/FullyPopulatedTask.mvel
Log:
JBRULES-1745 WS-Human-Task
-Attachments and Comments now work with the client/server api
-Attachment content is now in another table, to avoid large Task retrievals

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java	2008-09-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Attachment.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -42,9 +42,10 @@
     
     private Date   attachedAt;    
 
-    @Lob
-    private byte[] content;
+    private int    size;    
     
+    private long   contentId;
+    
     public void writeExternal(ObjectOutput out) throws IOException {
         out.writeLong( id );
         out.writeUTF( name );
@@ -52,8 +53,8 @@
         out.writeUTF( contentType );
         attachedBy.writeExternal( out );
         out.writeLong( attachedAt.getTime() );
-        out.writeInt( content.length );
-        out.write( content );        
+        out.writeInt( size );
+        out.writeLong( contentId );
     }
     
     public void readExternal(ObjectInput in) throws IOException,
@@ -65,8 +66,8 @@
         attachedBy = new User();
         attachedBy.readExternal( in );        
         attachedAt = new Date( in.readLong() );
-        content = new byte[ in.readInt() ];
-        in.read( content );
+        size = in.readInt( );
+        contentId = in.readLong();
     }
 
     public Long getId() {
@@ -115,16 +116,24 @@
 
     public void setAttachedBy(User attachedBy) {
         this.attachedBy = attachedBy;
+    }    
+    
+    public int getSize() {
+        return size;
     }
 
-    public byte[] getContent() {
-        return content;
+    public void setSize(int size) {
+        this.size = size;
     }
+        
+    public long getContentId() {
+        return contentId;
+    }
 
-    public void setContent(byte[] attachment) {
-        this.content = attachment;
-    }        
-    
+    public void setContentId(long contentId) {
+        this.contentId = contentId;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -132,7 +141,8 @@
         result = prime * result + ((accessType == null) ? 0 : accessType.hashCode());
         result = prime * result + ((attachedAt == null) ? 0 : attachedAt.hashCode());
         result = prime * result + ((attachedBy == null) ? 0 : attachedBy.hashCode());
-        result = prime * result + Arrays.hashCode( content );
+        result = prime * result + size;
+        result = prime * result + (int) (contentId ^ (contentId >>> 32));
         result = prime * result + ((contentType == null) ? 0 : contentType.hashCode());
         result = prime * result + ((name == null) ? 0 : name.hashCode());
         return result;
@@ -153,8 +163,8 @@
         if ( attachedBy == null ) {
             if ( other.attachedBy != null ) return false;
         } else if ( !attachedBy.equals( other.attachedBy ) ) return false;
-        if ( !Arrays.equals( content,
-                             other.content ) ) return false;
+        if ( size != other.size ) return false;
+        if ( contentId != other.contentId ) return false;
         if ( contentType == null ) {
             if ( other.contentType != null ) return false;
         } else if ( !contentType.equals( other.contentType ) ) return false;
@@ -163,6 +173,10 @@
         } else if ( !name.equals( other.name ) ) return false;
         return true;
     }
+
+
+ 
+ 
     
     
 

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AttachmentContent.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AttachmentContent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/AttachmentContent.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -0,0 +1,76 @@
+package org.drools.task;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Arrays;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+
+ at Entity
+public class AttachmentContent implements Externalizable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long   id;
+    
+    @Lob
+    private byte[] content;
+    
+    public AttachmentContent() {
+        
+    }    
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeLong( id );
+        out.writeInt( content.length );
+        out.write( content );        
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        id = in.readLong();
+        content = new byte[ in.readInt() ];
+        in.read( content );
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public byte[] getContent() {
+        return content;
+    }
+
+    public void setContent(byte[] content) {
+        this.content = content;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + Arrays.hashCode( content );
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( !(obj instanceof AttachmentContent) ) return false;
+        AttachmentContent other = (AttachmentContent) obj;
+        if ( !Arrays.equals( content,
+                             other.content ) ) return false;
+        return true;
+    }
+        
+}

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-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/CommandName.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -2,11 +2,22 @@
 
 import javax.persistence.Query;
 
-public enum CommandName {
+public enum CommandName {   
+    
+    GetTaskRequest,
+    GetTaskResponse,
+    
     AddTaskRequest,
-    AddAttachment,
-    AddComment,
+    AddTaskResponse,
     
+    AddAttachmentRequest,
+    AddAttachmentResponse,
+    GetAttachmentContentRequest,
+    GetAttachmentContentResponse,
+    
+    AddCommentRequest,
+    AddCommentResponse,
+    
     Query_TasksOwned,
     
     Query_TasksAssignedAsBusinessAdministrator,

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-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/MinaTaskClient.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -7,6 +7,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.service.IoHandler;
@@ -18,7 +19,15 @@
 import org.apache.mina.transport.socket.SocketConnector;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
 import org.drools.task.AccessType;
+import org.drools.task.Attachment;
+import org.drools.task.AttachmentContent;
+import org.drools.task.Comment;
 import org.drools.task.Task;
+import org.drools.task.service.TaskClientHandler.AddAttachmentResponseHandler;
+import org.drools.task.service.TaskClientHandler.AddCommentResponseHandler;
+import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
+import org.drools.task.service.TaskClientHandler.GetAttachmentContentResponseHandler;
+import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
 import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
 
 public class MinaTaskClient
@@ -29,7 +38,7 @@
 
     private IoSession session;
     
-    private int counter;
+    private AtomicInteger counter;
     
     public static void main(String[] args) throws Exception {
         MinaTaskClient client = new MinaTaskClient("test client", new TaskClientHandler() );
@@ -44,6 +53,7 @@
         }
         this.name = name;
         this.handler = handler;
+        counter = new AtomicInteger();
     }
 
     public boolean connect(SocketConnector connector, SocketAddress address) {
@@ -92,45 +102,68 @@
         }
     }
     
-    public void addTask(Task task) {
+    public void addTask(Task task, AddTaskResponseHandler responseHandler ) {
         List args = new ArrayList( 1 );
         args.add( task );
-        Command cmd = new Command( counter++, CommandName.AddTaskRequest, args);        
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.AddTaskRequest, args);  
         
+        handler.addResponseHandler( cmd.getId(), responseHandler );   
+        
         session.write( cmd );
     }
     
-    public void addAttachment(long taskId, String name, long userId, Date attachedAt, AccessType accessType, String contentType,  byte[] content ) {
-        List args = new ArrayList( 7 );
+    public void getTask(long taskId, GetTaskResponseHandler responseHandler) {
+        List args = new ArrayList( 1 );
         args.add( taskId );
-        args.add( name );
-        args.add( userId );
-        args.add( attachedAt );
-        args.add( accessType );
-        args.add( contentType );
-        args.add( content );
-        Command cmd = new Command( counter++, CommandName.AddAttachment, args);        
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.GetTaskRequest, args);  
         
+        handler.addResponseHandler( cmd.getId(), responseHandler );   
+        
         session.write( cmd );        
+        
     }
     
-    public void addComment(long taskId, long userId, Date addedAt, String text) {
-        List args = new ArrayList( 4 );
+    public void addComment(long taskId, Comment comment, AddCommentResponseHandler responseHandler) {
+        List args = new ArrayList( 2 );
         args.add( taskId );
-        args.add( name );
-        args.add( userId );
-        args.add( addedAt );
-        args.add( text );
-        Command cmd = new Command( counter++, CommandName.AddComment, args);        
+        args.add( comment );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.AddCommentRequest, args);       
         
+        handler.addResponseHandler( cmd.getId(), responseHandler );
+        
         session.write( cmd );         
     }
     
+    
+    public void addAttachment(long taskId, Attachment attachment, AttachmentContent content, AddAttachmentResponseHandler responseHandler ) {
+        List args = new ArrayList( 2 );
+        args.add( taskId );
+        args.add( attachment );
+        args.add( content );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.AddAttachmentRequest, args);   
+        
+        handler.addResponseHandler( cmd.getId(), responseHandler );
+        
+        session.write( cmd );        
+    }
+    
+    public void getAttachmentContent(long contentId, GetAttachmentContentResponseHandler responseHandler) {
+        List args = new ArrayList( 1 );
+        args.add( contentId );
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.GetAttachmentContentRequest, args);  
+        
+        handler.addResponseHandler( cmd.getId(), responseHandler );   
+        
+        session.write( cmd );        
+        
+    }
+    
+
     public void getTasksOwned(long userId, String language, TaskSummaryResponseHandler responseHandler) {
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksOwned, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksOwned, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     }
@@ -139,7 +172,7 @@
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksAssignedAsBusinessAdministrator, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksAssignedAsBusinessAdministrator, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     }    
@@ -148,7 +181,7 @@
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksAssignedAsExcludedOwner, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksAssignedAsExcludedOwner, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     }     
@@ -157,7 +190,7 @@
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksAssignedAsPotentialOwner, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksAssignedAsPotentialOwner, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     }      
@@ -166,7 +199,7 @@
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksAssignedAsRecipient, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksAssignedAsRecipient, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     } 
@@ -175,7 +208,7 @@
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksAssignedAsTaskInitiator, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksAssignedAsTaskInitiator, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     }    
@@ -184,7 +217,7 @@
         List args = new ArrayList( 2 );
         args.add( userId );
         args.add( language );
-        Command cmd = new Command( counter++, CommandName.Query_TasksAssignedAsTaskStakeholder, args);
+        Command cmd = new Command( counter.getAndIncrement(), CommandName.Query_TasksAssignedAsTaskStakeholder, args);
         handler.addResponseHandler( cmd.getId(), responseHandler );        
         session.write( cmd );
     }     

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	2008-09-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskClientHandler.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -8,6 +8,8 @@
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IoSession;
+import org.drools.task.AttachmentContent;
+import org.drools.task.Task;
 import org.drools.task.query.TaskSummary;
 
 public class TaskClientHandler extends IoHandlerAdapter
@@ -42,12 +44,54 @@
                                 Object message) throws Exception {
         Command cmd = (Command) message;
         switch ( cmd.getName() ) {
+            case GetTaskResponse : {
+                Task task = ( Task ) cmd.getArguments().get( 0 );
+                GetTaskResponseHandler responseHandler = (GetTaskResponseHandler) responseHandlers.remove( cmd.getId() );
+                if ( responseHandler != null ) {
+                    responseHandler.execute( task );
+                }
+                break;
+            }
+            case AddTaskResponse : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                AddTaskResponseHandler responseHandler = (AddTaskResponseHandler) responseHandlers.remove( cmd.getId() );
+                if ( responseHandler != null ) {
+                    responseHandler.execute( taskId );
+                }
+                break;
+            }
+            case AddCommentResponse : {
+                long commentId = ( Long ) cmd.getArguments().get( 0 );
+                AddCommentResponseHandler responseHandler = (AddCommentResponseHandler) responseHandlers.remove( cmd.getId() );
+                if ( responseHandler != null ) {
+                    responseHandler.execute( commentId );
+                }
+                break;                
+            }
+            case AddAttachmentResponse : {
+                long attachmentId = ( Long ) cmd.getArguments().get( 0 );
+                long contentId = ( Long ) cmd.getArguments().get( 1 );
+                AddAttachmentResponseHandler responseHandler = (AddAttachmentResponseHandler) responseHandlers.remove( cmd.getId() );
+                if ( responseHandler != null ) {
+                    responseHandler.execute( attachmentId, contentId );
+                }
+                break;                
+            }         
+            case GetAttachmentContentResponse : {
+                AttachmentContent content = ( AttachmentContent ) cmd.getArguments().get( 0 );
+                GetAttachmentContentResponseHandler responseHandler = (GetAttachmentContentResponseHandler) responseHandlers.remove( cmd.getId() );
+                if ( responseHandler != null ) {
+                    responseHandler.execute( content );
+                }
+                break;
+            }            
             case Query_TaskSummaryResponse : {
                 List<TaskSummary> results = ( List<TaskSummary> ) cmd.getArguments().get( 0 );
                 TaskSummaryResponseHandler responseHandler = ( TaskSummaryResponseHandler ) responseHandlers.remove( cmd.getId() );
                 if ( responseHandler != null ) {
                     responseHandler.execute( results );
-                }               
+                }
+                break;
             }
         }
     }
@@ -77,9 +121,27 @@
         
     }
     
+    public static interface GetTaskResponseHandler extends ResponseHandler {
+        public void execute(Task task);
+    }
+    
+    public static interface AddTaskResponseHandler extends ResponseHandler {
+        public void execute(long taskId);
+    }
+    
+    public static interface AddCommentResponseHandler extends ResponseHandler {
+        public void execute(long commentId);
+    }    
+    
+    public static interface AddAttachmentResponseHandler extends ResponseHandler {
+        public void execute(long attachmentId, long contentId);
+    }        
+    
+    public static interface GetAttachmentContentResponseHandler extends ResponseHandler {
+        public void execute(AttachmentContent attachmentContent);
+    }    
+    
     public static interface TaskSummaryResponseHandler extends ResponseHandler {
         public void execute(List<TaskSummary> results);
-        
-        public List<TaskSummary> getResults();
     }
 }
\ No newline at end of file

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-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskServerHandler.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -8,6 +8,10 @@
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IoSession;
+import org.drools.task.AccessType;
+import org.drools.task.Attachment;
+import org.drools.task.AttachmentContent;
+import org.drools.task.Comment;
 import org.drools.task.Task;
 import org.drools.task.query.TaskSummary;
 
@@ -29,10 +33,66 @@
                                 Object message) throws Exception {
         Command cmd = (Command) message;
         switch ( cmd.getName() ) {
+            case GetTaskRequest : {
+                long taskId = ( Long ) cmd.getArguments().get( 0 );
+                Task task = service.getTask( taskId );
+                List args = new ArrayList( 1 );
+                args.add( task );
+                Command resultsCmnd = new Command( cmd.getId(),
+                                                   CommandName.GetTaskResponse,
+                                                   args );
+                session.write( resultsCmnd );                                
+                break;                
+            }
             case AddTaskRequest : {
-                service.addTask( (Task) cmd.getArguments().get( 0 ) );
+                Task task = (Task) cmd.getArguments().get( 0 ) ;
+                service.addTask( task );
+                
+                List args = new ArrayList( 1 );
+                args.add( task.getId() );
+                Command resultsCmnd = new Command( cmd.getId(),
+                                                   CommandName.AddTaskResponse,
+                                                   args );
+                session.write( resultsCmnd );                                
                 break;
             }
+            case AddCommentRequest : {      
+                Comment comment = ( Comment ) cmd.getArguments().get( 1 );
+                service.addComment( (Long) cmd.getArguments().get( 0 ), comment );
+                
+                List args = new ArrayList( 1 );
+                args.add( comment.getId() );
+                Command resultsCmnd = new Command( cmd.getId(),
+                                                   CommandName.AddCommentResponse,
+                                                   args );
+                session.write( resultsCmnd );                       
+                break;
+            }
+            case  AddAttachmentRequest : {
+                Attachment attachment = ( Attachment ) cmd.getArguments().get( 1 );
+                AttachmentContent content = ( AttachmentContent ) cmd.getArguments().get( 2 ); 
+                service.addAttachment( (Long) cmd.getArguments().get( 0 ), attachment, content );
+                
+                List args = new ArrayList( 1 );
+                args.add( attachment.getId() );
+                args.add( content.getId() );
+                Command resultsCmnd = new Command( cmd.getId(),
+                                                   CommandName.AddAttachmentResponse,
+                                                   args );
+                session.write( resultsCmnd );                    
+                break;
+            }
+            case GetAttachmentContentRequest : {
+                long contentId = ( Long ) cmd.getArguments().get( 0 );
+                AttachmentContent content = service.getAttachmentContent( contentId );
+                List args = new ArrayList( 1 );
+                args.add( content );
+                Command resultsCmnd = new Command( cmd.getId(),
+                                                   CommandName.GetAttachmentContentResponse,
+                                                   args );
+                session.write( resultsCmnd );                                
+                break;                
+            }            
             case Query_TasksOwned : {
                 List<TaskSummary> results = service.getTasksOwned( (Long) cmd.getArguments().get( 0 ),
                                                                    (String) 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-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/TaskService.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -19,6 +19,7 @@
 
 import org.drools.task.AccessType;
 import org.drools.task.Attachment;
+import org.drools.task.AttachmentContent;
 import org.drools.task.Comment;
 import org.drools.task.Deadline;
 import org.drools.task.Group;
@@ -155,73 +156,59 @@
                 }
             }
         }
-    }
+    }    
     
-    public void addAttachment(long taskId, String name, long userId, Date attachedAt, AccessType accessType, String contentType,  byte[] content ) {
+    public void addComment(long taskId, Comment comment) {
         Task task = em.find( Task.class, taskId );
-        
         if ( task == null ) {
             // throw some exception
-        }
+        }  
         
-        User addedBy = em.find( User.class, userId);
-        if ( addedBy == null ) {
-            // throw some exception
-        }        
-        
         em.getTransaction().begin();
         
-        Attachment attachment = new Attachment();
-        attachment.setName( name );
-        attachment.setAttachedBy( addedBy );
-        attachment.setAttachedAt( attachedAt );
-        attachment.setAccessType( accessType );
-        attachment.setContentType( contentType );
-        attachment.setContent( content );
-        
-        List<Attachment> list = task.getTaskData().getAttachments();
-        if ( list == null || list == Collections.<Attachment>emptyList() ) {
-            list = new ArrayList<Attachment>( 1 );
-            task.getTaskData().setAttachments( list );
+        List<Comment> list = task.getTaskData().getComments();
+        if ( list == null || list == Collections.<Comment>emptyList() ) {
+            list = new ArrayList<Comment>( 1 );
+            task.getTaskData().setComments( list );
         }
         
-        list.add ( attachment );          
+        list.add ( comment );   
+        
         em.getTransaction().commit();
-    }  
+    }
     
-    public void addComment(long taskId, long userId, Date addedAt, String text) {
+    public void addAttachment(long taskId,  Attachment attachment, AttachmentContent content) {
         Task task = em.find( Task.class, taskId );
+        
         if ( task == null ) {
             // throw some exception
         }
         
-        User addedBy = em.find( User.class, userId);
-        if ( addedBy == null ) {
-            // throw some exception
-        }       
+        em.getTransaction().begin();        
         
-        em.getTransaction().begin();
+        em.persist( content );
+        attachment.setSize( content.getContent().length );
+        attachment.setContentId( content.getId() );
         
-        Comment comment = new Comment();
-        comment.setAddedBy( addedBy );
-        comment.setAddedAt( addedAt );
-        comment.setText( text );
-        
-        List<Comment> list = task.getTaskData().getComments();
-        if ( list == null || list == Collections.<Comment>emptyList() ) {
-            list = new ArrayList<Comment>( 1 );
-            task.getTaskData().setComments( list );
+        List<Attachment> list = task.getTaskData().getAttachments();
+        if ( list == null || list == Collections.<Attachment>emptyList() ) {
+            list = new ArrayList<Attachment>( 1 );
+            task.getTaskData().setAttachments( list );
         }
         
-        list.add ( comment );   
-        
+        list.add ( attachment );          
         em.getTransaction().commit();
-    }    
+    }  
+    
+    public AttachmentContent getAttachmentContent(long contentId) {
+        AttachmentContent content = em.find( AttachmentContent.class, contentId );
+        return content;
+    }      
 
     public Task getTask(long taskId) {
         Task task = em.find( Task.class,
                              taskId );
-        return task;
+        return task;                                                                                                                                                                                
     }
 
     public List<DeadlineSummary> getUnescalatedDeadlines() {

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2008-09-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/resources/META-INF/persistence.xml	2008-09-02 13:47:41 UTC (rev 22324)
@@ -3,8 +3,8 @@
 http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence">
     <persistence-unit name="org.drools.task">
         <provider>org.hibernate.ejb.HibernatePersistence</provider>
-        <class>org.drools.task.User</class>
         <class>org.drools.task.Attachment</class>
+        <class>org.drools.task.AttachmentContent</class>        
         <class>org.drools.task.BooleanExpression</class>        
         <class>org.drools.task.Comment</class>
         <class>org.drools.task.Deadline</class>
@@ -20,7 +20,8 @@
         <class>org.drools.task.Status</class>
         <class>org.drools.task.Task</class>
         <class>org.drools.task.TaskData</class>
-
+        <class>org.drools.task.User</class>
+        
 	    <properties>
 	        <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
 	        <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>	        
@@ -37,7 +38,7 @@
 	        <property name="hibernate.connection.autocommit" value="false" /> 	               
 	        <property name="hibernate.max_fetch_depth" value="3"/>
 		    <property name="hibernate.hbm2ddl.auto" value="update" />
-            <property name="hibernate.show_sql" value="true" />		    
+            <property name="hibernate.show_sql" value="false" />		    
 	    </properties>        
     </persistence-unit>
     

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java	2008-09-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/ModelPersistenceTest.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -115,7 +115,8 @@
         attachment.setAttachedBy( users.get( "liz" ) );
         attachment.setContentType( "text" );
         attachment.setName( "file.txt" );
-        attachment.setContent( new byte[]{1, 0, 0, 1} );
+        attachment.setSize( 5000);
+        attachment.setContentId( 5 );
         attachments.add( attachment );
 
         attachment = new Attachment();
@@ -124,7 +125,8 @@
         attachment.setAttachedBy( users.get( "liz" ) );
         attachment.setContentType( "text" );
         attachment.setName( "file2.txt" );
-        attachment.setContent( new String( "http://domain.org/file.txt" ).getBytes() );
+        attachment.setSize( 500 );
+        attachment.setContentId( 3 );
         attachments.add( attachment );
 
         List<Comment> comments = new ArrayList<Comment>();

Added: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTaskUpdate.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -0,0 +1,314 @@
+package org.drools.task.service;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.task.AccessType;
+import org.drools.task.Attachment;
+import org.drools.task.AttachmentContent;
+import org.drools.task.BaseTest;
+import org.drools.task.Comment;
+import org.drools.task.Deadline;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.TaskClientHandler.AddAttachmentResponseHandler;
+import org.drools.task.service.TaskClientHandler.AddCommentResponseHandler;
+import org.drools.task.service.TaskClientHandler.AddTaskResponseHandler;
+import org.drools.task.service.TaskClientHandler.GetAttachmentContentResponseHandler;
+import org.drools.task.service.TaskClientHandler.GetTaskResponseHandler;
+import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
+import org.drools.task.service.TaskServiceEscalationTest.MockEscalatedDeadlineHandler.Item;
+import org.drools.task.service.TaskServiceTest.BlockingAllOpenTasksForUseResponseHandler;
+import org.drools.task.utils.CollectionUtils;
+
+import junit.framework.TestCase;
+
+public class TaskServiceTaskUpdate extends BaseTest {
+    MinaTaskServer server;
+    MinaTaskClient client;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        server = new MinaTaskServer( taskService );
+        Thread thread = new Thread( server );
+        thread.start();
+        Thread.sleep( 500 );
+
+        client = new MinaTaskClient( "client 1",
+                                     new TaskClientHandler() );
+        NioSocketConnector connector = new NioSocketConnector();
+        SocketAddress address = new InetSocketAddress( "127.0.0.1",
+                                                       9123 );
+        client.connect( connector,
+                        address );
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        client.disconnect();
+        server.stop();
+    }
+
+    public void testAddComment() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        
+        String str = "(with (new Task()) { priority = 55, taskData = new TaskData(),";
+        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();
+        
+        Comment comment = new Comment();
+        Date addedAt = new Date( System.currentTimeMillis() ); 
+        comment.setAddedAt( addedAt );
+        comment.setAddedBy( users.get( "luke" ) );
+        comment.setText( "This is my comment!!!!!" );
+        
+        BlockingAddCommentResponseHandler addCommentResponseHandler = new BlockingAddCommentResponseHandler();
+        client.addComment( taskId, comment,addCommentResponseHandler );      
+        assertTrue( addCommentResponseHandler.getCommentId() != comment.getId() );
+        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertNotSame(task, task1);
+        assertFalse(  task.equals( task1) );
+       
+        List<Comment> comments = task1.getTaskData().getComments();
+        assertEquals(1, comments.size() );
+        Comment returnedComment = comments.get( 0 );        
+        assertEquals( "This is my comment!!!!!", returnedComment.getText() );
+        assertEquals( addedAt, returnedComment.getAddedAt() );
+        assertEquals( users.get( "luke" ), returnedComment.getAddedBy() );
+        
+        assertEquals( (long)addCommentResponseHandler.getCommentId(), (long) returnedComment.getId() );
+        
+        task.getTaskData().setComments( comments );
+        assertEquals(task, task1);              
+    }
+    
+    public void testAddAttachment() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        
+        String str = "(with (new Task()) { priority = 55, taskData = new TaskData(),";
+        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();
+        
+        Attachment attachment = new Attachment();
+        Date attachedAt = new Date( System.currentTimeMillis() ); 
+        attachment.setAttachedAt( attachedAt);
+        attachment.setAttachedBy( users.get( "luke" ) );
+        attachment.setName( "file.txt" );
+        attachment.setAccessType( AccessType.Inline );
+        attachment.setContentType( "txt" );
+        
+        byte[] bytes = "Ths is my attachment text".getBytes();
+        AttachmentContent content = new AttachmentContent();
+        content.setContent( bytes );
+        
+        BlockingAddAttachmentResponseHandler addAttachmentResponseHandler = new BlockingAddAttachmentResponseHandler();
+        client.addAttachment( taskId, attachment, content, addAttachmentResponseHandler);
+        assertTrue( addAttachmentResponseHandler.getAttachmentId() != attachment.getId() );
+        assertTrue( addAttachmentResponseHandler.getContentId() != attachment.getContentId() );
+        
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertNotSame(task, task1);
+        assertFalse(  task.equals( task1) );
+       
+        List<Attachment> attachments = task1.getTaskData().getAttachments();
+        assertEquals(1, attachments.size() );
+        Attachment returnedAttachment = attachments.get( 0 );        
+        assertEquals( attachedAt, returnedAttachment.getAttachedAt() );
+        assertEquals( users.get( "luke" ), returnedAttachment.getAttachedBy() );
+        assertEquals( AccessType.Inline, returnedAttachment.getAccessType() );
+        assertEquals( "txt", returnedAttachment.getContentType() );
+        assertEquals( "file.txt", returnedAttachment.getName() );        
+        assertEquals( bytes.length, returnedAttachment.getSize() );
+        
+        assertEquals( (long) addAttachmentResponseHandler.getAttachmentId(), (long) returnedAttachment.getId() );
+        assertEquals( (long) addAttachmentResponseHandler.getContentId(),  (long) returnedAttachment.getContentId() );        
+        
+        task.getTaskData().setAttachments( attachments );
+        assertEquals(task, task1);            
+        
+        BlockingGetAttachmentContentResponseHandler  getAttachmentContentResponseHandler = new BlockingGetAttachmentContentResponseHandler();
+        client.getAttachmentContent( returnedAttachment.getContentId(), getAttachmentContentResponseHandler );
+        AttachmentContent attachmentContent = getAttachmentContentResponseHandler.getAttachmentContent();
+        assertEquals( "Ths is my attachment text", new String( attachmentContent.getContent() ) );
+    }    
+
+    public static class BlockingGetTaskResponseHandler implements GetTaskResponseHandler {
+        private volatile Task task;
+
+        public synchronized void execute(Task task) {
+            this.task = task;
+            notifyAll();                
+        }
+        
+        public synchronized Task getTask() {
+            if ( task == null ) {                  
+                try {
+                    wait( 3000 );
+                } catch ( InterruptedException e ) {
+                    // swallow as this is just a notifiation
+                }
+            }
+            
+            if ( task == null ) {
+                throw new RuntimeException("Timeout : unable to retrieve Task Id" );
+            }
+            
+            return task;
+        }       
+    }    
+    
+    public static class BlockingAddTaskResponseHandler implements AddTaskResponseHandler {
+        private volatile long taskId;
+        private volatile boolean wait = true;
+
+        public synchronized void execute(long taskId) {
+            this.taskId = taskId;
+            wait = false;
+            notifyAll();                
+        }
+        
+        public synchronized long getTaskId() {
+            if ( wait ) {                  
+                try {
+                    wait( 3000 );
+                } catch ( InterruptedException e ) {
+                    // swallow as this is just a notifiation
+                }
+            }
+            
+            if ( wait ) {
+                throw new RuntimeException("Timeout : unable to retrieve Task Id" );
+            }
+            
+            return taskId;
+        }       
+    }    
+    
+    public static class BlockingAddCommentResponseHandler implements AddCommentResponseHandler {
+        private volatile long commentId;
+        private volatile boolean wait = true;
+
+        public synchronized void execute(long commentId) {
+            this.commentId = commentId;
+            wait = false;
+            notifyAll();                
+        }
+        
+        public synchronized long getCommentId() {
+            if ( wait ) {                  
+                try {
+                    wait( 3000 );
+                } catch ( InterruptedException e ) {
+                    // swallow as this is just a notifiation
+                }
+            }
+            
+            if ( wait ) {
+                throw new RuntimeException("Timeout : unable to retrieve Task Id" );
+            }
+            
+            return commentId;
+        }       
+    }       
+    
+    public static class BlockingAddAttachmentResponseHandler implements AddAttachmentResponseHandler {
+        private volatile long attachmentId ;
+        private volatile long contentId;
+        private volatile boolean wait = true;
+
+        public synchronized void execute(long attachmentId, long contentId) {
+            this.attachmentId = attachmentId;
+            this.contentId = contentId;
+            wait = false;
+            notifyAll();                
+        }
+        
+        public synchronized long getAttachmentId() {
+            if ( wait ) {                  
+                try {
+                    wait( 3000 );
+                } catch ( InterruptedException e ) {
+                    // swallow as this is just a notifiation
+                }
+            }
+            
+            if ( wait ) {
+                throw new RuntimeException("Timeout : unable to retrieve Attachment Id" );
+            }
+            
+            return attachmentId;
+        }       
+        
+        public synchronized long getContentId() {
+            if ( wait ) {                  
+                try {
+                    wait( 3000 );
+                } catch ( InterruptedException e ) {
+                    // swallow as this is just a notifiation
+                }
+            }
+            
+            if ( wait ) {
+                throw new RuntimeException("Timeout : unable to retrieve Attachment Content Id" );
+            }
+            
+            return contentId;
+        }
+    }        
+    
+    public static class BlockingGetAttachmentContentResponseHandler implements GetAttachmentContentResponseHandler {
+        private volatile AttachmentContent attachmentContent;
+
+        public synchronized void execute(AttachmentContent attachmentContent) {
+            this.attachmentContent = attachmentContent;
+            notifyAll();                
+        }
+        
+        public synchronized AttachmentContent getAttachmentContent() {
+            if ( attachmentContent == null ) {                  
+                try {
+                    wait( 3000 );
+                } catch ( InterruptedException e ) {
+                    // swallow as this is just a notifiation
+                }
+            }
+            
+            if ( attachmentContent == null ) {
+                throw new RuntimeException("Timeout : unable to retrieve Attachment Content" );
+            }
+            
+            return attachmentContent;
+        }       
+    } 
+}

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	2008-09-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceTest.java	2008-09-02 13:47:41 UTC (rev 22324)
@@ -15,90 +15,123 @@
 import org.drools.task.Task;
 import org.drools.task.query.TaskSummary;
 import org.drools.task.service.TaskClientHandler.TaskSummaryResponseHandler;
+import org.drools.task.service.TaskServiceTaskUpdate.BlockingAddTaskResponseHandler;
 import org.drools.task.utils.CollectionUtils;
 
-public class TaskServiceTest extends BaseTest  {
+public class TaskServiceTest extends BaseTest {
     MinaTaskServer server;
     MinaTaskClient client;
-    
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         server = new MinaTaskServer( taskService );
         Thread thread = new Thread( server );
         thread.start();
-        Thread.sleep(500);
-        
-        client = new MinaTaskClient( "client 1", new TaskClientHandler() );
+        Thread.sleep( 500 );
+
+        client = new MinaTaskClient( "client 1",
+                                     new TaskClientHandler() );
         NioSocketConnector connector = new NioSocketConnector();
-        SocketAddress address =  new InetSocketAddress( "127.0.0.1", 9123 );
-        client.connect( connector, address );        
+        SocketAddress address = new InetSocketAddress( "127.0.0.1",
+                                                       9123 );
+        client.connect( connector,
+                        address );
     }
-    
+
     protected void tearDown() throws Exception {
         super.tearDown();
         client.disconnect();
         server.stop();
     }
-    
+
     public void testTasksOwnedQueryWithI18N() throws Exception {
-        Map  vars = new HashedMap();     
-        vars.put( "users", users );
-        vars.put( "groups", groups );        
-        
+        Map vars = new HashedMap();
+        vars.put( "users",
+                  users );
+        vars.put( "groups",
+                  groups );
+
         //Reader reader;
         Reader reader = new InputStreamReader( getClass().getResourceAsStream( "QueryData_TasksOwned.mvel" ) );
-        List<Task> tasks = ( List<Task> ) eval( reader, vars );
-        for ( Task task : tasks) {
-            client.addTask( task );
+        List<Task> tasks = (List<Task>) eval( reader,
+                                              vars );
+        for ( Task task : tasks ) {
+            BlockingAddTaskResponseHandler responseHandler = new BlockingAddTaskResponseHandler();
+            client.addTask( task, responseHandler );
         }
-        
+
         // Test UK I18N  
         reader = new InputStreamReader( getClass().getResourceAsStream( "QueryResults_TasksOwnedInEnglish.mvel" ) );
-        Map<String, List<TaskSummary>> expected = ( Map<String, List<TaskSummary>> ) eval( reader, vars );
-           
+        Map<String, List<TaskSummary>> expected = (Map<String, List<TaskSummary>>) eval( reader,
+                                                                                         vars );
 
-        TaskSummaryResponseHandler responseHandler = new BlockingAllOpenTasksForUseResponseHandler();       
-        client.getTasksOwned( users.get( "peter" ).getId(), "en-UK", responseHandler );
-        List<TaskSummary> actual = responseHandler.getResults();       
-        assertEquals( 3, actual.size() );
-        assertTrue( CollectionUtils.equals( expected.get( "peter" ), actual ) );
+        BlockingAllOpenTasksForUseResponseHandler responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksOwned( users.get( "peter" ).getId(),
+                              "en-UK",
+                              responseHandler );
+        List<TaskSummary> actual = responseHandler.getResults();
+        assertEquals( 3,
+                      actual.size() );
+        assertTrue( CollectionUtils.equals( expected.get( "peter" ),
+                                            actual ) );
 
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();  
-        client.getTasksOwned( users.get( "steve" ).getId(), "en-UK", responseHandler );
-        actual = responseHandler.getResults();           
-        assertEquals( 2, actual.size() );
-        assertTrue( CollectionUtils.equals( expected.get( "steve" ), actual ) );
-        
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();  
-        client.getTasksOwned( users.get( "darth" ).getId(), "en-UK", responseHandler );
-        actual = responseHandler.getResults();        
-        assertEquals( 1, actual.size() );
-        assertTrue( CollectionUtils.equals( expected.get( "darth" ), actual ) );
-        
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksOwned( users.get( "steve" ).getId(),
+                              "en-UK",
+                              responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 2,
+                      actual.size() );
+        assertTrue( CollectionUtils.equals( expected.get( "steve" ),
+                                            actual ) );
+
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksOwned( users.get( "darth" ).getId(),
+                              "en-UK",
+                              responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 1,
+                      actual.size() );
+        assertTrue( CollectionUtils.equals( expected.get( "darth" ),
+                                            actual ) );
+
         // Test DK I18N 
         reader = new InputStreamReader( getClass().getResourceAsStream( "QueryResults_TasksOwnedInGerman.mvel" ) );
-        expected = ( Map<String, List<TaskSummary>> ) eval( reader, vars );            
-        
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();  
-        client.getTasksOwned(  users.get( "peter" ).getId(), "en-DK",  responseHandler   );
-        actual = responseHandler.getResults();        
-        assertEquals( 3, actual.size() );
-        assertTrue( CollectionUtils.equals( expected.get( "peter" ), actual ) );
+        expected = (Map<String, List<TaskSummary>>) eval( reader,
+                                                          vars );
 
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();  
-        client.getTasksOwned(  users.get( "steve" ).getId(), "en-DK",  responseHandler   );
-        actual = responseHandler.getResults();            
-        assertEquals( 2, actual.size() );
-        assertTrue( CollectionUtils.equals( expected.get( "steve" ), actual ) );
-        
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();  
-        client.getTasksOwned(  users.get( "darth" ).getId(), "en-DK",  responseHandler   );
-        actual = responseHandler.getResults();        
-        assertEquals( 1, actual.size() );
-        assertTrue( CollectionUtils.equals( expected.get( "darth" ), actual ) );              
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksOwned( users.get( "peter" ).getId(),
+                              "en-DK",
+                              responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 3,
+                      actual.size() );
+        assertTrue( CollectionUtils.equals( expected.get( "peter" ),
+                                            actual ) );
+
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksOwned( users.get( "steve" ).getId(),
+                              "en-DK",
+                              responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 2,
+                      actual.size() );
+        assertTrue( CollectionUtils.equals( expected.get( "steve" ),
+                                            actual ) );
+
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksOwned( users.get( "darth" ).getId(),
+                              "en-DK",
+                              responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 1,
+                      actual.size() );
+        assertTrue( CollectionUtils.equals( expected.get( "darth" ),
+                                            actual ) );
     }
-    
+
     public void testPeopleAssignmentQueries() {
         Map vars = new HashedMap();
         vars.put( "users",
@@ -112,74 +145,87 @@
         for ( Task task : tasks ) {
             taskService.addTask( task );
         }
-        
+
         reader = new InputStreamReader( getClass().getResourceAsStream( "QueryResults_PeopleAssignmentQuerries.mvel" ) );
         Map<String, List<TaskSummary>> expected = (Map<String, List<TaskSummary>>) eval( reader,
                                                                                          vars );
-        
-        TaskSummaryResponseHandler responseHandler = new BlockingAllOpenTasksForUseResponseHandler();       
-        client.getTasksAssignedAsTaskInitiator( users.get( "darth" ).getId(), "en-UK", responseHandler );
-        List<TaskSummary> actual = responseHandler.getResults();        
-        assertEquals( 1, actual.size() );     
+
+        BlockingAllOpenTasksForUseResponseHandler responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksAssignedAsTaskInitiator( users.get( "darth" ).getId(),
+                                                "en-UK",
+                                                responseHandler );
+        List<TaskSummary> actual = responseHandler.getResults();
+        assertEquals( 1,
+                      actual.size() );
         assertTrue( CollectionUtils.equals( expected.get( "darth" ),
-                                            actual ) );                       
-        
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();       
-        client.getTasksAssignedAsBusinessAdministrator( users.get( "steve" ).getId(), "en-UK", responseHandler );
-        actual = responseHandler.getResults();      
+                                            actual ) );
+
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksAssignedAsBusinessAdministrator( users.get( "steve" ).getId(),
+                                                        "en-UK",
+                                                        responseHandler );
+        actual = responseHandler.getResults();
         assertTrue( CollectionUtils.equals( expected.get( "steve" ),
-                                            actual ) );     
-        
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();       
-        client.getTasksAssignedAsExcludedOwner( users.get( "liz" ).getId(), "en-UK", responseHandler );
-        actual = responseHandler.getResults();              
-        assertEquals( 2, actual.size() );
+                                            actual ) );
+
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksAssignedAsExcludedOwner( users.get( "liz" ).getId(),
+                                                "en-UK",
+                                                responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 2,
+                      actual.size() );
         assertTrue( CollectionUtils.equals( expected.get( "liz" ),
-                                            actual ) );            
+                                            actual ) );
 
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();       
-        client.getTasksAssignedAsPotentialOwner( users.get( "bobba" ).getId(), "en-UK", responseHandler );
-        actual = responseHandler.getResults();         
-        assertEquals( 3, actual.size() );
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksAssignedAsPotentialOwner( users.get( "bobba" ).getId(),
+                                                 "en-UK",
+                                                 responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 3,
+                      actual.size() );
         assertTrue( CollectionUtils.equals( expected.get( "bobba" ),
-                                            actual ) );         
-     
-        
-        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();       
-        client.getTasksAssignedAsRecipient( users.get( "sly" ).getId(), "en-UK", responseHandler );
-        actual = responseHandler.getResults();             
-        assertEquals( 1, actual.size() );   
+                                            actual ) );
+
+        responseHandler = new BlockingAllOpenTasksForUseResponseHandler();
+        client.getTasksAssignedAsRecipient( users.get( "sly" ).getId(),
+                                            "en-UK",
+                                            responseHandler );
+        actual = responseHandler.getResults();
+        assertEquals( 1,
+                      actual.size() );
         assertTrue( CollectionUtils.equals( expected.get( "sly" ),
-                                            actual ) );                             
-    }    
-    
-    
-    public static class BlockingAllOpenTasksForUseResponseHandler implements TaskSummaryResponseHandler {
+                                            actual ) );
+    }
+
+    public static class BlockingAllOpenTasksForUseResponseHandler
+        implements
+        TaskSummaryResponseHandler {
         private volatile List<TaskSummary> results;
 
         public synchronized void execute(List<TaskSummary> results) {
             this.results = results;
-            notifyAll();                
+            notifyAll();
         }
-        
+
         public synchronized List<TaskSummary> getResults() {
-            if ( results == null ) {                  
+            if ( results == null ) {
                 try {
                     wait( 3000 );
                 } catch ( InterruptedException e ) {
                     e.printStackTrace();
                 }
             }
-            
+
             if ( results == null ) {
-                throw new RuntimeException("Timeout : unable to retrieve results" );
+                throw new RuntimeException( "Timeout : unable to retrieve results" );
             }
-            
+
             return results;
 
         }
-        
-    };    
-    
-    
+
+    };
+
 }

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel	2008-09-02 13:40:56 UTC (rev 22323)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/resources/org/drools/task/FullyPopulatedTask.mvel	2008-09-02 13:47:41 UTC (rev 22324)
@@ -22,7 +22,8 @@
                 attachedBy = users['liz' ],
                 contentType = "text",
                 name = "file.txt",
-                content = bytes1           
+                size = 5000,
+                contentId = 5           
              }),
              (with ( new Attachment() ) {
                  accessType = AccessType.Url, 
@@ -30,7 +31,8 @@
                  attachedBy = users['liz' ],
                  contentType = "text",
                  name = "file2.txt",
-                 content = "http://domain.org/file.txt".bytes
+                 size = 500,
+                 contentId = 3
              })
         ],
         comments = [ 




More information about the jboss-svn-commits mailing list