Package org.jbpm.task.service.jms

Source Code of org.jbpm.task.service.jms.JMSTaskServerTest

package org.jbpm.task.service.jms;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import junit.framework.TestCase;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.drools.SystemEventListenerFactory;
import org.easymock.EasyMock;
import org.jbpm.task.Group;
import org.jbpm.task.I18NText;
import org.jbpm.task.Status;
import org.jbpm.task.Task;
import org.jbpm.task.TaskData;
import org.jbpm.task.User;
import org.jbpm.task.service.ContentData;
import org.jbpm.task.service.TaskClient;
import org.jbpm.task.service.TaskServer;
import org.jbpm.task.service.TaskService;
import org.jbpm.task.service.TaskServiceSession;
import org.jbpm.task.service.responsehandlers.BlockingAddTaskResponseHandler;

/**
* Test case to see if this component works.
*
* @author Mariano De Maio
*/
public class JMSTaskServerTest extends TestCase {

  /**
   * Initial context
   */
  private Context context;
 
  /**
   * server instance
   */
  private TaskServer server;
 
  /**
   * Starts the server
   */
  @Override
  protected void setUp() throws Exception {

    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
   
    this.context = EasyMock.createMock(Context.class);
    EasyMock.expect(context.lookup("ConnectionFactory")).andReturn(factory).anyTimes();
    EasyMock.replay(context);
   
    EntityManagerFactory localEntityManagerFactory = Persistence.createEntityManagerFactory("org.jbpm.task");
    TaskService localTaskService = new TaskService(localEntityManagerFactory, SystemEventListenerFactory.getSystemEventListener());
    TaskServiceSession localTaskServiceSession = localTaskService.createSession();
    for (int i = 0; i < 10; i++) {
      User user = new User("usr" + i);
      localTaskServiceSession.addUser(user);
    }
    for (int j = 0; j < 3; j++) {
      localTaskServiceSession.addGroup(new Group("grp" + j));
    }

      Properties serverProperties = new Properties();
    serverProperties.setProperty("JMSTaskServer.connectionFactory", "ConnectionFactory");
    serverProperties.setProperty("JMSTaskServer.transacted", "true");
    serverProperties.setProperty("JMSTaskServer.acknowledgeMode", "AUTO_ACKNOWLEDGE");
    serverProperties.setProperty("JMSTaskServer.queueName", "tasksQueue");
    serverProperties.setProperty("JMSTaskServer.responseQueueName", "tasksResponseQueue");
     
    this.server = new JMSTaskServer(localTaskService, serverProperties, context);
    Thread thread = new Thread(this.server);
    thread.start();
    localTaskServiceSession.dispose();
  }
 
  /**
   * Creates a new client
   * @return the created client.
   */
  protected TaskClient createTaskClient() {
    Properties clientProperties = new Properties();
    clientProperties.setProperty("JMSTaskClient.connectionFactory", "ConnectionFactory");
    clientProperties.setProperty("JMSTaskClient.transactedQueue", "true");
    clientProperties.setProperty("JMSTaskClient.acknowledgeMode", "AUTO_ACKNOWLEDGE");
    clientProperties.setProperty("JMSTaskClient.queueName", "tasksQueue");
    clientProperties.setProperty("JMSTaskClient.responseQueueName", "tasksResponseQueue");
    TaskClient client = new TaskClient(
        new JMSTaskClientConnector(
            "org.jbpm.process.workitem.wsht.WSThroughJMSHumanTaskHandler",
            new JMSTaskClientHandler(SystemEventListenerFactory.getSystemEventListener()),
            clientProperties, context
        )
    );
   
    return client;
  }
 
  /**
   * Stops the server
   */
  @Override
  protected void tearDown() throws Exception {
    server.stop();
  }
 
  /**
   * Tests two consecutive connections to see how it works.
   * @throws Exception
   */
  public void testDoubleUsage() throws Exception {
   
    while(!server.isRunning()) {
      Thread.sleep(100); // waits until the server finishes the startup
    }
   
    TaskClient client = createTaskClient();
   
    client.connect();
   
    Task task = new Task();
    List<I18NText> names1 = new ArrayList<I18NText>();
    I18NText text1 = new I18NText("en-UK", "tarea1");
    names1.add(text1);
    task.setNames(names1);
    TaskData taskData = new TaskData();
    taskData.setStatus(Status.Created);
    taskData.setCreatedBy(new User("usr0"));
    taskData.setActualOwner(new User("usr0"));
    task.setTaskData(taskData);
   
    ContentData data = new ContentData();
    BlockingAddTaskResponseHandler addTaskHandler = new BlockingAddTaskResponseHandler();
    client.addTask(task, data, addTaskHandler);
   
    long taskId = addTaskHandler.getTaskId();

    client.disconnect();
   
    client.connect();
   
    assertTrue("taskId debe ser un valor mayor a cero", taskId > 0);
   
    Task task2 = new Task();
    List<I18NText> names2 = new ArrayList<I18NText>();
    I18NText text2 = new I18NText("en-UK", "tarea1");
    names2.add(text2);
    task2.setNames(names2);
    TaskData taskData2 = new TaskData();
    taskData2.setStatus(Status.Created);
    taskData2.setCreatedBy(new User("usr0"));
    taskData2.setActualOwner(new User("usr0"));
    task2.setTaskData(taskData2);
     
    ContentData data2 = new ContentData();
    BlockingAddTaskResponseHandler addTaskHandler2 = new BlockingAddTaskResponseHandler();
    client.addTask(task2, data2, addTaskHandler2);
   
    long taskId2 = addTaskHandler2.getTaskId();
   
    assertTrue("taskId2 debe ser un valor mayor a cero", taskId2 > 0);
    assertNotSame("taskId y taskId2 deben ser distintos", taskId, taskId2);
   
    client.disconnect();
  }
 
}
TOP

Related Classes of org.jbpm.task.service.jms.JMSTaskServerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.