[jboss-svn-commits] JBL Code SVN: r33594 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-local/src/main/java/org/drools/grid/local and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jun 22 09:37:17 EDT 2010
Author: salaboy21
Date: 2010-06-22 09:37:15 -0400 (Tue, 22 Jun 2010)
New Revision: 33594
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/MinaRemoteHumanTaskConnector.java
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaRemoteNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskFactoryService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java
Log:
refactoring grid task to run with new semantic, it looks a little bit hacky but I need to improve the end user interfaces
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -1,7 +1,5 @@
package org.drools.grid.internal;
-import org.drools.grid.internal.GenericIoWriter;
-import org.drools.grid.internal.Message;
import java.util.ArrayList;
import java.util.List;
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -40,7 +40,7 @@
}
public void disconnect() throws ConnectorException {
- connection.dispose();
+ //do nothing
}
public String getId() throws ConnectorException {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -98,7 +98,6 @@
}
public void disconnect() throws ConnectorException {
- connection.dispose();
System.out.println("DisConnected to Directory Server "+this.address);
if (session != null && session.isConnected()) {
session.close();
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaRemoteNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaRemoteNodeConnector.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaRemoteNodeConnector.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -74,7 +74,7 @@
}
public void disconnect() throws ConnectorException {
- connection.dispose();
+
if (session != null && session.isConnected()) {
session.close();
session.getCloseFuture().join();
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/TaskServerInstance.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -23,14 +23,13 @@
public HumanTaskService getTaskClient() throws ConnectorException {
GenericConnection connection = getConnector().getConnection();
HumanTaskService htService = (HumanTaskService) connection.getHumanTaskNode(new ReturnFirstHumanTaskServiceSelectionStrategy(1, getConnector()));
- htService.connect();
+
return htService;
}
public HumanTaskService getTaskClient(HumanTaskSelectionStrategy strategy) throws ConnectorException {
GenericConnection connection = getConnector().getConnection();
HumanTaskService htService = (HumanTaskService) connection.getHumanTaskNode(strategy);
- htService.connect();
return htService;
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandler.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -14,15 +14,12 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.drools.SystemEventListenerFactory;
import org.drools.eventmessaging.EventKey;
import org.drools.eventmessaging.Payload;
import org.drools.grid.ConnectorException;
-import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.GenericHumanTaskConnector;
import org.drools.grid.internal.Message;
-import org.drools.grid.remote.mina.MinaIoHandler;
-import org.drools.grid.remote.mina.MinaRemoteNodeConnector;
import org.drools.grid.task.TaskClientMessageHandlerImpl.AddTaskMessageResponseHandler;
import org.drools.grid.task.TaskClientMessageHandlerImpl.GetContentMessageResponseHandler;
import org.drools.grid.task.TaskClientMessageHandlerImpl.GetTaskMessageResponseHandler;
@@ -62,8 +59,8 @@
private String ipAddress = "127.0.0.1";
private int port = 9124;
- private SocketAddress address;
- private GenericNodeConnector connector;
+
+ private GenericHumanTaskConnector connector;
private HumanTaskServiceImpl client;
private KnowledgeRuntime session;
private Map<Long, Long> idMapping = new HashMap<Long, Long>();
@@ -71,19 +68,17 @@
public CommandBasedServicesWSHumanTaskHandler(KnowledgeRuntime session) {
this.session = session;
- this.address = new InetSocketAddress(ipAddress, port);
+
}
public void setAddress(String ipAddress, int port){
- this.address = new InetSocketAddress(ipAddress, port);
+ this.ipAddress = ipAddress;
+ this.port = port;
}
public void connect() throws ConnectorException {
if (connector == null) {
- NioSocketConnector htclientConnector = new NioSocketConnector();
- htclientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
- connector = new MinaRemoteNodeConnector("client ht",
- htclientConnector,
- this.address,
+ connector = new MinaRemoteHumanTaskConnector("client ht",
+ ipAddress, port,
SystemEventListenerFactory.getSystemEventListener());
connector.connect();
int id = ((StatefulKnowledgeSession) session).getId();
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskFactoryService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskFactoryService.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskFactoryService.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -2,14 +2,8 @@
import org.drools.grid.HumanTaskNodeService;
import org.drools.Service;
-import org.drools.grid.GenericNodeConnector;
-
-
-
public interface HumanTaskFactoryService extends Service {
- public HumanTaskNodeService newHumanTaskService();
-
-
+ public HumanTaskNodeService newHumanTaskService();
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskService.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskService.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -56,6 +56,5 @@
public void getTasksAssignedAsTaskInitiator(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
public void getTasksAssignedAsTaskStakeholder(String userId, String language, TaskSummaryMessageResponseHandler responseHandler);
public void registerForEvent(EventKey key, boolean remove, EventMessageResponseHandler responseHandler);
- public void connect() throws ConnectorException;
public void disconnect() throws ConnectorException;
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceImpl.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -1,13 +1,12 @@
package org.drools.grid.task;
-
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.drools.eventmessaging.EventKey;
import org.drools.grid.ConnectorException;
-import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.GenericHumanTaskConnector;
import org.drools.grid.internal.Message;
import org.drools.grid.task.TaskClientMessageHandlerImpl.AddAttachmentMessageResponseHandler;
import org.drools.grid.task.TaskClientMessageHandlerImpl.AddCommentMessageResponseHandler;
@@ -37,12 +36,12 @@
*/
public class HumanTaskServiceImpl implements HumanTaskService {
- private final GenericNodeConnector client;
+ private final GenericHumanTaskConnector client;
private final AtomicInteger counter;
private int sessionId;
private String clientName;
- public HumanTaskServiceImpl(GenericNodeConnector client, int sessionId) {
+ public HumanTaskServiceImpl(GenericHumanTaskConnector client, int sessionId) {
this.client = client;
this.counter = new AtomicInteger();
this.clientName = String.valueOf(sessionId);
@@ -50,13 +49,10 @@
}
- //@Override
- public void connect() throws ConnectorException {
- this.client.connect();
- }
+
public void disconnect() throws ConnectorException {
- this.client.disconnect();
+ this.client.disconnect();
}
public void addTask(Task task, ContentData content, AddTaskMessageResponseHandler responseHandler) {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/HumanTaskServiceProviderRemoteClient.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -17,8 +17,11 @@
package org.drools.grid.task;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.GenericHumanTaskConnector;
import org.drools.grid.HumanTaskNodeService;
-import org.drools.grid.GenericNodeConnector;
/**
*
@@ -26,22 +29,22 @@
*/
public class HumanTaskServiceProviderRemoteClient implements HumanTaskFactoryService {
- private GenericNodeConnector connector;
+ private GenericHumanTaskConnector connector;
private int id;
public HumanTaskServiceProviderRemoteClient() {
}
- public HumanTaskServiceProviderRemoteClient(GenericNodeConnector connector, int id) {
+ public HumanTaskServiceProviderRemoteClient(GenericHumanTaskConnector connector, int id) {
this.connector = connector;
this.id = id;
}
- public GenericNodeConnector getConnector() {
+ public GenericHumanTaskConnector getConnector() {
return connector;
}
- public void setConnector(GenericNodeConnector connector) {
+ public void setConnector(GenericHumanTaskConnector connector) {
this.connector = connector;
}
@@ -53,13 +56,15 @@
this.id = id;
}
-
- //@Override
public HumanTaskNodeService newHumanTaskService() {
-
-
- return new HumanTaskServiceImpl(this.connector, this.id);
-
+ HumanTaskServiceImpl humanTaskServiceImpl = null;
+ try {
+ this.connector.connect();
+ humanTaskServiceImpl = new HumanTaskServiceImpl(this.connector, this.id);
+ } catch (ConnectorException ex) {
+ Logger.getLogger(HumanTaskServiceProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return humanTaskServiceImpl;
}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/MinaRemoteHumanTaskConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/MinaRemoteHumanTaskConnector.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/MinaRemoteHumanTaskConnector.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -0,0 +1,136 @@
+package org.drools.grid.task;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.mina.core.future.ConnectFuture;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
+import org.apache.mina.transport.socket.SocketConnector;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericHumanTaskConnector;
+import org.drools.grid.HumanTaskNodeService;
+
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.remote.RemoteConnection;
+import org.drools.grid.remote.mina.MinaIoHandler;
+
+public class MinaRemoteHumanTaskConnector
+ implements
+ GenericHumanTaskConnector {
+
+ protected IoSession session;
+ protected final String name;
+ protected AtomicInteger counter;
+ protected SocketConnector connector;
+ protected SocketAddress address;
+ protected SystemEventListener eventListener;
+ protected RemoteConnection connection;
+
+ public MinaRemoteHumanTaskConnector(String name,
+ String providerAddress, Integer providerPort,
+ SystemEventListener eventListener) {
+
+ SocketConnector minaconnector = new NioSocketConnector();
+ minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ if (name == null) {
+ throw new IllegalArgumentException("Name can not be null");
+ }
+ this.name = name;
+ this.counter = new AtomicInteger();
+ this.address = new InetSocketAddress(providerAddress, providerPort);
+ this.connector = minaconnector;
+ this.eventListener = eventListener;
+ this.connection = new RemoteConnection();
+ }
+
+ public void connect() throws ConnectorException {
+ if (session != null && session.isConnected()) {
+ throw new IllegalStateException("Already connected. Disconnect first.");
+ }
+
+ try {
+ this.connector.getFilterChain().addLast("codec",
+ new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
+
+ ConnectFuture future1 = this.connector.connect(this.address);
+ future1.await(2000);
+ if (!future1.isConnected()) {
+ eventListener.info("unable to connect : " + address + " : " + future1.getException());
+ Logger.getLogger(MinaRemoteHumanTaskConnector.class.getName()).log(Level.SEVERE, null, "The Node Connection Failed!");
+ throw new ConnectorException("unable to connect : " + address + " : " + future1.getException());
+ }
+ eventListener.info("connected : " + address);
+ this.session = future1.getSession();
+ } catch (Exception e) {
+ throw new ConnectorException(e);
+ }
+ }
+
+ public void disconnect() throws ConnectorException {
+
+ if (session != null && session.isConnected()) {
+ session.close();
+ session.getCloseFuture().join();
+ }
+ }
+
+ private void addResponseHandler(int id,
+ MessageResponseHandler responseHandler) {
+ ((MinaIoHandler) this.connector.getHandler()).addResponseHandler(id,
+ responseHandler);
+ }
+
+ public void write(Message msg,
+ MessageResponseHandler responseHandler) {
+ if (responseHandler != null) {
+ addResponseHandler(msg.getResponseId(),
+ responseHandler);
+ }
+ this.session.write(msg);
+ }
+
+ public Message write(Message msg) throws ConnectorException {
+ BlockingMessageResponseHandler responseHandler = new BlockingMessageResponseHandler();
+
+ if (responseHandler != null) {
+ addResponseHandler(msg.getResponseId(),
+ responseHandler);
+ }
+ this.session.write(msg);
+
+ Message returnMessage = responseHandler.getMessage();
+ if (responseHandler.getError() != null) {
+ throw responseHandler.getError();
+ }
+
+ return returnMessage;
+ }
+
+ public String getId() {
+ String hostName = ((InetSocketAddress) this.address).getHostName();
+ int hostPort = ((InetSocketAddress) this.address).getPort();
+ return "Mina:" + this.name + ":" + hostName + ":" + hostPort;
+ }
+
+ public void setSession(Object object) {
+ this.session = (IoSession) object;
+ }
+
+ public GenericConnection getConnection() {
+ return this.connection;
+ }
+
+ public HumanTaskNodeService getHumanTaskNodeService() throws ConnectorException {
+ return new HumanTaskServiceImpl(this, (int) this.session.getId());
+ }
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerMessageHandlerImpl.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerMessageHandlerImpl.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -42,12 +42,12 @@
this.systemEventListener = systemEventListener;
}
-
+
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
systemEventListener.exception("Uncaught exception on Server", cause);
}
-
+
public void messageReceived(GenericIoWriter session, Message msg) throws Exception {
Command cmd = (Command) ((Message)msg).getPayload();
TaskServiceSession taskSession = service.createSession();
@@ -428,7 +428,7 @@
}
}
-
+
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
systemEventListener.debug("Server IDLE " + session.getIdleCount(status));
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java 2010-06-22 12:53:30 UTC (rev 33593)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/test/java/org/drools/grid/task/CommandBasedServicesWSHumanTaskHandlerTest.java 2010-06-22 13:37:15 UTC (rev 33594)
@@ -3,21 +3,20 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
+import junit.framework.Assert;
import org.apache.commons.collections.map.HashedMap;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactoryService;
import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericHumanTaskConnector;
import org.drools.io.impl.ClassPathResource;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.grid.internal.NodeData;
@@ -41,18 +40,14 @@
public class CommandBasedServicesWSHumanTaskHandlerTest extends BaseTaskServiceTest {
-
-
private MinaAcceptor server;
private MinaAcceptor humanTaskServer;
- //private NodeConnector nodeConnection;
-
protected EntityManagerFactory emf;
-
protected static TaskService taskService;
protected TaskServiceSession taskSession;
- protected GenericNodeConnector htMinaClient;
+ protected GenericHumanTaskConnector htMinaClient;
protected GenericNodeConnector minaClient;
+
@Before
public void setUpTaskService() throws Exception {
Properties conf = new Properties();
@@ -98,94 +93,106 @@
reader.close();
}
}
-
-
- SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+
+ // Execution Node Server configuration
+ String execAddress = "127.0.0.1";
+ int execPort = 9123;
+
+
NodeData nodeData = new NodeData();
// Setup Execution Node Server
SocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
new GenericMessageHandlerImpl(nodeData,
SystemEventListenerFactory.getSystemEventListener())));
- this.server = new MinaAcceptor(acceptor, address);
+ this.server = new MinaAcceptor(acceptor, execAddress, execPort);
this.server.start();
+ System.out.println("Execution Server Started");
Thread.sleep(5000);
// End Execution Server
+
+
+
+
// Human task Server configuration
- SocketAddress htAddress = new InetSocketAddress("127.0.0.1", 9124);
+ String htAddress = "127.0.0.1";
+ int htPort = 9124;
+
SocketAcceptor htAcceptor = new NioSocketAcceptor();
-
htAcceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
new TaskServerMessageHandlerImpl(taskService,
SystemEventListenerFactory.getSystemEventListener())));
- this.humanTaskServer = new MinaAcceptor(htAcceptor, htAddress);
+ this.humanTaskServer = new MinaAcceptor(htAcceptor, htAddress, htPort);
this.humanTaskServer.start();
Thread.sleep(5000);
+ System.out.println("Human Task Server Started");
// End Human task Server configuration
// setup the ht client
- NioSocketConnector htclientConnector = new NioSocketConnector();
- htclientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
- htMinaClient = new MinaRemoteNodeConnector("client ht",
- htclientConnector,
+
+ htMinaClient = new MinaRemoteHumanTaskConnector("client ht",
htAddress,
+ htPort,
SystemEventListenerFactory.getSystemEventListener());
- htMinaClient.connect();
+ // setup Remote client
- // setup RemoteService client
- NioSocketConnector clientConnector = new NioSocketConnector();
- clientConnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
- minaClient = new MinaRemoteNodeConnector("client SM",
- clientConnector,
- address,
+ minaClient = new MinaRemoteNodeConnector("client Exec Node",
+ execAddress,
+ execPort,
SystemEventListenerFactory.getSystemEventListener());
connection.addExecutionNode(minaClient);
+ connection.addHumanTaskNode(htMinaClient);
+ // this will create a connection to the exec node
+ node = connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy());
- node = connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy(connection));
- //nodeConnection.connect();
-
-
-
-
-
KnowledgeBase kbase = this.node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
int sessionId = ksession.getId();
node.set(HumanTaskFactoryService.class, new HumanTaskServiceProviderRemoteClient(htMinaClient, sessionId));
+ //this will create a connection from the ht client to the ht server
+ this.humanTaskClient = (HumanTaskService) this.node.get(HumanTaskFactoryService.class).newHumanTaskService();
- this.humanTaskClient = (HumanTaskService) this.node.get(HumanTaskFactoryService.class).newHumanTaskService();
-
+ //this will create a connection from the session to the ht server
+ this.handler = new CommandBasedServicesWSHumanTaskHandler(ksession);
- this.handler = new CommandBasedServicesWSHumanTaskHandler(ksession);
-
-
+
}
+
@After
public void tearDown() throws Exception {
+
+ this.handler.dispose();
+
this.humanTaskClient.disconnect();
-
- for(GenericNodeConnector connector : connection.getNodeConnectors()){
- connector.disconnect();
- }
-
- this.handler.dispose();
+
+ connection.dispose();
+
+ Thread.sleep(500);
+
+ Assert.assertEquals(0, server.getCurrentSessions());
this.server.stop();
+
+ Assert.assertEquals(0, humanTaskServer.getCurrentSessions());
this.humanTaskServer.stop();
+
+
+
+
taskSession.dispose();
emf.close();
-
-
+
+
}
public Object eval(Reader reader,
- Map vars) {
+ Map vars) {
try {
return eval(toString(reader),
vars);
More information about the jboss-svn-commits
mailing list