[jboss-svn-commits] JBL Code SVN: r33093 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-client-api and 35 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 26 10:50:54 EDT 2010


Author: salaboy21
Date: 2010-05-26 10:50:52 -0400 (Wed, 26 May 2010)
New Revision: 33093

Added:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/resources/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/test/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/test/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/
   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/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
   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/ExecutionEnvironmentTopology.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/resources/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java
Removed:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
Log:
drools-grid refactoring + drools-services


Property changes on: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api
___________________________________________________________________
Name: svn:ignore
   + target


Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>drools-grid</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.1.0.SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>jar</packaging>
+    <name>Drools :: Grid :: Client API</name>
+    <artifactId>drools-grid-client-api</artifactId>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.0.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.6</version>
+            <scope>test</scope>
+        </dependency>
+         <!-- Drools Runtime -->
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
+
+        
+    </dependencies>
+      
+
+</project>
\ No newline at end of file

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,26 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.drools.grid;
+
+import java.rmi.RemoteException;
+import java.util.Map;
+import org.drools.KnowledgeBase;
+
+
+/**
+ *
+ * @author salaboy
+ */
+
+public interface DirectoryNodeService {
+    public void register(String executorId, String nodeServiceId) throws RemoteException;
+    public GenericNodeConnector lookup(String executorId) throws RemoteException;
+    public void registerKBase(String kbaseId, String nodeServiceId) throws RemoteException;
+    public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException;
+    public void addService(GenericNodeConnector service);
+    public Map<String, String> getDirectoryMap() throws RemoteException;
+    public String getId() throws RemoteException;
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,23 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.drools.grid;
+
+import org.drools.grid.internal.Message;
+import java.rmi.RemoteException;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public interface ExecutionNodeService extends GenericNodeConnector{
+    public String  getId() throws RemoteException;
+    public Message write(Message msg) throws RemoteException;
+    double getLoad() throws RemoteException;
+    void setLoad(double load) throws RemoteException;
+    double getKsessionCounter() throws RemoteException;
+    void incrementKsessionCounter() throws RemoteException;
+    
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,40 @@
+/*
+ *  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;
+
+import java.util.List;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.strategies.NodeSelectionStrategy;
+import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface GenericConnection {
+
+    public void addNodeConnector(GenericNodeConnector nodeConnector);
+    public void addDirectoryNode(DirectoryNodeService directory);
+    public List<GenericNodeConnector> getNodeConnectors();
+    public List<DirectoryNodeService> getDirectories();
+    public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy);
+    public ExecutionNode getExecutionNode();
+    public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy);
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,16 @@
+package org.drools.grid;
+
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.GenericIoWriter;
+import java.rmi.RemoteException;
+
+public interface GenericNodeConnector extends GenericIoWriter {
+
+    boolean connect() throws RemoteException;
+
+    void disconnect() throws RemoteException;
+
+    Message write(Message msg) throws RemoteException;
+
+    String getId() throws RemoteException;
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,6 @@
+package org.drools.grid.internal;
+
+public interface GenericIoWriter {
+    void write(Message msg,
+               MessageResponseHandler responseHandler);
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/Message.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,52 @@
+package org.drools.grid.internal;
+
+import java.io.Serializable;
+import java.util.Map;
+
+public class Message
+    implements
+    Serializable {
+    private int     sessionId;
+    private int     responseId;
+    private boolean async;
+    private Object  payload;
+
+    public Message(int sessionId,
+                   int responseId,
+                   boolean async,
+                   Object payload) {
+        this.sessionId = sessionId;
+        this.async = async;
+        this.responseId = responseId;
+        this.payload = payload;
+    }
+
+    public Message(int sessionId,
+                   Map<String, Integer> contextVars,
+                   Object payload) {
+        this.sessionId = sessionId;
+        this.responseId = -1;
+        this.payload = payload;
+    }
+
+    public int getSessionId() {
+        return sessionId;
+    }
+
+    public int getResponseId() {
+        return responseId;
+    }
+
+    public boolean isAsync() {
+        return async;
+    }
+
+    public Object getPayload() {
+        return payload;
+    }
+
+    public String toString() {
+        return "sessionId=" + this.sessionId + " responseId=" + responseId + " async=" + this.async + " payload=" + this.payload;
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/MessageResponseHandler.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,7 @@
+package org.drools.grid.internal;
+
+public interface MessageResponseHandler {
+    public void setError(RuntimeException error);
+
+    public void receive(Message message);
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,26 @@
+/*
+ *  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.strategies;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryServiceSelectionStrategy {
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,32 @@
+/*
+ *  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.strategies;
+
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface NodeSelectionStrategy {
+
+    public GenericNodeConnector getBestNode();
+    public void setConnection(GenericConnection connection);
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,42 @@
+/*
+ *  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.strategies;
+
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ReturnAlwaysTheFirstSelectionStrategy implements NodeSelectionStrategy{
+
+    private GenericConnection connection;
+    public ReturnAlwaysTheFirstSelectionStrategy(GenericConnection connection) {
+        this.connection = connection;
+    }
+    public GenericNodeConnector getBestNode() {
+        return this.connection.getNodeConnectors().get(0);
+    }
+
+    public void setConnection(GenericConnection connection) {
+        this.connection = connection;
+    }
+
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,50 @@
+/*
+ *  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.strategies;
+
+
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class StaticIncrementalSelectionStrategy implements NodeSelectionStrategy{
+    public static int counter = 0;
+    private GenericConnection connection;
+    public StaticIncrementalSelectionStrategy(GenericConnection connection) {
+        this.connection = connection;
+    }
+
+
+    //@Override
+    public GenericNodeConnector getBestNode() {
+        
+        GenericNodeConnector service = connection.getNodeConnectors().get(counter);
+        StaticIncrementalSelectionStrategy.counter = counter +1;
+        return service;
+    }
+
+    public void setConnection(GenericConnection connection) {
+        this.connection = connection;
+    }
+    
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml	2010-05-26 14:50:52 UTC (rev 33093)
@@ -3,14 +3,26 @@
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>drools</artifactId>
+        <artifactId>drools-grid</artifactId>
         <groupId>org.drools</groupId>
         <version>5.1.0.SNAPSHOT</version>
     </parent>
     <artifactId>drools-grid-core</artifactId>
     <version>5.1.0.SNAPSHOT</version>
     <name>Drools :: Grid :: Core</name>
-    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.0.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
 
         <dependency>
@@ -39,6 +51,12 @@
             <version>5.1.0.SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-client-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
+
         <!-- Apache Mina for default Service Remote Implementation -->
         <dependency>
             <groupId>org.apache.mina</groupId>
@@ -67,6 +85,7 @@
             <artifactId>drools-persistence-jpa</artifactId>
             <version>5.1.0.SNAPSHOT</version>
             <scope>test</scope>
+            <type>jar</type>
         </dependency>
 
         <dependency>
@@ -79,7 +98,7 @@
         <dependency>
             <groupId>javax.transaction</groupId>
             <artifactId>jta</artifactId>
-            <version>1.0.1B</version>
+            <version>1.1</version>
             <scope>test</scope>
         </dependency>
 

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,27 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.drools.grid;
-
-import java.rmi.RemoteException;
-import java.util.Map;
-import org.drools.KnowledgeBase;
-import org.drools.grid.generic.GenericNodeConnector;
-
-
-/**
- *
- * @author salaboy
- */
-
-public interface DirectoryNodeService {
-    public void register(String executorId, String nodeServiceId) throws RemoteException;
-    public GenericNodeConnector lookup(String executorId) throws RemoteException;
-    public void registerKBase(String kbaseId, String nodeServiceId) throws RemoteException;
-    public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException;
-    public void addService(GenericNodeConnector service);
-    public Map<String, String> getDirectoryMap() throws RemoteException;
-    public String getId() throws RemoteException;
-}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,24 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.drools.grid;
-
-import java.rmi.RemoteException;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-
-
-/**
- *
- * @author salaboy
- */
-public interface ExecutionNodeService extends GenericNodeConnector{
-    public String  getId() throws RemoteException;
-    public Message write(Message msg) throws RemoteException;
-    double getLoad() throws RemoteException;
-    void setLoad(double load) throws RemoteException;
-    double getKsessionCounter() throws RemoteException;
-    void incrementKsessionCounter() throws RemoteException;
-    
-}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,28 +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;
-
-/**
- *
- * @author salaboy
- */
-public interface NodeConnector {
-    public ExecutionNode connect();
-    public void disconnect();
-    
-}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,32 +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;
-
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-
-/**
- *
- * @author salaboy
- */
-public interface NodeSelectionStrategy {
-
-    public GenericNodeConnector getBestNode();
-    public void setConnection(GenericConnection connection);
-
-}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,128 +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;
-
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.drools.KnowledgeBaseFactoryService;
-import org.drools.builder.DirectoryLookupFactoryService;
-import org.drools.builder.KnowledgeBuilderFactoryService;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.remote.DirectoryLookupProviderRemoteClient;
-import org.drools.grid.remote.KnowledgeBaseProviderRemoteClient;
-import org.drools.grid.remote.KnowledgeBuilderProviderRemoteClient;
-import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
-
-import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-
-/**
- *
- * @author salaboy
- */
-public class RemoteConnection implements GenericConnection {
-    //Cached Services
-    private List<GenericNodeConnector> nodeConnectors;
-    //Cached Directories
-    private List<DirectoryNodeService> directories;
-
-    public RemoteConnection() {
-        this.nodeConnectors = new ArrayList<GenericNodeConnector>();
-        this.directories = new ArrayList<DirectoryNodeService>();
-    }
-
-    public void addNodeConnector(GenericNodeConnector service) {
-        //register the service to all the DirectoryServices
-        for(DirectoryNodeService directory : directories){
-            directory.addService(service);
-        }
-        this.nodeConnectors.add(service);
-
-    }
-    public void addDirectoryNode(DirectoryNodeService directory) {
-        this.directories.add(directory);
-    }
-
-    // In real scenarios this method will be in charge of populating
-    // all the ExecutionNodeService and DirectoryServices
-    public void connect() {
-        throw new NotImplementedException();
-    }
-
-
-    public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
-        ExecutionNode node = null;
-        GenericNodeConnector currentNode = null;
-        try {
-
-            //if the strategy is null use the default one
-            if (strategy == null) {
-                currentNode = getBestNode(new StaticIncrementalSelectionStrategy(this));
-            } else {
-                strategy.setConnection(this);
-                currentNode = getBestNode(strategy);
-            }
-            if (currentNode.connect()) {
-                node = new ExecutionNode();
-                node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(currentNode));
-                node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(currentNode));
-                node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderRemoteClient(currentNode, this));
-
-            }
-            
-        } catch (RemoteException ex) {
-            Logger.getLogger(RemoteConnection.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        return node;
-    }
-    public GenericNodeConnector getBestNode(NodeSelectionStrategy nodeSelectionStrategy) {
-        return nodeSelectionStrategy.getBestNode();
-    }
-
-    public List<DirectoryNodeService> getDirectories() {
-        return directories;
-    }
-
-    public void setDirectories(List<DirectoryNodeService> directories) {
-        this.directories = directories;
-    }
-
-    public List<GenericNodeConnector> getNodeConnectors() {
-        return nodeConnectors;
-    }
-
-    public void setServices(List<GenericNodeConnector> services) {
-        this.nodeConnectors = services;
-    }
-
-    public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) {
-        return directories.get(0);
-    }
-
-    public ExecutionNode getExecutionNode() {
-        return getExecutionNode(null);
-    }
-
-   
-
-
-}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/Command.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,48 @@
+package org.drools.grid.commands;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Command implements Serializable {
+    
+    private int id;
+    
+    private CommandName name;    
+    
+    private List<Object> arguments;
+    
+    public Command(int id, CommandName name, List<Object> arguments) {
+        super();
+        this.id = id;
+        this.arguments = arguments;
+        this.name = name;
+    }
+    
+    
+    
+    public int getId() {
+        return id;
+    }
+
+
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+
+
+    public CommandName getName() {
+        return name;
+    }
+    public void setName(CommandName name) {
+        this.name = name;
+    }
+    public List<Object> getArguments() {
+        return arguments;
+    }
+    public void setArguments(List<Object> arguments) {
+        this.arguments = arguments;
+    }
+            
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/CommandName.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,79 @@
+package org.drools.grid.commands;
+
+
+public enum CommandName {   
+    OperationRequest,
+    OperationResponse,
+    
+    ClaimRequest,
+    ClaimResponse,
+    
+    StartRequest,
+    StartResponse,
+    
+    StopRequest,
+    StopResponse,
+    
+    ReleaseRequest,
+    ReleaseResponse,  
+    
+    SuspendRequest,
+    SuspendResponse, 
+    
+    ResumeRequest,
+    ResumeResponse, 
+    
+    SkipRequest,
+    SkipResponse,  
+    
+    DelegateRequest,
+    DelegateResponse,
+    
+    ForwardRequest,
+    ForwardResponse,
+    
+    CompleteRequest,
+    CompleteResponse,   
+    
+    FailRequest,
+    FailResponse,
+    
+    GetTaskRequest,
+    GetTaskResponse,
+    
+    AddTaskRequest,
+    AddTaskResponse,
+    
+    AddAttachmentRequest,
+    AddAttachmentResponse,    
+    DeleteAttachmentRequest,
+    DeleteAttachmentResponse,
+        
+    SetDocumentContentRequest,
+    SetDocumentContentResponse,
+    GetContentRequest,
+    GetContentResponse,
+    
+    AddCommentRequest,
+    AddCommentResponse,    
+    DeleteCommentRequest,    
+    DeleteCommentResponse,    
+    
+    QueryTasksOwned,    
+    QueryTasksAssignedAsBusinessAdministrator,
+    QueryTasksAssignedAsExcludedOwner,
+    QueryTasksAssignedAsPotentialOwner,
+    QueryTasksAssignedAsPotentialOwnerWithGroup,
+    QueryTasksAssignedAsPotentialOwnerByGroup,
+    QuerySubTasksAssignedAsPotentialOwner,
+    QueryGetSubTasksByParentTaskId,
+    QueryTasksAssignedAsRecipient,
+    QueryTasksAssignedAsTaskInitiator,
+    QueryTasksAssignedAsTaskStakeholder,    
+    QueryTaskSummaryResponse,
+    
+    RegisterForEventRequest,
+    EventTriggerResponse,
+    
+    RegisterClient
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/ExecutionNodeClientConnectCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,34 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.grid.internal.NodeData;
+
+public class ExecutionNodeClientConnectCommand
+    implements
+    GenericCommand<Integer> {
+    
+    private String outIdentifier;
+
+    
+
+    public ExecutionNodeClientConnectCommand(String outIdentifier) {
+        this.outIdentifier = outIdentifier;
+    }
+
+
+
+    public Integer execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+        
+        Integer sessionId = data.getSessionIdCounter().getAndIncrement();
+        if ( this.outIdentifier != null ) {
+            ((ExecutionResultImpl)((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier, sessionId );
+        } 
+        
+        return sessionId;
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/ExecutionNodeContext.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,40 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.grid.internal.NodeData;
+
+public class ExecutionNodeContext
+    implements
+    Context {
+    private Context            context;
+    private NodeData data;
+
+    public ExecutionNodeContext(Context context,
+                                       NodeData data) {
+        this.data = data;
+    }
+
+    public NodeData getServiceManagerData() {
+        return this.data;
+    }
+
+    public ContextManager getContextManager() {
+        return context.getContextManager();
+    }
+
+    public String getName() {
+        return context.getName();
+    }
+
+    public Object get(String identifier) {
+        return context.get( identifier );
+    }
+
+    public void set(String identifier,
+                    Object value) {
+        context.set( identifier,
+                     value );
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/GetWorkItemManagerCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,29 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.grid.remote.WorkItemManagerRemoteClient;
+
+/**
+ * 
+ * @author Lucas Amador
+ *
+ */
+public class GetWorkItemManagerCommand implements GenericCommand<WorkItemManager> {
+	
+	private static final long serialVersionUID = 1L;
+
+	public WorkItemManager execute(Context context) {
+        WorkItemManager workItemManager = ((KnowledgeCommandContext) context).getWorkItemManager();
+        ((ExecutionResultImpl)((KnowledgeCommandContext) context ).getExecutionResults()).getResults().put("workItemManager", getRemoteClient(workItemManager) );
+        return workItemManager;
+	}
+	
+	private WorkItemManager getRemoteClient(WorkItemManager workItemManager) {
+        return new WorkItemManagerRemoteClient();
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/LookupCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,39 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.grid.internal.NodeData;
+
+public class LookupCommand
+    implements
+    GenericCommand<String> {
+
+    private String identifier;
+
+    private String outIdentifier;
+
+    public LookupCommand(String identfier) {
+        this.identifier = identfier;
+    }
+
+    public LookupCommand(String identfier,
+                         String outIdentifier) {
+        this.identifier = identfier;
+        this.outIdentifier = outIdentifier;
+    }
+
+    public String execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+        String instanceId = (String) data.getRoot().get( identifier );
+
+        if ( this.outIdentifier != null ) {
+            ((ExecutionResultImpl) ((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier,
+                                                                                                                instanceId );
+        }
+        return instanceId;
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/RegisterCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,32 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.grid.internal.NodeData;
+
+public class RegisterCommand
+    implements
+    GenericCommand<Void> {
+
+    private String identifier;
+    private String instanceId;
+    private int    type;
+
+    public RegisterCommand(String identifier,
+                           String instanceId,
+                           int type) {
+        this.identifier = identifier;
+        this.instanceId = instanceId;
+        this.type = type;
+    }
+
+    public Void execute(Context context) {
+        NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+        data.getRoot().set( identifier,
+                            type + ":" + instanceId );
+
+        return null;
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/RegisterRemoteWorkItemHandlerCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,75 @@
+package org.drools.grid.commands;
+
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.WorkItemHandler;
+
+public class RegisterRemoteWorkItemHandlerCommand implements GenericCommand<Object> {
+	
+	private String handler;
+	private String workItemName;
+
+        public RegisterRemoteWorkItemHandlerCommand() {
+        }
+
+        public RegisterRemoteWorkItemHandlerCommand(String workItemName, String handler) {
+            this.handler = handler;
+            this.workItemName = workItemName;
+        }
+        
+	public String getHandler() {
+		return handler;
+	}
+
+	public void setHandler(String handler) {
+		this.handler = handler;
+	}
+
+	public String getWorkItemName() {
+		return workItemName;
+	}
+
+	public void setWorkItemName(String workItemName) {
+		this.workItemName = workItemName;
+	}
+
+    public Object execute(Context context) {
+        StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession(); 
+        WorkItemHandler workItemHandler = null;
+        try {
+             Class t = Class.forName(handler);
+             Constructor c = t.getConstructor(KnowledgeRuntime.class);
+             workItemHandler =  (WorkItemHandler) c.newInstance(ksession);
+        } catch (InstantiationException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (NoSuchMethodException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (SecurityException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        ksession.getWorkItemManager().registerWorkItemHandler(workItemName, workItemHandler);
+		return null;
+	}
+
+	public String toString() {
+		return "session.getWorkItemManager().registerWorkItemHandler("
+			+ workItemName + ", " + handler +  ");";
+	}
+
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/StartProcessRemoteCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,108 @@
+/*
+ *  Copyright 2009 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.commands;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.grid.remote.ProcessInstanceRemoteClient;
+
+/**
+ *
+ * @author salaboy
+ */
+public class StartProcessRemoteCommand implements GenericCommand<ExecutionResults>{
+    private String processId;
+    private Map<String, Object> parameters = new HashMap<String, Object>();
+    private List<Object> data = null;
+
+    public StartProcessRemoteCommand() {
+    }
+
+
+    public StartProcessRemoteCommand(String processId) {
+        this.processId = processId;
+    }
+
+    public List<Object> getData() {
+        return data;
+    }
+
+    public void setData(List<Object> data) {
+        this.data = data;
+    }
+
+    public Map<String, Object> getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(Map<String, Object> parameters) {
+        this.parameters = parameters;
+    }
+
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+
+    public ExecutionResults execute(Context context) {
+        StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+
+		if (data != null) {
+			for (Object o: data) {
+				ksession.insert(o);
+			}
+		}
+		ProcessInstance processInstance = (ProcessInstance) ksession.startProcess(processId, parameters);
+
+                ((ExecutionResultImpl)((KnowledgeCommandContext) context ).getExecutionResults()).getResults().put( processId, getRemoteClient(processInstance) );
+
+		return ((ExecutionResultImpl)((KnowledgeCommandContext) context ).getExecutionResults());
+	}
+
+	public String toString() {
+		String result = "session.startProcess(" + processId + ", [";
+		if (parameters != null) {
+			int i = 0;
+			for (Map.Entry<String, Object> entry: parameters.entrySet()) {
+				if (i++ > 0) {
+					result += ", ";
+				}
+				result += entry.getKey() + "=" + entry.getValue();
+			}
+		}
+		result += "]);";
+		return result;
+	}
+
+    private ProcessInstance getRemoteClient(ProcessInstance processInstance) {
+        return new ProcessInstanceRemoteClient(processInstance.getId(), processInstance.getProcessId(),
+                 processInstance.getProcessName(), processInstance.getState());
+    }
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/BlockingGenericIoWriter.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,32 @@
+/**
+ * 
+ */
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+
+public class BlockingGenericIoWriter implements GenericIoWriter {
+    
+    private Message msg;
+
+    public void write(Message message) {
+        this.msg = message;
+    }
+    
+    public Message getMessage() {
+        return this.msg;
+    }
+
+    public void write(Message msg,
+                      MessageResponseHandler responseHandler) {
+        if ( responseHandler == null ) {
+            this.msg = msg;
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+    
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/ClientGenericMessageReceiver.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,18 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+public interface ClientGenericMessageReceiver {
+
+    public abstract void addResponseHandler(int id,
+                                            MessageResponseHandler responseHandler);
+
+    public abstract void messageReceived(GenericIoWriter writer,
+                                         Message msg) throws Exception;
+
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/CollectionClient.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,84 @@
+package org.drools.grid.internal;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+public class CollectionClient<T>
+    implements
+    Collection {
+    private String parentInstanceId;
+
+    public CollectionClient(String parentInstanceId) {
+        this.parentInstanceId = parentInstanceId;
+    }
+
+    public String getParentInstanceId() {
+        return this.parentInstanceId;
+    }
+
+    public boolean add(Object e) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean addAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public void clear() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public boolean contains(Object o) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean containsAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isEmpty() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public Iterator iterator() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public boolean remove(Object o) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean removeAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean retainAll(Collection c) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public int size() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public Object[] toArray() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Object[] toArray(Object[] a) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/GenericMessageHandler.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,11 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+
+public interface GenericMessageHandler {
+
+    public abstract void messageReceived(GenericIoWriter session,
+                                         Message msg) throws Exception;
+
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/GenericMessageHandlerImpl.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,69 @@
+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;
+
+import org.drools.SystemEventListener;
+import org.drools.command.FinishedCommand;
+import org.drools.command.impl.ContextImpl;
+import org.drools.command.impl.GenericCommand;
+import org.drools.runtime.impl.ExecutionResultImpl;
+
+public class GenericMessageHandlerImpl implements GenericMessageHandler {
+    private SystemEventListener systemEventListener;
+
+    private NodeData  data;
+
+    public GenericMessageHandlerImpl(NodeData data,
+                                 SystemEventListener systemEventListener) {
+        this.systemEventListener = systemEventListener;
+        this.data = data;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.vsm.GenericMessageHandler#messageReceived(org.drools.vsm.GenericIoWriter, org.drools.vsm.Message)
+     */
+    public void messageReceived(GenericIoWriter session,
+                                Message msg) throws Exception {
+        systemEventListener.debug( "Message receieved : " + msg );
+
+
+        // we always need to process a List, for genericity, but don't force a List on the payload
+        List<GenericCommand> commands;
+        if ( msg.getPayload() instanceof List ) {
+            commands = (List<GenericCommand>) msg.getPayload();
+        } else {
+            commands = new ArrayList<GenericCommand>();
+            commands.add( (GenericCommand) msg.getPayload() );
+        }
+
+        // Setup the evaluation context 
+        ContextImpl localSessionContext = new ContextImpl( "session_" + msg.getSessionId(),
+                                                           this.data.getContextManager(),
+                                                           this.data.getTemp() );        
+        ExecutionResultImpl localKresults = new ExecutionResultImpl();
+        localSessionContext.set( "kresults_" + msg.getSessionId(),
+                                 localKresults );
+        
+        for ( GenericCommand cmd : commands ) {
+            // evaluate the commands
+            cmd.execute( localSessionContext );
+        }
+
+        if ( !msg.isAsync() && localKresults.getIdentifiers().isEmpty() ) {
+            // if it's not an async invocation and their are no results, just send a simple notification message
+            session.write( new Message( msg.getSessionId(),
+                                        msg.getResponseId(),
+                                        msg.isAsync(),
+                                        new FinishedCommand() ), null );
+        } else {
+            // return the payload
+            session.write( new Message( msg.getSessionId(),
+                                        msg.getResponseId(),
+                                        msg.isAsync(),
+                                        localKresults ), null );
+        }
+    }
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/GenericNodeConnector.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,17 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import java.rmi.RemoteException;
+
+public interface GenericNodeConnector extends GenericIoWriter {
+
+    boolean connect() throws RemoteException;;
+
+    void disconnect() throws RemoteException;;
+
+    Message write(Message msg) throws RemoteException;;
+
+    String getId() throws RemoteException;;
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/MessageSession.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,57 @@
+/*
+ *  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.internal;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MessageSession {
+
+    public AtomicInteger    counter;
+    private int sessionId = -1;
+
+    public MessageSession() {
+        counter = new AtomicInteger();
+    }
+
+
+
+    public AtomicInteger getCounter() {
+        return counter;
+    }
+
+    public void setCounter(AtomicInteger counter) {
+        this.counter = counter;
+    }
+
+    public int getSessionId() {
+        return sessionId;
+    }
+
+    public void setSessionId(int sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public int getNextId() {
+        return this.counter.incrementAndGet();
+    }
+
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/NodeData.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,67 @@
+package org.drools.grid.internal;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.command.impl.ContextImpl;
+import org.drools.grid.ContextManagerImpl;
+
+public class NodeData {
+    private ContextManager contextManager;
+
+    private Context        root;
+    private Context        temp;
+
+    public static String   ROOT                 = "ROOT";
+    public static String   TEMP                 = "__TEMP__";
+    public static String   NODE_DATA = "__NodeData__";
+
+    private AtomicInteger  sessionIdCounter     = new AtomicInteger();
+
+    public NodeData() {
+        // Setup ROOT context, this will hold all long lived intances and instanceIds
+        this.contextManager = new ContextManagerImpl();
+
+        this.root = new ContextImpl( ROOT,
+                                     this.contextManager );
+        ((ContextManagerImpl) this.contextManager).addContext( this.root );
+        this.root.set( NODE_DATA,
+                       this );
+        // Setup TEMP context, this will hold all short lived instanceId and instances
+        // TODO: TEMP context should have a time/utilisation eviction queue added 
+        this.temp = new ContextImpl( TEMP,
+                                     this.contextManager,
+                                     this.root );
+        ((ContextManagerImpl) this.contextManager).addContext( this.temp );
+    }
+
+    public AtomicInteger getSessionIdCounter() {
+        return sessionIdCounter;
+    }
+
+    public ContextManager getContextManager() {
+        return contextManager;
+    }
+
+    public void setContextManager(ContextManager contextManager) {
+        this.contextManager = contextManager;
+    }
+
+    public Context getRoot() {
+        return root;
+    }
+
+    public void setRoot(Context root) {
+        this.root = root;
+    }
+
+    public Context getTemp() {
+        return temp;
+    }
+
+    public void setTemp(Context temp) {
+        this.temp = temp;
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -25,7 +25,7 @@
 import java.util.UUID;
 import org.drools.KnowledgeBase;
 import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.generic.GenericNodeConnector;
+import org.drools.grid.GenericNodeConnector;
 
 /**
  *

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -14,21 +14,22 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.grid.local;
 
 import java.util.ArrayList;
 import java.util.List;
 import org.drools.KnowledgeBaseFactoryService;
 import org.drools.builder.DirectoryLookupFactoryService;
-import org.drools.builder.JPAKnowledgeFactoryService;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.ExecutionNode;
-import org.drools.grid.NodeSelectionStrategy;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.local.DirectoryLookupProviderLocalClient;
+import org.drools.grid.local.KnowledgeBaseProviderLocalClient;
+import org.drools.grid.local.KnowledgeBuilderProviderLocalClient;
 import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
+import org.drools.grid.strategies.NodeSelectionStrategy;
 
 /**
  *
@@ -36,16 +37,14 @@
  */
 public class LocalConnection implements GenericConnection {
 
-     //Cached NodeConnectors
+    //Cached NodeConnectors
     private List<GenericNodeConnector> nodeConnectors;
 
-
     public LocalConnection() {
         this.nodeConnectors = new ArrayList<GenericNodeConnector>();
 
     }
 
-
     public void addNodeConnector(GenericNodeConnector nodeConnector) {
         this.nodeConnectors.add(nodeConnector);
     }
@@ -74,15 +73,14 @@
     public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
 
         ExecutionNode node = new ExecutionNode();
-        node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderLocalClient() );
-        node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderLocalClient() );
+        node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderLocalClient());
+        node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderLocalClient());
         node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderLocalClient());
-        
+
         return node;
     }
 
     public ExecutionNode getExecutionNode() {
         return getExecutionNode(null);
     }
-
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -26,12 +26,12 @@
 import org.drools.runtime.CommandExecutor;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.grid.command.LookupCommand;
-import org.drools.grid.command.RegisterCommand;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.commands.LookupCommand;
+import org.drools.grid.commands.RegisterCommand;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 /**
  *

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -11,9 +11,9 @@
 import org.drools.command.SetVariableCommand;
 import org.drools.runtime.Environment;
 import org.drools.runtime.KnowledgeSessionConfiguration;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 public class KnowledgeBaseProviderRemoteClient
     implements

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -18,10 +18,10 @@
 import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.StatelessKnowledgeSession;
-import org.drools.grid.generic.CollectionClient;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.internal.CollectionClient;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 public class KnowledgeBaseRemoteClient
     implements

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -14,9 +14,9 @@
 import org.drools.command.FinishedCommand;
 import org.drools.command.SetVariableCommand;
 import org.drools.command.builder.NewKnowledgeBuilderCommand;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 public class KnowledgeBuilderProviderRemoteClient
     implements

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -15,10 +15,10 @@
 import org.drools.definition.KnowledgePackage;
 import org.drools.io.Resource;
 import org.drools.runtime.ExecutionResults;
-import org.drools.grid.generic.CollectionClient;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.internal.CollectionClient;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 public class KnowledgeBuilderRemoteClient
     implements

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,124 @@
+/*
+ *  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;
+
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
+import org.drools.grid.strategies.NodeSelectionStrategy;
+
+import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RemoteConnection implements GenericConnection {
+    //Cached Services
+
+    private List<GenericNodeConnector> nodeConnectors;
+    //Cached Directories
+    private List<DirectoryNodeService> directories;
+
+    public RemoteConnection() {
+        this.nodeConnectors = new ArrayList<GenericNodeConnector>();
+        this.directories = new ArrayList<DirectoryNodeService>();
+    }
+
+    public void addNodeConnector(GenericNodeConnector service) {
+        //register the service to all the DirectoryServices
+        for (DirectoryNodeService directory : directories) {
+            directory.addService(service);
+        }
+        this.nodeConnectors.add(service);
+
+    }
+
+    public void addDirectoryNode(DirectoryNodeService directory) {
+        this.directories.add(directory);
+
+    }
+
+    // In real scenarios this method will be in charge of populating
+    // all the ExecutionNodeService and DirectoryServices
+    public void connect() {
+    }
+
+    public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
+        ExecutionNode node = null;
+        GenericNodeConnector currentNode = null;
+        try {
+
+            //if the strategy is null use the default one
+            if (strategy == null) {
+                currentNode = getBestNode(new StaticIncrementalSelectionStrategy(this));
+            } else {
+                strategy.setConnection(this);
+                currentNode = getBestNode(strategy);
+            }
+            if (currentNode.connect()) {
+                node = new ExecutionNode();
+                node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(currentNode));
+                node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(currentNode));
+                node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderRemoteClient(currentNode, this));
+
+            }
+
+        } catch (RemoteException ex) {
+            Logger.getLogger(RemoteConnection.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return node;
+    }
+
+    public GenericNodeConnector getBestNode(NodeSelectionStrategy nodeSelectionStrategy) {
+        return nodeSelectionStrategy.getBestNode();
+    }
+
+    public List<DirectoryNodeService> getDirectories() {
+        return directories;
+    }
+
+    public void setDirectories(List<DirectoryNodeService> directories) {
+        this.directories = directories;
+    }
+
+    public List<GenericNodeConnector> getNodeConnectors() {
+        return nodeConnectors;
+    }
+
+    public void setServices(List<GenericNodeConnector> services) {
+        this.nodeConnectors = services;
+    }
+
+    public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) {
+        return directories.get(0);
+    }
+
+    public ExecutionNode getExecutionNode() {
+        return getExecutionNode(null);
+    }
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -8,9 +8,9 @@
 import org.drools.command.ExecuteCommand;
 import org.drools.command.KnowledgeContextResolveFromContextCommand;
 import org.drools.command.runtime.rule.FireAllRulesCommand;
-import org.drools.grid.command.GetWorkItemManagerCommand;
-import org.drools.grid.command.RegisterRemoteWorkItemHandlerCommand;
-import org.drools.grid.command.StartProcessRemoteCommand;
+import org.drools.grid.commands.GetWorkItemManagerCommand;
+import org.drools.grid.commands.RegisterRemoteWorkItemHandlerCommand;
+import org.drools.grid.commands.StartProcessRemoteCommand;
 import org.drools.event.process.ProcessEventListener;
 import org.drools.event.rule.AgendaEventListener;
 import org.drools.event.rule.WorkingMemoryEventListener;
@@ -26,12 +26,14 @@
 import org.drools.runtime.rule.Agenda;
 import org.drools.runtime.rule.AgendaFilter;
 import org.drools.runtime.rule.FactHandle;
+
 import org.drools.runtime.rule.QueryResults;
+;
 import org.drools.runtime.rule.WorkingMemoryEntryPoint;
-import org.drools.grid.generic.GenericNodeConnector;
+import org.drools.grid.GenericNodeConnector;
 import org.drools.time.SessionClock;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 public class StatefulKnowledgeSessionRemoteClient
     implements
@@ -422,4 +424,6 @@
         return null;
     }
 
+   
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -7,9 +7,9 @@
 import org.drools.command.runtime.process.CompleteWorkItemCommand;
 import org.drools.runtime.process.WorkItemHandler;
 import org.drools.runtime.process.WorkItemManager;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
 
 /**
  *

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -7,16 +7,16 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.drools.SystemEventListener;
-import org.drools.grid.command.Command;
+import org.drools.grid.commands.Command;
 
 
 
 
-import org.drools.grid.generic.ClientGenericMessageReceiver;
-import org.drools.grid.generic.GenericIoWriter;
-import org.drools.grid.generic.GenericMessageHandler;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.ClientGenericMessageReceiver;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.GenericMessageHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 
 public class ClientGenericMessageReceiverImpl
     implements

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -5,10 +5,10 @@
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
 import org.drools.SystemEventListener;
-import org.drools.grid.generic.ClientGenericMessageReceiver;
-import org.drools.grid.generic.GenericMessageHandler;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.ClientGenericMessageReceiver;
+import org.drools.grid.internal.GenericMessageHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 
 public class MinaIoHandler extends IoHandlerAdapter {
     /**

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,9 +1,9 @@
 package org.drools.grid.remote.mina;
 
 import org.apache.mina.core.session.IoSession;
-import org.drools.grid.generic.GenericIoWriter;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 
 public class MinaIoWriter
     implements

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -8,11 +8,13 @@
 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.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.GenericIoWriter;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 import org.drools.grid.responsehandlers.BlockingMessageResponseHandler;
 
 public class MinaNodeConnector
@@ -41,8 +43,26 @@
         this.address = address;
         this.connector = connector;
         this.eventListener = eventListener;
+
     }
 
+       public MinaNodeConnector(String name,
+                         SocketAddress address,
+                         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 = address;
+        this.connector = minaconnector;
+        this.eventListener = eventListener;
+    }
+
+
     /* (non-Javadoc)
      * @see org.drools.vsm.mina.Messenger#connect()
      */

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -2,7 +2,7 @@
 
 import java.lang.reflect.Constructor;
 
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.MessageResponseHandler;
 
 /**
  * Abstract base class for client ResponseHandlers. Provides synchonized access to <field>done</field> which represents

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -3,8 +3,8 @@
  */
 package org.drools.grid.responsehandlers;
 
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 
 public class BlockingMessageResponseHandler extends AbstractBlockingResponseHandler
     implements

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,26 +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.strategies;
-
-/**
- *
- * @author salaboy
- */
-public class DirectoryServiceSelectionStrategy {
-
-}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,43 +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.strategies;
-
-import org.drools.grid.NodeSelectionStrategy;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-
-/**
- *
- * @author salaboy
- */
-public class ReturnAlwaysTheFirstSelectionStrategy implements NodeSelectionStrategy{
-
-    private GenericConnection connection;
-    public ReturnAlwaysTheFirstSelectionStrategy(GenericConnection connection) {
-        this.connection = connection;
-    }
-    public GenericNodeConnector getBestNode() {
-        return this.connection.getNodeConnectors().get(0);
-    }
-
-    public void setConnection(GenericConnection connection) {
-        this.connection = connection;
-    }
-
-
-}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,51 +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.strategies;
-
-
-import org.drools.grid.NodeSelectionStrategy;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-
-
-/**
- *
- * @author salaboy
- */
-public class StaticIncrementalSelectionStrategy implements NodeSelectionStrategy{
-    public static int counter = 0;
-    private GenericConnection connection;
-    public StaticIncrementalSelectionStrategy(GenericConnection connection) {
-        this.connection = connection;
-    }
-
-
-    //@Override
-    public GenericNodeConnector getBestNode() {
-        System.out.println("!!!!!GET BEST NODE = "+counter);
-        GenericNodeConnector service = connection.getNodeConnectors().get(counter);
-        StaticIncrementalSelectionStrategy.counter = counter +1;
-        return service;
-    }
-
-    public void setConnection(GenericConnection connection) {
-        this.connection = connection;
-    }
-    
-
-}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -28,7 +28,6 @@
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.grid.generic.GenericConnection;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java	2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -17,23 +17,21 @@
 
 package org.drools.grid;
 
+import org.drools.grid.remote.RemoteConnection;
 import java.rmi.RemoteException;
 import java.util.Iterator;
 import org.drools.grid.remote.mina.MinaNodeConnector;
-import org.drools.grid.generic.GenericNodeConnector;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
 import java.io.IOException;
 import org.drools.grid.remote.mina.MinaAcceptor;
-import org.drools.grid.generic.GenericMessageHandlerImpl;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
 import org.drools.grid.remote.mina.MinaIoHandler;
 import org.drools.SystemEventListenerFactory;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.mina.transport.socket.SocketAcceptor;
-import org.drools.grid.generic.NodeData;
+import org.drools.grid.internal.NodeData;
 import java.net.SocketAddress;
 import java.net.InetSocketAddress;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.RemoteConnection;
 import org.drools.grid.local.DirectoryNodeLocalImpl;
 import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
 import org.junit.After;


Property changes on: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services
___________________________________________________________________
Name: svn:ignore
   + target


Added: 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	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>drools-grid</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.1.0.SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <name>Drools :: Grid :: Services</name>
+    <artifactId>drools-grid-services</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-api</artifactId>
+            <type>jar</type>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-core</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+            <type>jar</type>
+        </dependency>
+       <dependency>
+            <groupId>org.apache.mina</groupId>
+            <artifactId>mina-core</artifactId>
+            <version>2.0.0-M6</version>
+          
+       </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,20 @@
+package org.drools.grid.services;
+
+import java.util.Map;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 11:10:44 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface EnvironmentProvider {
+
+    public GenericNodeConnector getNodeConnector();
+    public void setParameter(String name, Object value);
+    public Object getParameter(String name);
+    public Map<String, Object> getParameters();
+
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,113 @@
+package org.drools.grid.services;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import org.drools.grid.GenericNodeConnector;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 11:45:32 AM
+ * To change this template use File | Settings | File Templates.
+ */
+
+
+/**
+ * @author salaboy
+ */
+public class ExecutionEnvironment {
+    private String id;
+    private String name;
+    private EnvironmentProvider provider;
+    public enum ProviderStatus{RUNNING, STOPPED, FAILURE};
+    private ProviderStatus status;
+    
+    private Map<String, Object> info;
+
+    public ExecutionEnvironment(String name, EnvironmentProvider provider) {
+        this.id = UUID.randomUUID().toString();
+        this.name = name;
+        this.provider = provider;
+        this.info = new HashMap<String, Object>();
+    }
+
+    private void queryForInfo(){
+        //Information about the provider (Mem, CPU, KErnel, etc)
+        this.info.put("info", null);
+
+    }
+
+    public boolean checkConnection(){
+//        if(provider.checkConnection()){
+//            return true;
+//        }
+
+        return false;
+    }
+
+    public ProviderStatus getStatus(){
+            if(checkConnection()){
+                return ProviderStatus.RUNNING;
+
+            }
+            return null;
+    }
+
+    public long ping() throws IOException{
+        String ip = provider.getParameter("providerAddress").toString();
+        InetAddress in = InetAddress.getByName(ip);
+        long startTime = System.currentTimeMillis();
+        long timeOfResponse;
+        if(in.isReachable(5000)){
+            timeOfResponse = System.currentTimeMillis();
+            System.out.println("Responde OK");
+            return timeOfResponse - startTime;
+        }
+        else{
+            System.out.println("No responde: Time out");
+            return 0;
+        }
+
+    }
+
+    public GenericNodeConnector getConnector(){
+        return provider.getNodeConnector();
+    }
+
+    public Map<String, Object> getInfo(){
+        return this.info;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public EnvironmentProvider getProvider() {
+        return provider;
+    }
+
+    public void setProvider(EnvironmentProvider provider) {
+        this.provider = provider;
+    }
+
+    
+    
+}
\ No newline at end of file

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,95 @@
+package org.drools.grid.services;
+
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.remote.RemoteConnection;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.remote.mina.MinaNodeConnector;
+import java.util.*;
+import org.drools.grid.services.directory.DirectoryInstance;
+import org.drools.grid.services.strategies.ExecutionEnvironmentSelectionStrategy; 
+import org.drools.grid.strategies.ReturnAlwaysTheFirstSelectionStrategy;
+
+/**
+ * @author salaboy
+ * ExecutionEnvironmentTopology describes the current topology of the grid
+ * This topology description will be persistent, in case of failure
+ * the topology can be restored.
+ * This class will represent the configured topology related with a business case
+ * and it will require that each execution environment is already started and running.  
+ */
+public class ExecutionEnvironmentTopology {
+
+    private String id;
+    private String name;
+    private Map<String, ExecutionEnvironment> environments = new HashMap<String, ExecutionEnvironment>();
+    private Map<String, DirectoryInstance> directories = new HashMap<String, DirectoryInstance>();
+    private Map<String, GenericConnection> connections = new HashMap<String, GenericConnection>();
+
+    public ExecutionEnvironmentTopology(String name) {
+        this.id = UUID.randomUUID().toString();
+        this.name = name;
+
+    }
+
+    public void registerExecutionEnvironment(String name, EnvironmentProvider provider) {
+        ExecutionEnvironment executionEnvironment = new ExecutionEnvironment(name, provider);
+        GenericNodeConnector connector = executionEnvironment.getConnector();
+        System.out.println("Connector  =" + connector);
+        if (connector instanceof MinaNodeConnector) {
+            RemoteConnection connection = new RemoteConnection();
+            connection.addNodeConnector(connector);
+
+            connections.put(name, connection);
+
+        }
+        environments.put(name, executionEnvironment);
+
+
+    }
+//
+//    public void registerDirectoryInstance(String name, DirectoryProvider provider){
+//       // return new DirectoryInstance(name, provider);
+//       // return null;
+//    }
+
+    public static ExecutionEnvironment lookup(String name) {
+        //black magic
+        return null;
+    }
+
+    public static DirectoryInstance lookupDirectoryInstance(String name) {
+
+        return new DirectoryInstance();
+    }
+
+    public Map<String, GenericConnection> getConnections() {
+        return this.connections;
+    }
+
+    public ExecutionEnvironment getExecutionEnvironment(String name) {
+        return this.environments.get(name);
+    }
+
+    public ExecutionEnvironment getBestExecutionEnvironment(ExecutionEnvironmentSelectionStrategy strategy) {
+        return strategy.getBestExecutionEnvironment(environments);
+    }
+
+    public Map<String, ExecutionEnvironment> getExecutionEnvironments() {
+        return this.environments;
+    }
+
+    public ExecutionNode getExecutionNode() {
+        return null;
+
+    }
+    //@TODO: need to add strategy to get the execution node here!!!
+    public ExecutionNode getExecutionNode(ExecutionEnvironment ee) {
+
+        GenericConnection connection = connections.get(ee.getName());
+        System.out.println("Connection =" + connection + " - > name = " + ee.getName());
+
+        return connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy(connection));
+
+    }
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,11 @@
+package org.drools.grid.services.directory;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 11:00:29 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class DirectoryInstance {
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,61 @@
+package org.drools.grid.services.remote;
+
+
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.remote.mina.MinaNodeConnector;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.mina.transport.socket.SocketConnector;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.EnvironmentProvider;
+
+/**
+ * @author salaboy
+ */
+public class MinaEnvironmentProvider implements EnvironmentProvider {
+    private Map<String, Object> parameters = new HashMap<String, Object>();
+    private transient GenericNodeConnector connector;
+
+    public MinaEnvironmentProvider() {
+        init();
+        
+    }
+
+    
+
+    public MinaEnvironmentProvider(Map<String, Object> parameters) {
+        this.parameters = parameters;
+        init();
+    }
+
+    private void init() {
+        String providerName = (String) parameters.get("providerName");
+        String providerAddress = (String) parameters.get("providerAddress");
+        int providerPort = (Integer) parameters.get("providerPort");
+        SocketAddress address = new InetSocketAddress(providerAddress, providerPort);
+        SocketConnector minaconnector = new NioSocketConnector();
+        minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+        connector = new MinaNodeConnector(providerName, address, SystemEventListenerFactory.getSystemEventListener());
+    }
+    
+
+    public void setParameter(String name, Object value) {
+        parameters.put(name, value);
+    }
+
+    public Object getParameter(String name) {
+        return parameters.get(name);
+    }
+
+    public Map<String, Object> getParameters() {
+        return parameters;
+    }
+
+    public GenericNodeConnector getNodeConnector(){
+        return this.connector;
+    }
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,31 @@
+/*
+ *  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.services.strategies;
+
+import java.util.Map;
+import org.drools.grid.services.ExecutionEnvironment;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface ExecutionEnvironmentSelectionStrategy {
+    public ExecutionEnvironment getBestExecutionEnvironment();
+    public void setEnvironments(Map<String, ExecutionEnvironment> environments);
+    public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments);
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,77 @@
+/*
+ *  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.services.strategies;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.services.ExecutionEnvironment;
+
+/**
+ *
+ * @author salaboy
+ *
+ * The Environment with lowest ping will be selected
+ */
+public class LowPingFirstEnvironmentSelectionStrategy implements ExecutionEnvironmentSelectionStrategy {
+
+    private Map<String, ExecutionEnvironment> environments;
+
+    public LowPingFirstEnvironmentSelectionStrategy() {
+    }
+
+
+    public LowPingFirstEnvironmentSelectionStrategy(Map<String, ExecutionEnvironment> environments) {
+        this.environments = environments;
+    }
+
+
+    public ExecutionEnvironment getBestExecutionEnvironment() {
+        ExecutionEnvironment selectedEnv = null;
+        for(ExecutionEnvironment env : this.environments.values()){
+            if(selectedEnv != null){
+                try {
+                    int oldping = Integer.parseInt(selectedEnv.getInfo().get("ping").toString());
+                    long ping = env.ping();
+                    if (oldping > ping) {
+                        selectedEnv = env;
+                    }
+                } catch (IOException ex) {
+                    Logger.getLogger(LowPingFirstEnvironmentSelectionStrategy.class.getName()).log(Level.SEVERE, null, ex);
+                }
+
+            }
+
+        }
+
+        return selectedEnv;
+    }
+
+    public void setEnvironments(Map<String, ExecutionEnvironment> environments) {
+        this.environments = environments;
+    }
+
+    public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments) {
+        setEnvironments(environments);
+        return getBestExecutionEnvironment();
+    }
+    
+   
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,52 @@
+/*
+ *  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.services.strategies;
+
+import java.util.Map;
+import org.drools.grid.services.ExecutionEnvironment;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RandomEnvironmentSelectionStrategy implements ExecutionEnvironmentSelectionStrategy{
+
+    private Map<String, ExecutionEnvironment> environments;
+    public ExecutionEnvironment getBestExecutionEnvironment() {
+        int elementToGet = (new Double(Math.random() * 100).intValue() % environments.size());
+        int counter = 0;
+        ExecutionEnvironment selectedEnv = null;
+        for(String key : environments.keySet()){
+           if(counter == elementToGet){
+            selectedEnv = environments.get(key);
+           }
+           counter++;
+        }
+        return selectedEnv;
+    }
+
+    public void setEnvironments(Map<String, ExecutionEnvironment> environments) {
+        this.environments = environments;
+    }
+
+    public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments) {
+        setEnvironments(environments);
+        return getBestExecutionEnvironment();
+    }
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java	2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,345 @@
+package org.drools.services;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.ExecutionEnvironmentTopology;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.ExecutionNode;
+import org.junit.Test;
+
+import java.util.Map;
+import junit.framework.Assert;
+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.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.strategies.RandomEnvironmentSelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.Before;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 10:07:02 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class BasicAPITest {
+
+    private MinaAcceptor server1;
+    private MinaAcceptor server2;
+    private ExecutionEnvironmentTopology eet;
+
+    @Before
+    public void setUp() throws IOException {
+
+        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", 9123);
+        NodeData nodeData = new NodeData();
+        // setup Server
+        SocketAcceptor acceptor = new NioSocketAcceptor();
+        acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new GenericMessageHandlerImpl(nodeData,
+                SystemEventListenerFactory.getSystemEventListener())));
+        server1 = new MinaAcceptor(acceptor, address);
+        server1.start();
+        System.out.println("Server 1 Started! at = " + address.toString());
+
+
+        System.out.println("Server 2 Starting!");
+        // the servers should be started in a different machine (jvm or physical) or in another thread
+        address = new InetSocketAddress("127.0.0.1", 9124);
+        nodeData = new NodeData();
+        // setup Server
+        acceptor = new NioSocketAcceptor();
+        acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new GenericMessageHandlerImpl(nodeData,
+                SystemEventListenerFactory.getSystemEventListener())));
+        server2 = new MinaAcceptor(acceptor, address);
+        server2.start();
+        System.out.println("Server 2 Started! at = " + address.toString());
+
+
+    }
+
+    @After
+    public void stop() {
+        for (String key : eet.getExecutionEnvironments().keySet()) {
+            try {
+                eet.getExecutionEnvironment(key).getConnector().disconnect();
+            } catch (RemoteException ex) {
+                Logger.getLogger(BasicAPITest.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }
+        
+        server1.stop();
+        System.out.println("Server 1 Stopped!");
+
+        server2.stop();
+        System.out.println("Server 2 Stopped!");
+
+
+
+
+    }
+
+    @Test
+    public void singleMinaProvider() {
+
+        //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+        //will be used for a specific situation/use case.
+
+        //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the
+        //topology in case of failure or restarting
+        eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+        //Specific paramters for this specific provider
+        Map<String, Object> parameters = new HashMap<String, Object>();
+        parameters.put("providerName", "Mina1");
+        parameters.put("providerAddress", "127.0.0.1");
+        parameters.put("providerPort", 9123);
+        //Create the provider
+        MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+        //Register the provider into the topology
+        eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
+
+        //Then we can get the registered Execution Environments by Name
+
+        ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+        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 = eet.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);
+
+        int fired = ksession.fireAllRules();
+        Assert.assertEquals(2, fired);
+
+        System.out.println("Ending Test One");
+
+    }
+
+    @Test
+    public void multiMinaProvider() {
+
+        //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+        //will be used for a specific situation/use case.
+
+        //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the 
+        //topology in case of failure or restarting
+
+        System.out.println("Starting Test Two");
+        eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+        //Specific paramters for this specific provider
+        Map<String, Object> parameters1 = new HashMap<String, Object>();
+        parameters1.put("providerName", "Mina1");
+        parameters1.put("providerAddress", "127.0.0.1");
+        parameters1.put("providerPort", 9123);
+        //Create the provider
+        MinaEnvironmentProvider provider1 = new MinaEnvironmentProvider(parameters1);
+        //Register the provider into the topology
+        eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider1);
+
+        //Specific paramters for this specific provider
+        Map<String, Object> parameters2 = new HashMap<String, Object>();
+        parameters2.put("providerName", "Mina1");
+        parameters2.put("providerAddress", "127.0.0.1");
+        parameters2.put("providerPort", 9124);
+        //Create the provider
+        MinaEnvironmentProvider provider2 = new MinaEnvironmentProvider(parameters2);
+        //Register the provider into the topology
+        eet.registerExecutionEnvironment("MyMinaExecutionEnv2", provider2);
+
+        //Then we can get the registered Execution Environments by Name
+        ExecutionEnvironment ee = eet.getBestExecutionEnvironment(new RandomEnvironmentSelectionStrategy());
+
+        Assert.assertNotNull(ee);
+        System.out.println("Selected Environment = " + ee.getName());
+
+        // Give me an ExecutionNode in the selected environment
+        // For the Mina we have just one Execution Node per server instance
+        ExecutionNode node = eet.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);
+
+        int fired = ksession.fireAllRules();
+        Assert.assertEquals(2, fired);
+
+    }
+//
+//    @Test
+//    public void basicMinaProviderTestOLD(){
+//
+//        //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+//        //will be used for a specific situation/use case.
+//
+//        //Runtime state, persistent
+//        ExecutionEnvironmentTopology eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+//        //Logical state and content of each execution environment
+//      // DirectoryInstance directory = eet.registerDirectoryInstance("MyMainDirectory",new ZooKeeperDirectoryProvider());
+//
+//          Map<String, Object> parameters = new HashMap<String,Object>();
+//          parameters.put("providerName", "Mina1");
+//          parameters.put("providerAddress", "127.0.0.1");
+//          parameters.put("providerPort", 9123);
+//
+//         MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+//
+//            eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider );
+//
+//
+//       //eet = ExecutionEnvironmentTopology.lookup("MyCompanyTopology");
+//
+//      // directory = eem.getDirectoryInstance("MyMainDirectory");
+//
+//      // List<DirectoryInstance> directories = eem.getAllDirectoryInstances();
+//      // this should return the active list of Envs, then we can query for the status of each of them
+////       Map<String, ExecutionEnvironment> ees = eet.getExecutionEnvironments();
+////       ees.get("MyMinaExecutionEnv1").getInfo();
+////       ees.get("MyMinaExecutionEnv1").getStatus();
+////
+//       ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+//       Assert.assertNotNull(ee);
+//        //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+////       ExecutionNode en = eet.getExecutionNode();
+//
+//        //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+//       ExecutionNode node = eet.getExecutionNode(ee); // give me an ExecutionNode in that environment..
+//
+//       Assert.assertNotNull(node);
+//
+//       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);
+//
+//        int fired = ksession.fireAllRules();
+//        Assert.assertEquals( 2, fired );
+//
+//
+//
+//    }
+}

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-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml	2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,26 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>drools</artifactId>
-    <groupId>org.drools</groupId>
-    <version>5.1.0.SNAPSHOT</version>
-  </parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>drools</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.1.0.SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <name>Drools :: Grid</name>
+    <artifactId>drools-grid</artifactId>
+    <packaging>pom</packaging>
 
-  <artifactId>drools-grid</artifactId>
-  <packaging>pom</packaging>
-  <name>Drools :: Grid</name>
+    <modules>
+        <module>drools-grid-client-api</module>
+        <module>drools-grid-services</module>
+	<module>drools-grid-core</module>
 
-  <modules>
-      <module>drools-grid-core</module>
-      <module>drools-grid-task</module>
-      <!-- You need JDK 1.6 and a special branch of the RIO project to work with this -->
-      <!-- This will be updated soon to be used with RIO trunk -->
-      <!-- For building this module with Hudson, we need to have installed a RIO runtime/RIO trunk inside
-           the Hudson Machine and compile everything with JDK 1.6. Also you need to export the RIO_HOME
-           env variable -->
-      <!--module>drools-grid-rio</module-->
-  </modules>
+    </modules>
 
+
 </project>



More information about the jboss-svn-commits mailing list