[jboss-svn-commits] JBL Code SVN: r32373 - 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
Fri Apr 2 17:42:40 EDT 2010


Author: KrisVerlaenen
Date: 2010-04-02 17:42:40 -0400 (Fri, 02 Apr 2010)
New Revision: 32373

Modified:
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Content.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java
   labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java
Log:
JBRULES-2468: Task with large content does not get persisted correctly
 - made sure the byte[] is read fully (not just the first 1024 bytes) when deserializing content

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Content.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Content.java	2010-04-02 19:37:03 UTC (rev 32372)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/Content.java	2010-04-02 21:42:40 UTC (rev 32373)
@@ -39,7 +39,7 @@
                                             ClassNotFoundException {
         id = in.readLong();
         content = new byte[ in.readInt() ];
-        in.read( content );
+        in.readFully( content );
     }
 
     public long getId() {

Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java	2010-04-02 19:37:03 UTC (rev 32372)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/task/service/ContentData.java	2010-04-02 21:42:40 UTC (rev 32373)
@@ -69,7 +69,7 @@
     	}
     	if (in.readBoolean()) {
     		content = new byte[ in.readInt() ];
-    		in.read( content );
+    		in.readFully( content );
     	}
     }
 

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	2010-04-02 19:37:03 UTC (rev 32372)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/test/java/org/drools/task/service/TaskServiceLifeCycleTest.java	2010-04-02 21:42:40 UTC (rev 32373)
@@ -132,6 +132,46 @@
         assertEquals("content", new String(content.getContent()));
     }
     
+    public void testNewTaskWithLargeContent() {
+        Map  vars = new HashedMap();     
+        vars.put( "users", users );
+        vars.put( "groups", groups );        
+        vars.put( "now", new Date() );
+        
+        String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
+        str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [users['bobba' ] ], }),";                        
+        str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";
+            
+        ContentData data = new ContentData();
+        data.setAccessType(AccessType.Inline);
+        data.setType("type");
+        String largeContent = "";
+        for (int i = 0; i < 1000; i++) {
+        	largeContent += i + "xxxxxxxxx";
+        }
+        data.setContent(largeContent.getBytes());
+        BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
+        Task task = ( Task )  eval( new StringReader( str ), vars );
+        client.addTask( task, data, addTaskResponseHandler );
+        
+        long taskId = addTaskResponseHandler.getTaskId();
+        
+        // Task should be assigned to the single potential owner and state set to Reserved
+        BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); 
+        client.getTask( taskId, getTaskResponseHandler );
+        Task task1 = getTaskResponseHandler.getTask();
+        assertEquals( AccessType.Inline, task1.getTaskData().getDocumentAccessType() );
+        assertEquals( "type", task1.getTaskData().getDocumentType() );
+        long contentId = task1.getTaskData().getDocumentContentId();
+        assertTrue( contentId != -1 ); 
+
+        BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler();
+        client.getContent(contentId, getContentResponseHandler);
+        Content content = getContentResponseHandler.getContent();
+        System.out.println(new String(content.getContent()));
+        assertEquals(largeContent, new String(content.getContent()));
+    }
+    
     public void testClaimWithMultiplePotentialOwners() throws Exception {
         Map  vars = new HashedMap();     
         vars.put( "users", users );



More information about the jboss-svn-commits mailing list