/**
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jbpm.task.service;
import java.io.StringReader;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.jbpm.task.AccessType;
import org.jbpm.task.BaseTest;
import org.jbpm.task.Content;
import org.jbpm.task.Status;
import org.jbpm.task.Task;
import org.jbpm.task.service.TaskClient;
import org.jbpm.task.service.TaskServer;
import org.jbpm.task.service.responsehandlers.BlockingAddTaskResponseHandler;
import org.jbpm.task.service.responsehandlers.BlockingGetContentResponseHandler;
import org.jbpm.task.service.responsehandlers.BlockingGetTaskResponseHandler;
import org.jbpm.task.service.responsehandlers.BlockingTaskOperationResponseHandler;
public abstract class TaskServiceTaskAttributesBaseTest extends BaseTest {
protected TaskServer server;
protected TaskClient client;
@Override
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
client.disconnect();
}
public void testAddRemoveOutput() {
Map vars = new HashMap();
vars.put( "users", users );
vars.put( "groups", groups );
vars.put( "now", new Date() );
String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now,";
str += "actualOwner = new User('Darth Vader')}),";
str += "deadlines = new Deadlines(),";
str += "delegation = new Delegation(),";
str += "peopleAssignments = new PeopleAssignments(),";
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, null, addTaskResponseHandler );
long taskId = addTaskResponseHandler.getTaskId();
ContentData outputData = new ContentData();
outputData.setAccessType(AccessType.Inline);
outputData.setContent("This is my output!!!!".getBytes());
outputData.setType("text/plain");
BlockingTaskOperationResponseHandler setOutputResponseHandler = new BlockingTaskOperationResponseHandler();
client.setOutput( taskId, "Darth Vader", outputData, setOutputResponseHandler );
setOutputResponseHandler.waitTillDone(1000);
assertFalse( setOutputResponseHandler.hasError() );
BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask( taskId, getTaskResponseHandler );
Task task1 = getTaskResponseHandler.getTask();
assertNotSame(task, task1);
assertFalse( task.equals( task1) );
long outputContentId = task1.getTaskData().getOutputContentId();
assertNotSame(0, outputContentId);
BlockingGetContentResponseHandler getOutputResponseHandler = new BlockingGetContentResponseHandler();
client.getContent(outputContentId, getOutputResponseHandler);
assertNotNull(getOutputResponseHandler.getContent());
Content content = getOutputResponseHandler.getContent();
assertEquals("This is my output!!!!", new String(content.getContent()));
assertEquals("text/plain", task1.getTaskData().getOutputType());
assertEquals(AccessType.Inline, task1.getTaskData().getOutputAccessType());
assertEquals(outputContentId, content.getId());
// Make the same as the returned tasks, so we can test equals
task.getTaskData().setOutput( outputContentId, outputData );
task.getTaskData().setStatus( Status.Created );
assertEquals(task, task1);
//test delete output
BlockingTaskOperationResponseHandler deleteOutputResponseHandler = new BlockingTaskOperationResponseHandler();
client.deleteOutput( taskId, "Darth Vader", deleteOutputResponseHandler );
deleteOutputResponseHandler.waitTillDone( 1000 );
getTaskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask( taskId, getTaskResponseHandler );
task1 = getTaskResponseHandler.getTask();
assertEquals(0, task1.getTaskData().getOutputContentId() );
assertNull( task1.getTaskData().getOutputAccessType() );
assertNull( task1.getTaskData().getOutputType() );
}
public void testAddRemoveFault() throws Exception {
Map vars = new HashMap();
vars.put( "users", users );
vars.put( "groups", groups );
vars.put( "now", new Date() );
String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now,";
str += "actualOwner = new User('Darth Vader')}),";
str += "deadlines = new Deadlines(),";
str += "delegation = new Delegation(),";
str += "peopleAssignments = new PeopleAssignments(),";
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, null, addTaskResponseHandler );
long taskId = addTaskResponseHandler.getTaskId();
FaultData faultData = new FaultData();
faultData.setAccessType(AccessType.Inline);
faultData.setContent("This is my fault!!!!".getBytes());
faultData.setFaultName("fault1");
faultData.setType("text/plain");
BlockingTaskOperationResponseHandler setFaultResponseHandler = new BlockingTaskOperationResponseHandler();
client.setFault( taskId, "Darth Vader", faultData, setFaultResponseHandler );
setFaultResponseHandler.waitTillDone(1000);
assertFalse( setFaultResponseHandler.hasError() );
BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask( taskId, getTaskResponseHandler );
Task task1 = getTaskResponseHandler.getTask();
assertNotSame(task, task1);
assertFalse( task.equals( task1) );
long faultContentId = task1.getTaskData().getFaultContentId();
assertNotSame(0, faultContentId);
BlockingGetContentResponseHandler getFaultResponseHandler = new BlockingGetContentResponseHandler();
client.getContent(faultContentId, getFaultResponseHandler);
assertNotNull(getFaultResponseHandler.getContent());
Content content = getFaultResponseHandler.getContent();
assertEquals("This is my fault!!!!", new String(content.getContent()));
assertEquals("text/plain", task1.getTaskData().getFaultType());
assertEquals("fault1", task1.getTaskData().getFaultName());
assertEquals(AccessType.Inline, task1.getTaskData().getFaultAccessType());
assertEquals(faultContentId, content.getId());
// Make the same as the returned tasks, so we can test equals
task.getTaskData().setOutput( faultContentId, faultData );
task.getTaskData().setStatus( Status.Created );
assertEquals(task, task1);
//test delete fault
BlockingTaskOperationResponseHandler deleteFaultResponseHandler = new BlockingTaskOperationResponseHandler();
client.deleteFault( taskId, "Darth Vader", deleteFaultResponseHandler );
deleteFaultResponseHandler.waitTillDone( 1000 );
getTaskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask( taskId, getTaskResponseHandler );
task1 = getTaskResponseHandler.getTask();
assertEquals(0, task1.getTaskData().getFaultContentId() );
assertNull( task1.getTaskData().getFaultAccessType() );
assertNull( task1.getTaskData().getFaultType() );
assertNull( task1.getTaskData().getFaultName() );
}
public void testSetPriority() throws Exception {
Map vars = new HashMap();
vars.put( "users", users );
vars.put( "groups", groups );
vars.put( "now", new Date() );
String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now,";
str += "actualOwner = new User('Darth Vader')}),";
str += "deadlines = new Deadlines(),";
str += "delegation = new Delegation(),";
str += "peopleAssignments = new PeopleAssignments(),";
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, null, addTaskResponseHandler );
long taskId = addTaskResponseHandler.getTaskId();
int newPriority = 33;
BlockingTaskOperationResponseHandler setPriorityResponseHandler = new BlockingTaskOperationResponseHandler();
client.setPriority(taskId, "Darth Vader", newPriority, setPriorityResponseHandler );
setPriorityResponseHandler.waitTillDone(1000);
assertFalse( setPriorityResponseHandler.hasError() );
BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
client.getTask( taskId, getTaskResponseHandler );
Task task1 = getTaskResponseHandler.getTask();
assertNotSame(task, task1);
assertFalse( task.equals( task1) );
int newPriority1 = task1.getPriority();
assertEquals(newPriority, newPriority1);
// Make the same as the returned tasks, so we can test equals
task.setPriority( newPriority );
task.getTaskData().setStatus( Status.Created );
assertEquals(task, task1);
}
}