[jboss-svn-commits] JBL Code SVN: r33556 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid and 13 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jun 18 17:49:38 EDT 2010
Author: salaboy21
Date: 2010-06-18 17:49:36 -0400 (Fri, 18 Jun 2010)
New Revision: 33556
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaDirectoryProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaNodeProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java
Removed:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteImpl.java
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.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/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvByPrioritySelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerInstanceNodeRunner.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
Log:
some API revision in service and some low level changes
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/pom.xml 2010-06-18 21:49:36 UTC (rev 33556)
@@ -8,7 +8,7 @@
<version>5.1.0.SNAPSHOT</version>
</parent>
<groupId>org.drools</groupId>
- <artifactId>drools-grid-remote-dir-min</artifactId>
+ <artifactId>drools-grid-remote-dir-mina</artifactId>
<name>Drools :: Grid :: Remote Directory :: Mina</name>
@@ -25,6 +25,12 @@
<version>5.1.0.SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-grid-local</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
<!-- Apache Mina for default Service Remote Implementation -->
<dependency>
<groupId>org.apache.mina</groupId>
@@ -39,5 +45,11 @@
<version>4.8.1</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-grid-remote-mina</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
</dependencies>
</project>
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * 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.
+ * under the License.
+ */
+
+package org.drools.grid.remote.directory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.drools.KnowledgeBase;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.internal.commands.SimpleCommand;
+import org.drools.grid.internal.commands.SimpleCommandName;
+import org.drools.grid.internal.responsehandlers.BlockingMessageDirectoryMapRequestResponseHandler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryNodeRemoteClient implements DirectoryNodeService {
+ private MinaRemoteDirectoryConnector connector;
+
+ DirectoryNodeRemoteClient(MinaRemoteDirectoryConnector connector) {
+ this.connector = connector;
+ }
+
+
+
+ public void register(String executorId, String resourceId) throws ConnectorException {
+ List<Object> args = new ArrayList<Object>(2);
+ args.add(executorId);
+ args.add(resourceId);
+ SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RegisterExecutor, args);
+ Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+ connector.write(msg, null);
+ }
+
+ public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public GenericNodeConnector lookup(String resourceId) throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+// SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestLookupSession, null);
+// Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+// BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
+// connector.write(msg, handler);
+// SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
+// return (Map<String,String>)resultcmd.getArguments().get(0);
+ }
+
+ public void registerKBase(String kbaseId, String resourceId) throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void addService(GenericNodeConnector service) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Map<String, String> getDirectoryMap() throws ConnectorException {
+
+ SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestDirectoryMap, null);
+ Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+ BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
+ connector.write(msg, handler);
+ SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
+ return (Map<String,String>)resultcmd.getArguments().get(0);
+ }
+
+ public DirectoryNodeService getDirectoryNodeService() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void connect() throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void disconnect() throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Message write(Message msg) throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String getId() throws ConnectorException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public GenericConnection getConnection() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void write(Message msg, MessageResponseHandler responseHandler) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String lookupId(String resourceId) throws ConnectorException {
+ SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestLookupSession, null);
+ Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+ BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
+ connector.write(msg, handler);
+ SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
+ return (String)resultcmd.getArguments().get(0);
+ }
+
+}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteImpl.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteImpl.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -1,109 +0,0 @@
-/*
- * Copyright 2010 salaboy.
- *
- * 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.
- * under the License.
- */
-package org.drools.grid.remote.directory;
-
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicInteger;
-import org.drools.KnowledgeBase;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.GenericConnection;
-import org.drools.grid.GenericNodeConnector;
-import org.drools.grid.internal.Message;
-import org.drools.grid.internal.MessageResponseHandler;
-
-/**
- *
- * @author salaboy
- */
-public class DirectoryNodeRemoteImpl implements DirectoryNodeService {
- private final GenericNodeConnector client;
- private AtomicInteger counter;
- private int sessionId;
- private String clientName;
-
-
- public DirectoryNodeRemoteImpl(String name, GenericNodeConnector client) {
- this.clientName = name;
- this.client = client;
-
- }
-
- public String getId() throws RemoteException {
- return this.clientName;
- }
-
- public void register(String executorId, String resourceId) throws RemoteException {
- System.out.println("Registering: " + executorId + " -- " + resourceId);
- directoryMap.put(executorId, resourceId);
- }
-
- public GenericNodeConnector lookup(String executorId) throws RemoteException {
- GenericNodeConnector sessionService = null;
- String sessionServiceId = (String) directoryMap.get(executorId);
- System.out.println("Registry = " + directoryMap.toString());
- System.out.println("Nodes Services = " + services);
- for (GenericNodeConnector ss : services) {
- System.out.println("Session Service id = " + ss.getId() + "needs to match with =" + sessionServiceId);
- if (ss.getId().equals(sessionServiceId)) {
- sessionService = ss;
- }
- }
-
- return sessionService;
- }
-
- public void registerKBase(String kbaseId, String sessionServiceId) throws RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- public void addService(GenericNodeConnector service) {
- services.add(service);
- }
-
- public Map<String, String> getDirectoryMap() {
- return directoryMap;
- }
-
- public boolean connect() throws RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- public void disconnect() throws RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- public Message write(Message msg) throws RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- public GenericConnection getConnection() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- public void write(Message msg, MessageResponseHandler responseHandler) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -1,78 +1,97 @@
package org.drools.grid.remote.directory;
-
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.drools.SystemEventListener;
+import org.drools.grid.DirectoryNodeService;
import org.drools.grid.local.DirectoryNodeLocalImpl;
import org.drools.grid.internal.GenericIoWriter;
import org.drools.grid.internal.GenericMessageHandler;
import org.drools.grid.internal.Message;
import org.drools.grid.internal.commands.SimpleCommand;
+import org.drools.grid.internal.commands.SimpleCommandName;
+public class DirectoryServerMessageHandlerImpl implements GenericMessageHandler {
-public class DirectoryServerMessageHandlerImpl implements GenericMessageHandler {
-
private final Map<String, GenericIoWriter> clients;
//We can create a persistent directory service and provide access to that service
- private DirectoryNodeLocalImpl directory;
-
+ private DirectoryNodeService directory = new DirectoryNodeLocalImpl();
private final SystemEventListener systemEventListener;
- public DirectoryServerMessageHandlerImpl( SystemEventListener systemEventListener) {
-
+ public DirectoryServerMessageHandlerImpl(SystemEventListener systemEventListener) {
+
this.clients = new HashMap<String, GenericIoWriter>();
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 {
- SimpleCommand cmd = (SimpleCommand) ((Message)msg).getPayload();
-
-
+ SimpleCommand cmd = (SimpleCommand) ((Message) msg).getPayload();
try {
systemEventListener.debug("Message received on server : " + cmd.getName());
- systemEventListener.debug("Arguments : " + Arrays.toString(cmd.getArguments().toArray()));
+ // systemEventListener.debug("Arguments : " + Arrays.toString(cmd.getArguments().toArray()));
switch (cmd.getName()) {
case RegisterExecutor: {
-
-
+ systemEventListener.debug("Command receieved on server was operation of type: RegisterExecutor");
+ String executorId = (String) cmd.getArguments().get(0);
+ String resourceId = (String) cmd.getArguments().get(1);
+ directory.register(executorId, resourceId);
+ System.out.println("Registered in Remote Directory => ExecutorId "+executorId+" - resourceId = "+resourceId);
- systemEventListener.debug("Command receieved on server was operation of type: RegisterExecutor" );
+ SimpleCommand resultsCmnd = new SimpleCommand(cmd.getId(), SimpleCommandName.OperationResponse, null);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
- String executorId = (String) cmd.getArguments().get(1);
- String resourceId = (String) cmd.getArguments().get(2);
+ break;
+ }
+ case RequestDirectoryMap: {
- directory.register(executorId, resourceId);
-
+ Map<String, String> directoryMap = directory.getDirectoryMap();
+ List<Object> results = new ArrayList<Object>(1);
+ results.add(directoryMap);
+ SimpleCommand resultsCmnd = new SimpleCommand(cmd.getId(), SimpleCommandName.OperationResponse, results);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
break;
}
-
+ case RequestLookupSession: {
+
+ String executorId = (String) cmd.getArguments().get(0);
+ String resourceId = directory.getDirectoryMap().get(executorId);
+ List<Object> results = new ArrayList<Object>(1);
+ results.add(resourceId);
+ SimpleCommand resultsCmnd = new SimpleCommand(cmd.getId(), SimpleCommandName.OperationResponse, results);
+ session.write(new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ resultsCmnd ), null);
+ break;
+ }
default: {
systemEventListener.debug("Unknown command recieved on server");
}
}
} catch (RuntimeException e) {
- systemEventListener.exception(e.getMessage(),e);
+ systemEventListener.exception(e.getMessage(), e);
e.printStackTrace(System.err);
-
- }
+ }
}
-
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
systemEventListener.debug("Server IDLE " + session.getIdleCount(status));
}
-
-
-}
\ No newline at end of file
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid/src/main/java/org/drools/grid/remote/directory/MinaRemoteDirectoryConnector.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * 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.
+ * under the License.
+ */
+
+package org.drools.grid.remote.directory;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.rmi.RemoteException;
+import java.util.UUID;
+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.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.local.DirectoryNodeLocalImpl;
+import org.drools.grid.remote.RemoteConnection;
+import org.drools.grid.remote.mina.MinaIoHandler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MinaRemoteDirectoryConnector implements GenericDirectoryConnector{
+ private static DirectoryNodeService directoryNode;
+ private static RemoteConnection connection;
+ private String providerName;
+ private int sessionId;
+ private SystemEventListener eventListener;
+ protected IoSession session;
+ protected AtomicInteger counter;
+ protected SocketConnector connector;
+ protected SocketAddress address;
+
+
+
+ public MinaRemoteDirectoryConnector(String providerName, String providerAddress,
+ int providerPort, SystemEventListener systemEventListener) {
+ SocketConnector minaconnector = new NioSocketConnector();
+ minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ if (providerName == null) {
+ throw new IllegalArgumentException("Name can not be null");
+ }
+ this.counter = new AtomicInteger();
+ this.providerName = providerName;
+ this.eventListener = systemEventListener;
+ this.address = new InetSocketAddress(providerAddress, providerPort);
+ this.connector = minaconnector;
+ this.directoryNode = new DirectoryNodeRemoteClient(this);
+
+ }
+
+ public DirectoryNodeService getDirectoryNodeService() {
+ return directoryNode;
+ }
+
+ public void connect() throws ConnectorException {
+ if (session != null && session.isConnected()) {
+ throw new IllegalStateException("Already connected. Disconnect first.");
+ }
+
+ try {
+ this.connector.getFilterChain().addLast("codec"+UUID.randomUUID().toString(),
+ new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
+ System.out.println("Connecting to Server "+this.address);
+ ConnectFuture future1 = this.connector.connect(this.address);
+ future1.await(2000);
+ if (!future1.isConnected()) {
+ eventListener.info("unable to connect : " + address + " : " + future1.getException());
+ Logger.getLogger(MinaRemoteDirectoryConnector.class.getName()).log(Level.SEVERE, null, "The Directory Connection Failed!");
+ throw new ConnectorException("unable to connect : " + address + " : " + future1.getException());
+ }
+ eventListener.info("connected : " + address);
+ this.session = future1.getSession();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new ConnectorException(e);
+ }
+ }
+
+ public void disconnect() throws ConnectorException {
+ System.out.println("DisConnected to Server "+this.address);
+ if (session != null && session.isConnected()) {
+ session.close();
+ session.getCloseFuture().join();
+ }
+ }
+
+ 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() {
+ return String.valueOf(session.getId());
+ }
+
+ public GenericConnection getConnection() {
+ if(connection == null){
+ connection = new RemoteConnection();
+ }
+ return connection;
+ }
+
+ public void write(Message msg, MessageResponseHandler responseHandler) {
+ if (responseHandler != null) {
+ addResponseHandler(msg.getResponseId(),
+ responseHandler);
+ }
+ this.session.write(msg);
+ }
+
+ private void addResponseHandler(int id,
+ MessageResponseHandler responseHandler) {
+ ((MinaIoHandler) this.connector.getHandler()).addResponseHandler(id,
+ responseHandler);
+
+ }
+ public int getSessionId() {
+ return (int) session.getId();
+ }
+
+}
+
+
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -16,6 +16,7 @@
*/
public interface DirectoryNodeService extends GenericDirectoryConnector {
+
public void register(String executorId, String resourceId) throws ConnectorException;
public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException;
public GenericNodeConnector lookup(String resourceId) throws ConnectorException;
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -14,4 +14,5 @@
String getId() throws ConnectorException;
GenericConnection getConnection();
+
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -77,5 +77,9 @@
RegisterClient,
- RegisterExecutor
+ RegisterExecutor,
+ RequestDirectoryMap,
+ ResponseDirectoryMap,
+ RequestLookupSession,
+ ResponseLookupSession
}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageDirectoryMapRequestResponseHandler.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package org.drools.grid.internal.responsehandlers;
+
+import java.util.List;
+import java.util.Map;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.internal.commands.SimpleCommand;
+
+public class BlockingMessageDirectoryMapRequestResponseHandler extends AbstractBlockingResponseHandler
+ implements
+ MessageResponseHandler {
+ private static final int ATTACHMENT_ID_WAIT_TIME = 100000;
+ private static final int CONTENT_ID_WAIT_TIME = 50000;
+ private Map<String,String> directoryMap;
+ private volatile Message message;
+
+ public synchronized void receive(Message message) {
+ this.message = message;
+
+ setDone( true );
+ }
+
+
+
+ public Message getMessage() {
+ boolean done = waitTillDone( CONTENT_ID_WAIT_TIME );
+
+ if ( !done ) {
+ throw new RuntimeException( "Timeout : unable to retrieve Object Id" );
+ }
+
+ return this.message;
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -118,4 +118,8 @@
throw new UnsupportedOperationException("Not supported yet.");
}
+ public String lookupId(String resourceId) {
+ return this.directoryMap.get(resourceId);
+ }
+
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -42,7 +42,7 @@
}
public void disconnect() throws ConnectorException {
- throw new UnsupportedOperationException("Not supported yet.");
+ //do nothing, it's local!
}
public Message write(Message msg) throws ConnectorException {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -22,6 +22,7 @@
import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.command.FinishedCommand;
import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.grid.DirectoryNodeService;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -29,6 +30,7 @@
import org.drools.grid.internal.commands.RegisterCommand;
import org.drools.grid.ConnectorException;
import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericDirectoryConnector;
import org.drools.grid.GenericNodeConnector;
import org.drools.grid.internal.Message;
import org.drools.grid.internal.MessageSession;
@@ -62,10 +64,10 @@
throw new IllegalArgumentException("Type is not supported for registration");
}
Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionRemoteClient) executor).getInstanceId(), type), null, null, null, null));
-
-
- System.out.println("Registering " + identifier + " - - " + client.getId() +" in dir Node = "+connection.getDirectoryNode());
- connection.getDirectoryNode().register(identifier, client);
+ DirectoryNodeService directoryNode = connection.getDirectoryNode();
+ System.out.println("Registering " + identifier + " - - " + client.getId() +" in dir Node = "+directoryNode);
+ directoryNode.register(identifier, client);
+
try {
Object object = client.write(msg).getPayload();
if (!(object instanceof FinishedCommand)) {
@@ -87,10 +89,10 @@
String kresultsId = "kresults_" + messageSession.getSessionId();
Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new LookupCommand(identifier, commandId), null, null, null, kresultsId));
System.out.println("Looking up the session with identifier = " + identifier +" in dir node = "+connection.getDirectoryNode());
- client = connection.getDirectoryNode().lookup(identifier);
- System.out.println("Client = "+client);
+ GenericNodeConnector executionClient = connection.getDirectoryNode().lookup(identifier);
+ System.out.println("Client = "+executionClient);
try {
- Object object = client.write(msg).getPayload();
+ Object object = executionClient.write(msg).getPayload();
if (object == null) {
throw new RuntimeException("Response was not correctly received");
}
@@ -100,7 +102,7 @@
CommandExecutor executor = null;
switch (Integer.parseInt(type)) {
case 0: {
- executor = new StatefulKnowledgeSessionRemoteClient(instanceId, client, messageSession);
+ executor = new StatefulKnowledgeSessionRemoteClient(instanceId, executionClient, messageSession);
break;
}
default: {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/RemoteConnection.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -34,7 +34,6 @@
import org.drools.grid.strategies.NodeSelectionStrategy;
import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
-
/**
*
* @author salaboy
@@ -45,7 +44,6 @@
private List<GenericNodeConnector> executionNodeConnectors;
//Cached Directories
private List<GenericDirectoryConnector> directoryNodeConnectors;
-
private List<GenericNodeConnector> humanTaskNodeConnectors;
public RemoteConnection() {
@@ -120,7 +118,7 @@
}
public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) throws ConnectorException {
- if(directoryNodeConnectors.size() == 0){
+ if (directoryNodeConnectors.size() == 0) {
return null;
}
GenericDirectoryConnector connector = directoryNodeConnectors.get(0);
@@ -142,12 +140,12 @@
}
public HumanTaskNodeService getTaskService() {
- return getTaskService(null);
+ return getTaskService(null);
}
public List<ExecutionNode> getExecutionNodes() throws ConnectorException {
List<ExecutionNode> executionNodes = new ArrayList<ExecutionNode>();
- for(GenericNodeConnector connector : executionNodeConnectors){
+ for (GenericNodeConnector connector : executionNodeConnectors) {
ExecutionNode node = null;
connector.connect();
node = new ExecutionNode();
@@ -170,5 +168,4 @@
public List<HumanTaskNodeService> getTaskServices() {
throw new UnsupportedOperationException("not Implemented yet!");
}
-
}
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-18 21:06:32 UTC (rev 33555)
+++ 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-18 21:49:36 UTC (rev 33556)
@@ -34,6 +34,7 @@
protected SocketConnector connector;
protected SocketAddress address;
protected SystemEventListener eventListener;
+ protected RemoteConnection connection;
public MinaRemoteNodeConnector(String name,
SocketConnector connector,
@@ -47,6 +48,7 @@
this.address = address;
this.connector = connector;
this.eventListener = eventListener;
+ this.connection = new RemoteConnection();
}
@@ -65,6 +67,7 @@
this.address = new InetSocketAddress(providerAddress, providerPort);
this.connector = minaconnector;
this.eventListener = eventListener;
+ this.connection = new RemoteConnection();
}
@@ -82,7 +85,7 @@
future1.await(2000);
if (!future1.isConnected()) {
eventListener.info("unable to connect : " + address + " : " + future1.getException());
- Logger.getLogger(MinaRemoteNodeConnector.class.getName()).log(Level.SEVERE, null, "The Node Connection Failed!");
+ Logger.getLogger(MinaRemoteNodeConnector.class.getName()).log(Level.SEVERE, null, "The Node Connection Failed!");
throw new ConnectorException("unable to connect : " + address + " : " + future1.getException());
}
eventListener.info("connected : " + address);
@@ -93,9 +96,7 @@
}
}
- /* (non-Javadoc)
- * @see org.drools.vsm.mina.Messenger#disconnect()
- */
+
public void disconnect() throws ConnectorException {
if (session != null && session.isConnected()) {
session.close();
@@ -144,6 +145,6 @@
}
public GenericConnection getConnection(){
- return new RemoteConnection();
+ return this.connection;
}
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml 2010-06-18 21:49:36 UTC (rev 33556)
@@ -75,6 +75,12 @@
<version>4.8.1</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-grid-remote-dir-min</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -68,5 +68,7 @@
return name;
}
+
+
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -46,6 +46,15 @@
GenericConnection connection = connector.getConnection();
//Adding the connector to the conection collection of connectors
connection.addExecutionNode(connector);
+ //We need to add all the other exec envs connectors inside this connection
+ for(ExecutionEnvironment e : executionEnvironments.values()){
+ connection.addExecutionNode(e.getConnector());
+ }
+ //We need to add all the other directory connectors inside this connection
+ for(DirectoryInstance d : directories.values()){
+ connection.addDirectoryNode(d.getConnector());
+ }
+
//Adding the connection to the Topology's list of connections
connections.put(name, connection);
//Adding the env to the local cache
@@ -59,7 +68,17 @@
DirectoryInstance directory = new DirectoryInstance(name, provider);
GenericDirectoryConnector connector = directory.getConnector();
GenericConnection connection = connector.getConnection();
+
+
connection.addDirectoryNode(connector);
+
+ for(ExecutionEnvironment e : executionEnvironments.values()){
+ connection.addExecutionNode(e.getConnector());
+ }
+ for(DirectoryInstance d : directories.values()){
+ connection.addDirectoryNode(d.getConnector());
+ }
+
connections.put(name, connection);
directories.put(name, directory);
registerGridResourceInCurrentDirectories(name, provider.getId());
@@ -83,8 +102,10 @@
DirectoryNodeService directoryNode = directory.getDirectoryService();
if( directoryNode != null){
directoryNode.register(name, resourceId);
+ directory.getConnector().disconnect();
}
+
}
}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaDirectoryProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaDirectoryProvider.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaDirectoryProvider.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -0,0 +1,61 @@
+package org.drools.grid.services.remote;
+
+
+
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.services.DirectoryInstance;
+import org.drools.grid.services.GenericDirectoryProvider;
+import org.drools.grid.remote.directory.MinaRemoteDirectoryConnector;
+/**
+ * @author salaboy
+ */
+public class MinaDirectoryProvider extends GenericDirectoryProvider {
+
+ private transient GenericDirectoryConnector connector;
+ private String providerName;
+ private String providerAddress;
+ private int providerPort;
+
+ public MinaDirectoryProvider(String providerName, String providerAddress, int providerPort) {
+ this.providerName = providerName;
+ this.providerAddress = providerAddress;
+ this.providerPort = providerPort;
+ initializeConnector();
+ }
+
+
+ private void initializeConnector(){
+ connector = new MinaRemoteDirectoryConnector(providerName,providerAddress, providerPort,
+ SystemEventListenerFactory.getSystemEventListener());
+ }
+
+
+ @Override
+ public DirectoryInstance getDirectoryInstance(String name) {
+ return new DirectoryInstance(name, this);
+ }
+
+ @Override
+ public GenericDirectoryConnector getDirectoryConnector() {
+ return this.connector;
+ }
+
+ public String getProviderAddress() {
+ return providerAddress;
+ }
+
+ public String getProviderName() {
+ return providerName;
+ }
+
+ public int getProviderPort() {
+ return providerPort;
+ }
+
+ @Override
+ public String getId() {
+ return "MinaDirectoryProvider:"+providerName+":"+providerAddress+":"+providerPort;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaNodeProvider.java (from rev 33532, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaProvider.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaNodeProvider.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaNodeProvider.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -0,0 +1,65 @@
+package org.drools.grid.services.remote;
+
+
+
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.remote.mina.MinaRemoteNodeConnector;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.GenericNodeProvider;
+
+/**
+ * @author salaboy
+ */
+public class MinaNodeProvider extends GenericNodeProvider {
+
+ private transient GenericNodeConnector connector;
+ private String providerName;
+ private String providerAddress;
+ private int providerPort;
+
+ public MinaNodeProvider(String providerName, String providerAddress, int providerPort) {
+ this.providerName = providerName;
+ this.providerAddress = providerAddress;
+ this.providerPort = providerPort;
+ initializeConnector();
+ }
+
+
+
+
+ private void initializeConnector(){
+
+ connector = new MinaRemoteNodeConnector(providerName,providerAddress, providerPort,
+ SystemEventListenerFactory.getSystemEventListener());
+ }
+
+
+ @Override
+ public ExecutionEnvironment getExecutionEnvironment(String name) {
+ return new ExecutionEnvironment(name, this);
+ }
+
+ @Override
+ public GenericNodeConnector getNodeConnector() {
+ return this.connector;
+ }
+
+ public String getProviderAddress() {
+ return providerAddress;
+ }
+
+ public String getProviderName() {
+ return providerName;
+ }
+
+ public int getProviderPort() {
+ return providerPort;
+ }
+
+ @Override
+ public String getId() {
+ return "MinaEnvironmentProvider:"+providerName+":"+providerAddress+":"+providerPort;
+ }
+
+}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaProvider.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaProvider.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -1,65 +0,0 @@
-package org.drools.grid.services.remote;
-
-
-
-import org.drools.SystemEventListenerFactory;
-import org.drools.grid.GenericNodeConnector;
-import org.drools.grid.remote.mina.MinaRemoteNodeConnector;
-import org.drools.grid.services.ExecutionEnvironment;
-import org.drools.grid.services.GenericNodeProvider;
-
-/**
- * @author salaboy
- */
-public class MinaProvider extends GenericNodeProvider {
-
- private transient GenericNodeConnector connector;
- private String providerName;
- private String providerAddress;
- private int providerPort;
-
- public MinaProvider(String providerName, String providerAddress, int providerPort) {
- this.providerName = providerName;
- this.providerAddress = providerAddress;
- this.providerPort = providerPort;
- initializeConnector();
- }
-
-
-
-
- private void initializeConnector(){
-
- connector = new MinaRemoteNodeConnector(providerName,providerAddress, providerPort,
- SystemEventListenerFactory.getSystemEventListener());
- }
-
-
- @Override
- public ExecutionEnvironment getExecutionEnvironment(String name) {
- return new ExecutionEnvironment(name, this);
- }
-
- @Override
- public GenericNodeConnector getNodeConnector() {
- return this.connector;
- }
-
- public String getProviderAddress() {
- return providerAddress;
- }
-
- public String getProviderName() {
- return providerName;
- }
-
- public int getProviderPort() {
- return providerPort;
- }
-
- @Override
- public String getId() {
- return "MinaEnvironmentProvider:"+providerName+":"+providerAddress+":"+providerPort;
- }
-
-}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvByPrioritySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvByPrioritySelectionStrategy.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvByPrioritySelectionStrategy.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -25,7 +25,7 @@
import org.drools.grid.services.ExecutionEnvironment;
import org.drools.grid.services.GenericNodeProvider;
import org.drools.grid.services.local.LocalNodeProvider;
-import org.drools.grid.services.remote.MinaProvider;
+import org.drools.grid.services.remote.MinaNodeProvider;
/**
*
@@ -45,7 +45,7 @@
put(LocalNodeProvider.class, 1);
// put("RioEnvironmentProvider", 2);
// put("HornetQEnvironmentProvider", 3);
- put(MinaProvider.class, 4);
+ put(MinaNodeProvider.class, 4);
}
};
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -22,7 +22,7 @@
import org.drools.grid.remote.mina.MinaIoHandler;
import org.drools.grid.services.ExecutionEnvironment;
import org.drools.grid.services.GridTopology;
-import org.drools.grid.services.remote.MinaProvider;
+import org.drools.grid.services.remote.MinaNodeProvider;
import org.drools.grid.services.strategies.RandomEnvironmentSelectionStrategy;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -100,7 +100,7 @@
//Create the provider
- MinaProvider provider = new MinaProvider("Mina1", "127.0.0.1", 9123);
+ MinaNodeProvider provider = new MinaNodeProvider("Mina1", "127.0.0.1", 9123);
//Register the provider into the topology
grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
@@ -173,13 +173,13 @@
//Create the provider
- MinaProvider provider1 = new MinaProvider("Mina1", "127.0.0.1", 9123);
+ MinaNodeProvider provider1 = new MinaNodeProvider("Mina1", "127.0.0.1", 9123);
//Register the provider into the topology
grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider1);
//Create the provider
- MinaProvider provider2 = new MinaProvider("Mina1", "127.0.0.1", 9124);
+ MinaNodeProvider provider2 = new MinaNodeProvider("Mina1", "127.0.0.1", 9124);
//Register the provider into the topology
grid.registerExecutionEnvironment("MyMinaExecutionEnv2", provider2);
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -22,19 +22,33 @@
import java.rmi.RemoteException;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
import org.drools.SystemEventListenerFactory;
+import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.grid.ConnectorException;
import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.ExecutionNode;
import org.drools.grid.internal.GenericMessageHandlerImpl;
import org.drools.grid.internal.NodeData;
//import org.drools.grid.remote.directory.DirectoryServerMessageHandlerImpl;
+import org.drools.grid.remote.directory.DirectoryServerMessageHandlerImpl;
import org.drools.grid.remote.mina.MinaAcceptor;
import org.drools.grid.remote.mina.MinaIoHandler;
import org.drools.grid.services.DirectoryInstance;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.GenericDirectoryProvider;
import org.drools.grid.services.GenericNodeProvider;
import org.drools.grid.services.GridTopology;
import org.drools.grid.services.local.LocalNodeProvider;
-import org.drools.grid.services.remote.MinaProvider;
+import org.drools.grid.services.remote.MinaDirectoryProvider;
+import org.drools.grid.services.remote.MinaNodeProvider;
import org.drools.grid.services.strategies.DirectoryInstanceByPrioritySelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.junit.After;
@@ -67,85 +81,143 @@
@Before
public void setUp() throws InterruptedException, IOException {
-
-// // Human task Server configuration
-// SocketAddress dirAddress = new InetSocketAddress("127.0.0.1", 9123);
-// SocketAcceptor dirAcceptor = new NioSocketAcceptor();
-//
-// dirAcceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
-// new DirectoryServerMessageHandlerImpl(
-// SystemEventListenerFactory.getSystemEventListener())));
-// this.serverDir = new MinaAcceptor(dirAcceptor, dirAddress);
-// this.serverDir.start();
-// Thread.sleep(5000);
-// // End Execution Server
-//
-// //Execution Node related stuff
-//
-// System.out.println("Server 1 Starting!");
-// // the servers should be started in a different machine (jvm or physical) or in another thread
-// SocketAddress address = new InetSocketAddress("127.0.0.1", 9124);
-// NodeData nodeData = new NodeData();
-// // setup Server
-// SocketAcceptor acceptor = new NioSocketAcceptor();
-// acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
-// new GenericMessageHandlerImpl(nodeData,
-// SystemEventListenerFactory.getSystemEventListener())));
-// serverNode = new MinaAcceptor(acceptor, address);
-// serverNode.start();
-// System.out.println("Server 1 Started! at = " + address.toString());
-//
-// Thread.sleep(5000);
+ System.out.println("Dir Server 1 Starting!");
+ // Directory Server configuration
+ SocketAddress dirAddress = new InetSocketAddress("127.0.0.1", 9123);
+ SocketAcceptor dirAcceptor = new NioSocketAcceptor();
+ dirAcceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new DirectoryServerMessageHandlerImpl(
+ SystemEventListenerFactory.getSystemEventListener())));
+ this.serverDir = new MinaAcceptor(dirAcceptor, dirAddress);
+ this.serverDir.start();
+ System.out.println("Dir Server 1 Started! at = " + dirAddress.toString());
+ Thread.sleep(5000);
+ // End Execution Server
+
+ //Execution Node related stuff
+
+ System.out.println("Exec Server 1 Starting!");
+ // the servers should be started in a different machine (jvm or physical) or in another thread
+ SocketAddress address = new InetSocketAddress("127.0.0.1", 9124);
+ NodeData nodeData = new NodeData();
+ // setup Server
+ SocketAcceptor acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ serverNode = new MinaAcceptor(acceptor, address);
+ serverNode.start();
+ System.out.println("Exec Server 1 Started! at = " + address.toString());
+
+ Thread.sleep(5000);
+
}
@After
- public void tearDown() throws InterruptedException {
-
+ public void tearDown() throws InterruptedException, ConnectorException {
-// grid.disconectAllClients();
-//
-//
-//
-//
-//
-// serverNode.stop();
-// System.out.println("Execution Server Stopped!");
-//
-// serverDir.stop();
-// System.out.println("Dir Server Stopped!");
-
-
-
-
+ grid.disconectAllClients();
+ serverNode.stop();
+ System.out.println("Execution Server Stopped!");
+ serverDir.stop();
+ System.out.println("Dir Server Stopped!");
}
@Test
- public void directoryRemoteTest() {
-// GridTopology grid = new GridTopology("MyBusinessUnit");
-//
-// GenericProvider remoteDirProvider = new MinaProvider("MyMinaDir", "127.0.0.1", 9123);
-// GenericProvider localEnvProvider = new LocalProvider();
-//
-// MinaProvider remoteEnvProvider = new MinaProvider("Mina1", "127.0.0.1", 9124);
-//
-// grid.registerDirectoryInstance("MyMinaDir", remoteDirProvider);
-// grid.registerExecutionEnvironment("MyLocalEnv", localEnvProvider);
-// grid.registerExecutionEnvironment("MyRemoteEnv", remoteEnvProvider);
-//
-//
-// DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
-// Assert.assertNotNull(directory);
-//
-// DirectoryNodeService dir = directory.getDirectoryService();
-// Assert.assertNotNull(dir);
-//
-// Assert.assertEquals(2, dir.getDirectoryMap().size());
+ public void directoryRemoteTest() throws ConnectorException {
+ grid = new GridTopology("MyBusinessUnit");
+ GenericDirectoryProvider remoteDirProvider = new MinaDirectoryProvider("MyMinaDir", "127.0.0.1", 9123);
+ GenericNodeProvider localEnvProvider = new LocalNodeProvider();
+ MinaNodeProvider remoteEnvProvider = new MinaNodeProvider("Mina1", "127.0.0.1", 9124);
+
+ grid.registerDirectoryInstance("MyMinaDir", remoteDirProvider);
+ grid.registerExecutionEnvironment("MyLocalEnv", localEnvProvider);
+ grid.registerExecutionEnvironment("MyRemoteEnv", remoteEnvProvider);
+
+
+ DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
+ Assert.assertNotNull(directory);
+
+ DirectoryNodeService dir = directory.getDirectoryService();
+ Assert.assertNotNull(dir);
+
+ Assert.assertNotNull("Dir Null", dir.getDirectoryMap());
+
+ Assert.assertEquals(3, dir.getDirectoryMap().size());
+
+ System.out.println("dir.getDirectoryMap() = "+dir.getDirectoryMap());
+
+ dir.register("blah", "blah");
+
+ Assert.assertEquals(4, dir.getDirectoryMap().size());
+
+
+
+
+
+ //Then we can get the registered Execution Environments by Name
+
+ ExecutionEnvironment ee = grid.getExecutionEnvironment("MyRemoteEnv");
+ Assert.assertNotNull(ee);
+
+ // Give me an ExecutionNode in the selected environment
+ // For the Mina we have just one Execution Node per server instance
+ ExecutionNode node = grid.getExecutionNode(ee);
+
+ Assert.assertNotNull(node);
+
+
+ // Do a basic Runtime Test that register a ksession and fire some rules.
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+
+ KnowledgeBuilder kbuilder =
+ node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+ kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()),
+ ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ System.out.println("Errors: " + kbuilder.getErrors());
+ }
+
+ KnowledgeBase kbase =
+ node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Assert.assertNotNull(ksession);
+
+ node.get(DirectoryLookupFactoryService.class).register("ksession1", ksession);
+
+ int fired = ksession.fireAllRules();
+ Assert.assertEquals(2, fired);
+
+
+
+
+
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -45,7 +45,7 @@
import org.drools.grid.services.GenericNodeProvider;
import org.drools.grid.services.GridTopology;
import org.drools.grid.services.TaskServerInstance;
-import org.drools.grid.services.remote.MinaProvider;
+import org.drools.grid.services.remote.MinaNodeProvider;
import org.drools.grid.task.CommandBasedServicesWSHumanTaskHandler;
import org.drools.grid.task.HumanTaskService;
import org.drools.grid.task.TaskServerMessageHandlerImpl;
@@ -206,14 +206,14 @@
public void MinaTaskTest() throws InterruptedException, ConnectorException {
grid = new GridTopology("MyBusinessUnit");
- GenericNodeProvider remoteTaskProvider = new MinaProvider("MyMinaTask", "127.0.0.1", 9123);
+ GenericNodeProvider remoteTaskProvider = new MinaNodeProvider("MyMinaTask", "127.0.0.1", 9123);
grid.registerTaskServerInstance("MyMinaTask", remoteTaskProvider);
TaskServerInstance taskServer = grid.getTaskServerInstance("MyMinaTask");
//Create the provider
- MinaProvider provider = new MinaProvider("Mina1", "127.0.0.1", 9124);
+ MinaNodeProvider provider = new MinaNodeProvider("Mina1", "127.0.0.1", 9124);
//Register the provider into the topology
grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -41,7 +41,7 @@
import org.drools.grid.services.ExecutionEnvironment;
import org.drools.grid.services.GenericNodeProvider;
import org.drools.grid.services.GridTopology;
-import org.drools.grid.services.remote.MinaProvider;
+import org.drools.grid.services.remote.MinaNodeProvider;
import org.drools.grid.services.strategies.ExecutionEnvByPrioritySelectionStrategy;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -97,7 +97,7 @@
public void mixedTopologyMinaAndLocal() throws ConnectorException {
GridTopology grid = new GridTopology("MyBusinessUnit");
- GenericNodeProvider minaProvider = new MinaProvider("Mina1","127.0.0.1",9123 );
+ GenericNodeProvider minaProvider = new MinaNodeProvider("Mina1","127.0.0.1",9123 );
GenericNodeProvider localProvider = new LocalNodeProvider();
grid.registerExecutionEnvironment("MyMinaEnv", minaProvider);
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerInstanceNodeRunner.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerInstanceNodeRunner.java 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/TaskServerInstanceNodeRunner.java 2010-06-18 21:49:36 UTC (rev 33556)
@@ -16,8 +16,7 @@
import org.drools.SystemEventListenerFactory;
import org.drools.grid.remote.mina.MinaAcceptor;
import org.drools.grid.remote.mina.MinaIoHandler;
-import org.drools.grid.remote.mina.MinaNodeRunner;
-import org.drools.task.MockUserInfo;
+
import org.drools.task.UserInfo;
import org.drools.task.service.TaskService;
import org.drools.task.service.TaskServiceSession;
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml 2010-06-18 21:06:32 UTC (rev 33555)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml 2010-06-18 21:49:36 UTC (rev 33556)
@@ -15,6 +15,7 @@
<module>drools-grid-local</module>
<module>drools-grid-remote-api</module>
<module>drools-grid-remote-mina</module>
+ <module>drools-grid-remote-dir-mina</module>
<module>drools-grid-services</module>
<module>drools-grid-task</module>
More information about the jboss-svn-commits
mailing list