[jboss-svn-commits] JBL Code SVN: r34563 - in labs/jbossrules/trunk/drools-grid: drools-grid-distributed-api/src/main/java/org/drools/grid/distributed and 13 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 5 23:12:55 EDT 2010


Author: salaboy21
Date: 2010-08-05 23:12:52 -0400 (Thu, 05 Aug 2010)
New Revision: 34563

Added:
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DistributedRioNodeConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceConfiguration.java
Removed:
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DistributedRioNodeConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceView.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentView.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceView.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyView.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceView.java
Modified:
   labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnectorFactory.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseProviderGridClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBuilderProviderGridClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedRioDirectoryConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java
   labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/pom.xml
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GenericProvider.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/LocalProvider.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/MinaProvider.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/RioProvider.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ITGridExecutionTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
Log:
JBRULES-2615: Drools Grid Services remove unnessary dependencies
	- removing not needed deps + little refactors to improve the usability, still need comments

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -54,7 +54,7 @@
     public GenericNodeConnector lookup(String executorId) throws ConnectorException, RemoteException {
         String nodeConnectorId = (String) executorsMap.get(executorId);
 
-        return GenericConnectorFactory.newNodeConnector(nodeConnectorId);
+        return GenericConnectorFactory.newConnector(nodeConnectorId);
     }
 
     public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnectorFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnectorFactory.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnectorFactory.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -18,7 +18,6 @@
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import org.drools.SystemEventListener;
@@ -30,199 +29,316 @@
  */
 public class GenericConnectorFactory {
 
-    public static GenericNodeConnector newNodeConnector(String connectorString) {
-        
-        if(connectorString == null || connectorString.equals("")){
-          return null;
+    private static final String SEPARATOR = ":";
+    private static final String LOCAL_NODE_CONNECTOR_CLASS = "org.drools.grid.local.LocalNodeConnector";
+    private static final String LOCAL_DIRECTORY_CONNECTOR_CLASS = "org.drools.grid.local.LocalDirectoryConnector";
+    private static final String REMOTE_MINA_NODE_CONNECTOR_CLASS = "org.drools.grid.remote.mina.RemoteMinaNodeConnector";
+    private static final String REMOTE_MINA_DIRECTORY_CONNECTOR_CLASS = "org.drools.grid.remote.directory.RemoteMinaDirectoryConnector";
+    private static final String REMOTE_MINA_TASK_CONNECTOR_CLASS = "org.drools.grid.task.RemoteMinaHumanTaskConnector";
+    private static final String REMOTE_HORNETQ_NODE_CONNECTOR_CLASS = "";
+    private static final String REMOTE_HORNETQ_DIRECTORY_CONNECTOR_CLASS = "";
+    private static final String REMOTE_HORNETQ_TASK_CONNECTOR_CLASS = "";
+    private static final String DISTRIBUTED_RIO_NODE_CONNECTOR_CLASS = "org.drools.grid.distributed.impl.DistributedRioNodeConnector";
+    private static final String DISTRIBUTED_RIO_DIRECTORY_CONNECTOR_CLASS = "org.drools.distributed.directory.impl.DistributedRioDirectoryConnector";
+    private static final String DISTRIBUTED_RIO_TASK_CONNECTOR_CLASS = "";
+
+    /* connectorString format:
+     *  [0] -> Environment Type: Local, Remote, Distributed
+     *  [1] -> Implementation: Local, Mina, HornetQ, Rio
+     *  [2] -> Connector Type: Node, Directory, Task
+     *  [3] -> Connector Id: <ID of the Execution, Directory or Task node>,
+     *         The connector ID let us create the connector to a specific,
+     *         usually remote/distributed node,directory or taskserver.
+     *
+     *  examples:
+     *  Local Directory Connector String: Local:Local:Directory
+     *  Remote Mina Node Connector String: Remote:Mina:Node:127.0.0.1:9123
+     *  Distributed Rio Directory Connector String: Distributed:Rio:Directory:<ID>
+     */
+    public static GenericNodeConnector newConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        String[] connectorDetails = getConnectorDetails(connectorString);
+        String environmentType = connectorDetails[0];
+        if (environmentType.equals("Local")) {
+            connector = newLocalConnector(connectorString);
         }
-        String[] connectorDetails = connectorString.split(":");
+        if (environmentType.equals("Remote")) {
+            connector = newRemoteConnector(connectorString);
+        }
+        if (environmentType.equals("Distributed")) {
+            connector = newDistributedConnector(connectorString);
+        }
 
-        String connectorType = connectorDetails[0];
+        return connector;
+    }
 
+    private static GenericNodeConnector newLocalConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        String[] connectorDetails = getConnectorDetails(connectorString);
+        if (connectorDetails[1].equals("Local") && connectorDetails[2].equals("Node")) {
+            //TODO: add ID to the local connector (connectorString)
+            connector = newLocalNodeConnector();
+        }
+        if (connectorDetails[1].equals("Local") && connectorDetails[2].equals("Directory")) {
+            connector = newLocalDirectoryConnector();
+        }
+        if (connectorDetails[1].equals("Local") && connectorDetails[2].equals("Task")) {
+            throw new UnsupportedOperationException("We don't have a Local Task implementation! Sorry!");
+        }
 
-        if (connectorType.equals("Distributed")) {
-            String connectorBehavior = connectorDetails[1];
-            String connectorId = connectorDetails[2];
-            GenericNodeConnector connector = null;
+        return connector;
+    }
 
+    private static GenericNodeConnector newLocalNodeConnector() {
+        GenericNodeConnector connector = null;
+        try {
+            Class clazz = Class.forName(LOCAL_NODE_CONNECTOR_CLASS);
+            connector = (GenericNodeConnector) clazz.newInstance();
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return connector;
+    }
 
+    private static GenericNodeConnector newLocalDirectoryConnector() {
+        GenericNodeConnector connector = null;
+        try {
+            Class clazz = Class.forName(LOCAL_DIRECTORY_CONNECTOR_CLASS);
+            connector = (GenericNodeConnector) clazz.newInstance();
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return connector;
+    }
 
-            try {
-                Class clazzLocator = Class.forName("org.drools.grid.distributed.util.RioResourceLocator");
-                Method locate = clazzLocator.getMethod("locateResource", String.class);
-                ExecutionNodeService execNode = (ExecutionNodeService)locate.invoke(clazzLocator, connectorString);
+    private static GenericNodeConnector newRemoteConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        String[] connectorDetails = getConnectorDetails(connectorString);
+        if (connectorDetails[1].equals("Mina") && connectorDetails[2].equals("Node")) {
+            connector = newRemoteMinaNodeConnector(connectorString);
+        }
+        if (connectorDetails[1].equals("Mina") && connectorDetails[2].equals("Directory")) {
+            connector = newRemoteMinaDirectoryConnector(connectorString);
+        }
+        if (connectorDetails[1].equals("Mina") && connectorDetails[2].equals("Task")) {
+            connector = newRemoteMinaTaskConnector(connectorString);
+        }
 
-                Class clazz = Class.forName("org.drools.grid.distributed.DistributedRioNodeConnector");
-                Constructor constructor = clazz.getConstructor(String.class, SystemEventListener.class, ExecutionNodeService.class);
-                connector = (GenericNodeConnector) constructor.newInstance("node1", SystemEventListenerFactory.getSystemEventListener(),
-                                            execNode);
+        if (connectorDetails[1].equals("HornetQ") && connectorDetails[2].equals("Node")) {
+            connector = newRemoteHornetQNodeConnector(connectorString);
+        }
+        if (connectorDetails[1].equals("HornetQ") && connectorDetails[2].equals("Directory")) {
+            connector = newRemoteHornetQDirectoryConnector(connectorString);
+        }
+        if (connectorDetails[1].equals("HornetQ") && connectorDetails[2].equals("Task")) {
+            connector = newRemoteHornetQTaskConnector(connectorString);
+        }
 
-              
-            } catch (InstantiationException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalAccessException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalArgumentException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (InvocationTargetException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (NoSuchMethodException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (SecurityException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (ClassNotFoundException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            }
+        return connector;
+    }
 
-            return connector;
+    private static GenericNodeConnector newDistributedConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        String[] connectorDetails = getConnectorDetails(connectorString);
+        if (connectorDetails[1].equals("Rio") && connectorDetails[2].equals("Node")) {
+            connector = newDistributedRioNodeConnector(connectorString);
         }
+        if (connectorDetails[1].equals("Rio") && connectorDetails[2].equals("Directory")) {
+            connector = newDistributedRioDirectoryConnector(connectorString);
+        }
+        if (connectorDetails[1].equals("Rio") && connectorDetails[2].equals("Task")) {
+            throw new UnsupportedOperationException("Not Implemented yet, we are working on it!");
+        }
+        return connector;
+    }
 
 
-        if (connectorType.equals("Mina")) {
-            String connectorName = connectorDetails[1];
-            String connectorAddress = connectorDetails[2];
-            String connectorPort = connectorDetails[3];
 
-            GenericNodeConnector connector = null;
-            try {
-                Class clazz = Class.forName("org.drools.grid.remote.mina.RemoteMinaNodeConnector");
-                Constructor constructor = clazz.getConstructor(String.class, String.class, Integer.class, SystemEventListener.class);
-                connector = (GenericNodeConnector) constructor.newInstance(connectorName, connectorAddress,
-                        Integer.valueOf(connectorPort), SystemEventListenerFactory.getSystemEventListener());
+    private static GenericNodeConnector newRemoteMinaNodeConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        try {
 
-                //return new MinaRemoteNodeConnector(connectorName, connectorAddress,
-                //         Integer.valueOf(connectorPort), SystemEventListenerFactory.getSystemEventListener());
-            } catch (InstantiationException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalAccessException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalArgumentException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (InvocationTargetException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (NoSuchMethodException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (SecurityException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (ClassNotFoundException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            }
+            String[] connectorDetails = getConnectorDetails(connectorString);
+            Class clazz = Class.forName(REMOTE_MINA_NODE_CONNECTOR_CLASS);
+            Constructor constructor = clazz.getConstructor(String.class, String.class, Integer.class, SystemEventListener.class);
+            connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                    connectorDetails[3],
+                    Integer.valueOf(connectorDetails[4]),
+                    SystemEventListenerFactory.getSystemEventListener());
 
-            return connector;
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (NoSuchMethodException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (SecurityException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
         }
+        return connector;
+    }
 
+    private static GenericNodeConnector newRemoteMinaDirectoryConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        try {
 
+            String[] connectorDetails = getConnectorDetails(connectorString);
+            Class clazz = Class.forName(REMOTE_MINA_DIRECTORY_CONNECTOR_CLASS);
+            Constructor constructor = clazz.getConstructor(String.class, String.class, Integer.class, SystemEventListener.class);
+            connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                    connectorDetails[3],
+                    Integer.valueOf(connectorDetails[4]),
+                    SystemEventListenerFactory.getSystemEventListener());
 
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (NoSuchMethodException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (SecurityException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return connector;
+    }
 
-        if (connectorType.equals("Local")) {
-            GenericNodeConnector connector = null;
-            try {
-                Class clazz = Class.forName("org.drools.grid.local.LocalNodeConnector");
-                connector = (GenericNodeConnector) clazz.newInstance();
-            } catch (InstantiationException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalAccessException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalArgumentException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (SecurityException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (ClassNotFoundException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            }
+    private static GenericNodeConnector newRemoteMinaTaskConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        try {
 
-            return connector;
+            String[] connectorDetails = getConnectorDetails(connectorString);
+            Class clazz = Class.forName(REMOTE_MINA_TASK_CONNECTOR_CLASS);
+            Constructor constructor = clazz.getConstructor(String.class, String.class, Integer.class, SystemEventListener.class);
+            connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                    connectorDetails[3],
+                    Integer.valueOf(connectorDetails[4]),
+                    SystemEventListenerFactory.getSystemEventListener());
 
-            //return new LocalNodeConnector();
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (NoSuchMethodException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (SecurityException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
         }
+        return connector;
+    }
 
-        return null;
+    private static String[] getConnectorDetails(String connectorString) {
+        return connectorString.split(SEPARATOR);
     }
 
-    public static GenericNodeConnector newDirectoryConnector(String connectorString) {
-        String[] connectorDetails = connectorString.split(":");
-        String connectorType = connectorDetails[0];
+    private static GenericNodeConnector newRemoteHornetQNodeConnector(String connectorString) {
+        throw new UnsupportedOperationException("Not yet implemented");
+    }
 
+    private static GenericNodeConnector newRemoteHornetQDirectoryConnector(String connectorString) {
+        throw new UnsupportedOperationException("Not yet implemented");
+    }
 
+    private static GenericNodeConnector newRemoteHornetQTaskConnector(String connectorString) {
+        throw new UnsupportedOperationException("Not yet implemented");
+    }
 
-        if (connectorType.equals("Mina")) {
+    private static GenericNodeConnector newDistributedRioNodeConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        try {
 
-            String connectorName = connectorDetails[1];
-            String connectorAddress = connectorDetails[2];
-            String connectorPort = connectorDetails[3];
-            GenericNodeConnector connector = null;
-            try {
-                Class clazz = Class.forName("org.drools.grid.remote.directory.RemoteMinaDirectoryConnector");
-                Constructor constructor = clazz.getConstructor(String.class, String.class, Integer.class, SystemEventListener.class);
-                connector = (GenericNodeConnector) constructor.newInstance(connectorName, connectorAddress,
-                        Integer.valueOf(connectorPort), SystemEventListenerFactory.getSystemEventListener());
+            String[] connectorDetails = getConnectorDetails(connectorString);
+            Class clazz = Class.forName(DISTRIBUTED_RIO_NODE_CONNECTOR_CLASS);
+            if(!"".equals(connectorDetails[3])){
+                Constructor constructor = clazz.getConstructor(String.class, SystemEventListener.class, String.class);
+                connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                        SystemEventListenerFactory.getSystemEventListener(),
+                        connectorString);
+            }else{
+                 Constructor constructor = clazz.getConstructor(String.class, SystemEventListener.class);
+                connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                        SystemEventListenerFactory.getSystemEventListener());
 
-                //return new MinaRemoteNodeConnector(connectorName, connectorAddress,
-                //         Integer.valueOf(connectorPort), SystemEventListenerFactory.getSystemEventListener());
-            } catch (InstantiationException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalAccessException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalArgumentException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (InvocationTargetException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (NoSuchMethodException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (SecurityException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (ClassNotFoundException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
             }
 
-            return connector;
-        }
 
-        if (connectorType.equals("Local")) {
-            GenericNodeConnector connector = null;
-            try {
-                Class clazz = Class.forName("org.drools.grid.local.LocalDirectoryConnector");
-                Class clazzDirectoryNodeServiceImpl = Class.forName("org.drools.grid.local.DirectoryNodeLocalImpl");
-                Constructor constructor = clazz.getConstructor(DirectoryNodeService.class);
-                connector = (GenericNodeConnector) constructor.newInstance(
-                        (DirectoryNodeService) clazzDirectoryNodeServiceImpl.newInstance());
-
-            } catch (InstantiationException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalAccessException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (IllegalArgumentException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (InvocationTargetException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (NoSuchMethodException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (SecurityException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (ClassNotFoundException ex) {
-                Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
-            }
-
-            return connector;
-            
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (NoSuchMethodException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (SecurityException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
         }
-
-        return null;
+        return connector;
     }
 
-    public static GenericNodeConnector newTaskConnector(String connectorString) {
-        String[] connectorDetails = connectorString.split(":");
-        String connectorType = connectorDetails[0];
-        String connectorName = connectorDetails[1];
-        String connectorAddress = connectorDetails[2];
-        String connectorPort = connectorDetails[3];
+    private static GenericNodeConnector newDistributedRioDirectoryConnector(String connectorString) {
+        GenericNodeConnector connector = null;
+        try {
 
+            String[] connectorDetails = getConnectorDetails(connectorString);
+            Class clazz = Class.forName(DISTRIBUTED_RIO_DIRECTORY_CONNECTOR_CLASS);
+            if(!"".equals(connectorDetails[3])){
+                Constructor constructor = clazz.getConstructor(String.class, SystemEventListener.class, String.class);
+                connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                        SystemEventListenerFactory.getSystemEventListener(),
+                        connectorString);
+            }else{
+                 Constructor constructor = clazz.getConstructor(String.class, SystemEventListener.class);
+                connector = (GenericNodeConnector) constructor.newInstance(connectorString,
+                        SystemEventListenerFactory.getSystemEventListener());
 
+            }
 
 
-
-        return null;
+        } catch (InstantiationException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IllegalArgumentException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (InvocationTargetException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (NoSuchMethodException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (SecurityException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (ClassNotFoundException ex) {
+            Logger.getLogger(GenericConnectorFactory.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return connector;
     }
-
-
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -36,7 +36,6 @@
 import org.drools.grid.internal.commands.LookupCommand;
 import org.drools.grid.internal.commands.RegisterCommand;
 import org.drools.grid.GenericConnectorFactory;
-import org.drools.grid.NodeService.ServiceType;
 
 /**
  *
@@ -67,10 +66,11 @@
                 throw new IllegalArgumentException("Type is not supported for registration");
             }
             Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionGridClient) executor).getInstanceId(), type), null, null, null, null));
-            
+
             for (DirectoryNode directory : connection.getDirectoryNodes()) {
                 try {
                     try {
+
                         directory.get(DirectoryNodeService.class).register(identifier, currentConnector.getId());
                     } catch (RemoteException ex) {
                         Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
@@ -99,34 +99,28 @@
         try {
             String commandId = "client.lookup" + messageSession.getNextId();
             String kresultsId = "kresults_" + messageSession.getSessionId();
-            Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), 
+            Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(),
                     false, new KnowledgeContextResolveFromContextCommand(
-                            new LookupCommand(identifier, commandId), null, null, null, kresultsId));
-           
+                    new LookupCommand(identifier, commandId), null, null, null, kresultsId));
+
             //First I need to get the correct client ExecutionNodeService with the identifier
             //Look in all the DirectoryNodes
-            
+
             for (DirectoryNode directory : connection.getDirectoryNodes()) {
 
                 try {
-                    
-                    if(directory.get(DirectoryNodeService.class).getServiceType() == ServiceType.DISTRIBUTED){
-                        
-                        String connectorString = directory.get(DirectoryNodeService.class).lookupId(identifier);
-                        
-                        currentConnector = GenericConnectorFactory.newNodeConnector(connectorString);
-                       
-                        
 
-                    }else{
-                        String connectorString = directory.get(DirectoryNodeService.class).lookupId(identifier);
-                        
-                        currentConnector = GenericConnectorFactory.newNodeConnector(connectorString);
-                        currentConnector.connect();
+
+                    String connectorString = directory.get(DirectoryNodeService.class).lookupId(identifier);
+
+                    currentConnector = GenericConnectorFactory.newConnector(connectorString);
+
+                    currentConnector.connect();
+
+
+                    if (currentConnector != null) {
+                        break;
                     }
-                    if(currentConnector != null){
-                          break;
-                    }
                 } catch (RemoteException ex) {
                     Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
                 } catch (ConnectorException ex) {
@@ -160,21 +154,8 @@
         }
         return executor;
     }
-//    public Map<String, Map<String, String>> getDirectoryMap(){
-//        Map<String, Map<String, String>> directoryMap = new HashMap<String,Map<String, String>>();
-//        for (DirectoryNodeService directory : gridClient.getDirectories()) {
-//            try {
-//                directoryMap.put(directory.getId(), directory.getDirectoryMap());
-//            } catch (RemoteException ex) {
-//                Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
-//            }
-//
-//
-//        }
-//        return directoryMap;
-//
-//    }
 
+
     public Map<String, String> getDirectoryMap() {
         throw new UnsupportedOperationException("Not supported yet.");
     }

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DistributedRioNodeConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DistributedRioNodeConnector.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DistributedRioNodeConnector.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,120 +0,0 @@
-package org.drools.grid.distributed;
-
-import java.net.SocketAddress;
-import java.rmi.RemoteException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.drools.SystemEventListener;
-import org.drools.grid.ConnectorException;
-import org.drools.grid.ConnectorType;
-import org.drools.grid.GenericConnection;
-import org.drools.grid.NodeConnectionType;
-import org.drools.grid.internal.Message;
-import org.drools.grid.internal.MessageResponseHandler;
-import org.drools.grid.ExecutionNodeService;
-import org.drools.grid.GenericNodeConnector;
-import org.drools.grid.GridConnection;
-
-public class DistributedRioNodeConnector
-        implements GenericNodeConnector {
-
-    protected final String name;
-    protected AtomicInteger counter;
-    protected ExecutionNodeService executionNodeService;
-    protected SocketAddress address;
-    protected SystemEventListener eventListener;
-    protected GenericConnection connection;
-
-    public DistributedRioNodeConnector(String name,
-            SystemEventListener eventListener) {
-        if (name == null) {
-            throw new IllegalArgumentException("Name can not be null");
-        }
-        this.name = name;
-        this.counter = new AtomicInteger();
-        this.eventListener = eventListener;
-        this.connection = new GridConnection();
-        
-    }
-
-    public DistributedRioNodeConnector(String name,
-            SystemEventListener eventListener,
-            ExecutionNodeService executionNodeService) {
-        if (name == null) {
-            throw new IllegalArgumentException("Name can not be null");
-        }
-        this.name = name;
-        this.counter = new AtomicInteger();
-        this.eventListener = eventListener;
-        this.executionNodeService = executionNodeService;
-        this.connection = new GridConnection();
-
-    }
-
-    
-    public Message write(Message msg) throws ConnectorException, RemoteException {
-        if (executionNodeService != null) {
-
-
-            Message returnMessage = this.executionNodeService.write(msg);
-            return returnMessage;
-
-
-        }
-        throw new IllegalStateException("executionNode should not be null");
-    }
-
-    public void write(Message msg,
-            MessageResponseHandler responseHandler) {
-        throw new UnsupportedOperationException();
-    }
-
-    public String getId() throws ConnectorException, RemoteException {
-
-        return executionNodeService.getId();
-
-
-    }
-
-    public void setExecutionNodeService(ExecutionNodeService executionNode) {
-        this.executionNodeService = executionNode;
-
-
-    }
-
-    public ExecutionNodeService getExecutionNodeService() {
-        return executionNodeService;
-    }
-
-    
-
-    public void connect() throws ConnectorException {
-        //do nothing, here we use auto discover
-    }
-
-    public void disconnect() throws ConnectorException {
-        //I don't need to be disconected
-    }
-
-    public GenericConnection getConnection() {
-        return this.connection;
-    }
-
-    public NodeConnectionType getNodeConnectionType() throws ConnectorException {
-        return new DistributedConnectionNode();
-    }
-
-    public ConnectorType getConnectorType() {
-        return ConnectorType.DISTRIBUTED;
-    }
-
-    public int getSessionId() {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    public AtomicInteger getCounter() {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseProviderGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseProviderGridClient.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseProviderGridClient.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,7 +1,6 @@
 package org.drools.grid.distributed;
 
 
-import org.drools.grid.ExecutionNodeService;
 import java.util.Properties;
 import java.util.UUID;
 
@@ -9,7 +8,6 @@
 import org.drools.KnowledgeBaseConfiguration;
 import org.drools.KnowledgeBaseFactory;
 import org.drools.KnowledgeBaseFactoryService;
-import org.drools.SystemEventListenerFactory;
 
 import org.drools.command.FinishedCommand;
 import org.drools.command.NewKnowledgeBaseCommand;
@@ -35,8 +33,9 @@
         
         this.connection = connection;
         this.messageSession = new MessageSession();
-        this.connector = new DistributedRioNodeConnector("client 1", SystemEventListenerFactory.getSystemEventListener(), 
-                                            ((DistributedRioNodeConnector)connector).getExecutionNodeService());
+        //this.connector = new DistributedRioNodeConnector("client 1", SystemEventListenerFactory.getSystemEventListener(),
+        //                                    ((DistributedRioNodeConnector)connector).getExecutionNodeService());
+        this.connector = connector;
 
     }
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBuilderProviderGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBuilderProviderGridClient.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBuilderProviderGridClient.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -6,12 +6,10 @@
 
 import com.sun.tools.xjc.Options;
 import org.drools.builder.JaxbConfiguration;
-import org.drools.grid.ExecutionNodeService;
 import java.util.Properties;
 import java.util.UUID;
 
 import org.drools.KnowledgeBase;
-import org.drools.SystemEventListenerFactory;
 import org.drools.builder.DecisionTableConfiguration;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderConfiguration;
@@ -30,14 +28,15 @@
     KnowledgeBuilderFactoryService {
     
     private MessageSession messageSession;
-    private GenericNodeConnector client;
+    private GenericNodeConnector connector;
 
 
 
     public KnowledgeBuilderProviderGridClient(GenericNodeConnector connector, GenericConnection connection) {
             this.messageSession = new MessageSession();
-            client = new DistributedRioNodeConnector("client 1", SystemEventListenerFactory.getSystemEventListener(),
-                                                    ((DistributedRioNodeConnector)connector).getExecutionNodeService());
+            //client = new DistributedRioNodeConnector("client 1", SystemEventListenerFactory.getSystemEventListener(),
+              //                                      ((DistributedRioNodeConnector)connector).getExecutionNodeService());
+            this.connector = connector;
         
     }
 
@@ -57,7 +56,7 @@
                                                            new NewKnowledgeBuilderCommand( null ) ) );
 
         try {
-            Object object = client.write( msg ).getPayload();
+            Object object = connector.write( msg ).getPayload();
 
             if ( !(object instanceof FinishedCommand) ) {
                 throw new RuntimeException( "Response was not correctly ended" );
@@ -69,7 +68,7 @@
         }
 
         return new KnowledgeBuilderGridClient( localId,
-                                                 client, messageSession );
+                                                 connector, messageSession );
     }
 
     public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -8,6 +8,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.UUID;
 import org.drools.KnowledgeBase;
 import org.drools.command.KnowledgeContextResolveFromContextCommand;
 import org.drools.command.runtime.GetKnowledgeBaseCommand;
@@ -31,7 +32,7 @@
 
     public DirectoryNodeServiceImpl() {
         executionNodes = new ArrayList<ExecutionNodeService>();
-        this.id = "Distributed:Directory";
+        this.id = "Distributed:Rio:Directory"+UUID.randomUUID().toString();
     }
 
     @Override
@@ -65,7 +66,7 @@
             }
         }
         
-        return GenericConnectorFactory.newNodeConnector(nodeService.getId());
+        return GenericConnectorFactory.newConnector(nodeService.getId());
     }
 
     public void setExecutionNodes(Iterable<ExecutionNodeService> executionNodes) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedRioDirectoryConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedRioDirectoryConnector.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedRioDirectoryConnector.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,9 +1,12 @@
 package org.drools.distributed.directory.impl;
 
+import java.io.IOException;
 import java.net.SocketAddress;
 import java.rmi.RemoteException;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.drools.KnowledgeBase;
 
 import org.drools.SystemEventListener;
@@ -16,6 +19,7 @@
 import org.drools.grid.internal.MessageResponseHandler;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.GridConnection;
+import org.drools.grid.distributed.util.RioResourceLocator;
 
 public class DistributedRioDirectoryConnector
         implements GenericNodeConnector, DirectoryNodeService {
@@ -26,6 +30,8 @@
     protected SocketAddress address;
     protected SystemEventListener eventListener;
     protected GenericConnection connection;
+    private String directoryNodeServiceId;
+
     public DistributedRioDirectoryConnector(String name,
             SystemEventListener eventListener) {
         if (name == null) {
@@ -48,10 +54,23 @@
         this.counter = new AtomicInteger();
         this.eventListener = eventListener;
         this.directoryNodeService = directoryNode;
-        this.connection = new GridConnection(); 
+        this.connection = new GridConnection();
 
     }
 
+    public DistributedRioDirectoryConnector(String name,
+            SystemEventListener eventListener, String directoryNodeServiceId) {
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
+        }
+        this.name = name;
+        this.counter = new AtomicInteger();
+        this.eventListener = eventListener;
+        this.directoryNodeServiceId = directoryNodeServiceId;
+        this.connection = new GridConnection();
+
+    }
+
     @Override
     public Message write(Message msg) throws ConnectorException, RemoteException {
 //        if (directoryNodeService != null) {
@@ -90,10 +109,24 @@
         return directoryNodeService;
     }
 
-    
-
     public void connect() throws ConnectorException {
-        //do nothing, here we use auto discover
+        if(this.directoryNodeService == null && !"".equals(this.directoryNodeServiceId)){
+            try {
+                this.directoryNodeService = RioResourceLocator.locateDirectoryNodeById(this.directoryNodeServiceId);
+            } catch (IOException ex) {
+                Logger.getLogger(DistributedRioDirectoryConnector.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (InterruptedException ex) {
+                Logger.getLogger(DistributedRioDirectoryConnector.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }else{
+            try {
+                this.directoryNodeService = RioResourceLocator.locateDirectoryNodes().get(0);
+            } catch (IOException ex) {
+                Logger.getLogger(DistributedRioDirectoryConnector.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (InterruptedException ex) {
+                Logger.getLogger(DistributedRioDirectoryConnector.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }
     }
 
     public void disconnect() throws ConnectorException {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -18,12 +18,15 @@
 package org.drools.grid.distributed.util;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import net.jini.core.lookup.ServiceItem;
 import net.jini.core.lookup.ServiceTemplate;
 import net.jini.discovery.LookupDiscoveryManager;
 import net.jini.lease.LeaseRenewalManager;
 import net.jini.lookup.ServiceDiscoveryManager;
+import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.ExecutionNodeService;
 
 /**
@@ -31,7 +34,7 @@
  * @author salaboy
  */
 public class RioResourceLocator {
-    public static ExecutionNodeService locateResource(String id) throws IOException, InterruptedException{
+    public static ExecutionNodeService locateExecutionNodeById(String id) throws IOException, InterruptedException{
         IDEntry[] ids = new IDEntry[]{new IDEntry(id)};
         Class[] classes = new Class[]{ExecutionNodeService.class};
         ServiceTemplate tmpl = new ServiceTemplate(null, classes, ids);
@@ -42,10 +45,84 @@
         ServiceDiscoveryManager sdm =
                 new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
         /* Wait no more then 10 seconds to discover the service */
-        ServiceItem item = sdm.lookup(tmpl, null, 10000);
-
+        ServiceItem item = sdm.lookup(tmpl, null, 30000);
+        if(item == null){
+            throw new IllegalStateException("No Execution Node Found");
+        }
         ExecutionNodeService executionNode = (ExecutionNodeService) item.service;
         
         return executionNode;
     }
+    
+    public static DirectoryNodeService locateDirectoryNodeById(String id) throws IOException, InterruptedException{
+        IDEntry[] ids = new IDEntry[]{new IDEntry(id)};
+        Class[] classes = new Class[]{DirectoryNodeService.class};
+        ServiceTemplate tmpl = new ServiceTemplate(null, classes, ids);
+        LookupDiscoveryManager ldm =
+                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
+                null,
+                null);
+        ServiceDiscoveryManager sdm =
+                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
+        /* Wait no more then 10 seconds to discover the service */
+        ServiceItem item = sdm.lookup(tmpl, null, 30000);
+        if(item == null){
+            throw new IllegalStateException("No Directory Node Found");
+        }
+        DirectoryNodeService directoryNode = (DirectoryNodeService) item.service;
+        
+        return directoryNode;
+    }
+
+
+
+    public static List<ExecutionNodeService> locateExecutionNodes() throws IOException, InterruptedException{
+        List<ExecutionNodeService> executionNodes = new ArrayList<ExecutionNodeService>();
+        Class[] classes = new Class[]{ExecutionNodeService.class};
+        ServiceTemplate tmpl = new ServiceTemplate(null, classes, null);
+        LookupDiscoveryManager ldm =
+                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
+                null,
+                null);
+        System.out.println("Discovering ExecutionNodeService  services ...");
+        ServiceDiscoveryManager sdm =
+                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
+        /* Wait no more then 10 seconds to discover the service */
+        ServiceItem[] items = sdm.lookup(tmpl, 1,100, null, 30000);
+        
+
+        for (int i = 0; i < items.length; i++) {
+            if (items[i].service instanceof ExecutionNodeService) {
+                executionNodes.add((ExecutionNodeService) items[i].service);
+            }
+        }
+        return executionNodes;
+
+    }
+
+    public static List<DirectoryNodeService> locateDirectoryNodes() throws IOException, InterruptedException{
+        List<DirectoryNodeService> directoryNodes = new ArrayList<DirectoryNodeService>();
+        Class[] classes = new Class[]{DirectoryNodeService.class};
+        ServiceTemplate tmpl = new ServiceTemplate(null, classes, null);
+        LookupDiscoveryManager ldm =
+                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
+                null,
+                null);
+        System.out.println("Discovering DirectoryNodeService services ...");
+        ServiceDiscoveryManager sdm =
+                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
+        /* Wait no more then 10 seconds to discover the service */
+        ServiceItem[] items = sdm.lookup(tmpl, 1,100, null, 30000);
+       
+
+        for (int i = 0; i < items.length; i++) {
+
+            if (items[i].service instanceof DirectoryNodeService) {
+                directoryNodes.add((DirectoryNodeService) items[i].service);
+            }
+        }
+        return directoryNodes;
+
+    }
+
 }

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,55 +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.distributed.directory;
-
-
-import java.rmi.RemoteException;
-import junit.framework.Assert;
-import org.drools.grid.ConnectorException;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.ExecutionNode;
-import org.drools.grid.GridConnection;
-import org.junit.Test;
-/**
- *
- * @author salaboy
- */
-
-public abstract class ExecutionNodeBaseTest {
-
-    protected DirectoryNodeService directory;
-    protected ExecutionNode node;
-    protected GridConnection connection = new GridConnection();
-    public ExecutionNodeBaseTest() {
-        
-    }
-
-
-    @Test
-    public void directoryTest() throws ConnectorException, RemoteException{
-        directory.register("blah","blash");
-
-        Assert.assertEquals("blash", directory.lookupId("blah"));
-
-        
-    }
-
-   
-
-
-}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,70 +0,0 @@
-package org.drools.distributed.directory;
-
-import org.drools.grid.ConnectorException;
-import org.drools.grid.AcceptorService;
-import junit.framework.Assert;
-import net.jini.core.lookup.ServiceItem;
-import org.drools.SystemEventListenerFactory;
-import org.drools.distributed.directory.impl.DistributedRioDirectoryConnector;
-
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.ExecutionNodeService;
-import org.drools.grid.distributed.DistributedRioNodeConnector;
-import org.junit.After;
-
-
-
-
-import org.junit.Before;
-import org.junit.runner.RunWith;
-import org.rioproject.test.RioTestRunner;
-import org.rioproject.test.SetTestManager;
-import org.rioproject.test.TestManager;
-
- at RunWith(RioTestRunner.class)
-public class ITGridExecutionTest extends ExecutionNodeBaseTest {
-
-    AcceptorService server;
-    @SetTestManager
-    static TestManager testManager;
-
-    @Before
-    public void setUp() throws Exception {
-        
-        Assert.assertNotNull(testManager);
-
-//
-        DirectoryNodeService directoryService = (DirectoryNodeService) testManager.waitForService(DirectoryNodeService.class);
-        Assert.assertNotNull(directoryService);
-
-
-        connection.addDirectoryNode(new DistributedRioDirectoryConnector("directory1",
-                                SystemEventListenerFactory.getSystemEventListener(), 
-                                directoryService));
-
-        ExecutionNodeService executionNode = (ExecutionNodeService) testManager.waitForService(ExecutionNodeService.class);
-        ServiceItem[] nodeServiceItems = testManager.getServiceItems(ExecutionNodeService.class);
-        System.out.println("ExecutionNodes Items =" + nodeServiceItems.length);
-
-        for (int i = 0; i < nodeServiceItems.length; i++) {
-            if (nodeServiceItems[i].service instanceof ExecutionNodeService) {
-                connection.addExecutionNode(new DistributedRioNodeConnector("node"+i, 
-                            SystemEventListenerFactory.getSystemEventListener(),
-                            (ExecutionNodeService) nodeServiceItems[i].service));
-            }
-        }
-
-        //Get an execution node using the default/round robin strategy
-        node = connection.getExecutionNode();
-        System.out.println("ExecutionNode = "+ node);
-
-        directory = connection.getDirectoryNode().get(DirectoryNodeService.class);
-        System.out.println("Directory Node = "+directory);
-
-
-    }
-    @After
-    public void tearDown() throws ConnectorException  {
-        connection.dispose();
-    }
-}

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DistributedRioNodeConnector.java (from rev 34544, labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DistributedRioNodeConnector.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DistributedRioNodeConnector.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DistributedRioNodeConnector.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -0,0 +1,162 @@
+package org.drools.grid.distributed.impl;
+
+import java.io.IOException;
+import java.net.SocketAddress;
+import java.rmi.RemoteException;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.drools.SystemEventListener;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.ConnectorType;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.NodeConnectionType;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.ExecutionNodeService;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.GridConnection;
+import org.drools.grid.distributed.DistributedConnectionNode;
+import org.drools.grid.distributed.util.RioResourceLocator;
+
+public class DistributedRioNodeConnector
+        implements GenericNodeConnector {
+
+    protected final String name;
+    protected AtomicInteger counter;
+    protected ExecutionNodeService executionNodeService;
+    protected SocketAddress address;
+    protected SystemEventListener eventListener;
+    protected GenericConnection connection;
+    protected String executionNodeId;
+
+     public DistributedRioNodeConnector(String name,
+            SystemEventListener eventListener) {
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
+        }
+        this.name = name;
+        this.counter = new AtomicInteger();
+        this.eventListener = eventListener;
+        this.connection = new GridConnection();
+
+    }
+
+
+
+    public DistributedRioNodeConnector(String name,
+            SystemEventListener eventListener,
+            ExecutionNodeService executionNodeService) {
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
+        }
+        this.name = name;
+        this.counter = new AtomicInteger();
+        this.eventListener = eventListener;
+        this.executionNodeService = executionNodeService;
+        this.connection = new GridConnection();
+
+    }
+
+    public DistributedRioNodeConnector(String name,
+            SystemEventListener eventListener,
+            String executionNodeId) {
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
+        }
+        this.name = name;
+        this.counter = new AtomicInteger();
+        this.eventListener = eventListener;
+        this.connection = new GridConnection();
+        this.executionNodeId = executionNodeId;
+
+    }
+
+    
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        if (executionNodeService != null) {
+
+
+            Message returnMessage = this.executionNodeService.write(msg);
+            return returnMessage;
+
+
+        }
+        throw new IllegalStateException("executionNode should not be null");
+    }
+
+    public void write(Message msg,
+            MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getId() throws ConnectorException, RemoteException {
+
+        return executionNodeService.getId();
+
+
+    }
+
+    public void setExecutionNodeService(ExecutionNodeService executionNode) {
+        this.executionNodeService = executionNode;
+
+
+    }
+
+    public ExecutionNodeService getExecutionNodeService() {
+        return executionNodeService;
+    }
+
+    
+
+    public void connect() throws ConnectorException {
+        if(this.executionNodeService != null){
+            return;
+        }
+        if( !this.executionNodeId.equals("")){
+            try {
+                this.executionNodeService = RioResourceLocator.locateExecutionNodeById(this.executionNodeId);
+            } catch (IOException ex) {
+                Logger.getLogger(DistributedRioNodeConnector.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (InterruptedException ex) {
+                Logger.getLogger(DistributedRioNodeConnector.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }else{
+            try {
+                this.executionNodeService = RioResourceLocator.locateExecutionNodes().get(0);
+            } catch (IOException ex) {
+                Logger.getLogger(DistributedRioNodeConnector.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (InterruptedException ex) {
+                Logger.getLogger(DistributedRioNodeConnector.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }
+
+    }
+
+    public void disconnect() throws ConnectorException {
+        //I don't need to be disconected
+    }
+
+    public GenericConnection getConnection() {
+        return this.connection;
+    }
+
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException {
+        return new DistributedConnectionNode();
+    }
+
+    public ConnectorType getConnectorType() {
+        return ConnectorType.DISTRIBUTED;
+    }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -48,7 +48,7 @@
     private Long instanceID;
 
     public ExecutionNodeServiceImpl() {
-        this.id = "Distributed:Node:" + UUID.randomUUID().toString();
+        this.id = "Distributed:Rio:Node:" + UUID.randomUUID().toString();
         handler = new GenericMessageGridHandlerImpl(new NodeData(), SystemEventListenerFactory.getSystemEventListener());
     }
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/util/RioResourceLocator.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -18,12 +18,16 @@
 package org.drools.grid.distributed.util;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import net.jini.core.lookup.ServiceItem;
 import net.jini.core.lookup.ServiceTemplate;
 import net.jini.discovery.LookupDiscoveryManager;
 import net.jini.lease.LeaseRenewalManager;
 import net.jini.lookup.ServiceDiscoveryManager;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.ExecutionNodeService;
 
 /**
@@ -31,7 +35,7 @@
  * @author salaboy
  */
 public class RioResourceLocator {
-    public static ExecutionNodeService locateResource(String id) throws IOException, InterruptedException{
+    public static ExecutionNodeService locateExecutionNodeById(String id) throws IOException, InterruptedException{
         IDEntry[] ids = new IDEntry[]{new IDEntry(id)};
         Class[] classes = new Class[]{ExecutionNodeService.class};
         ServiceTemplate tmpl = new ServiceTemplate(null, classes, ids);
@@ -42,10 +46,85 @@
         ServiceDiscoveryManager sdm =
                 new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
         /* Wait no more then 10 seconds to discover the service */
-        ServiceItem item = sdm.lookup(tmpl, null, 10000);
-
+        ServiceItem item = sdm.lookup(tmpl, null, 30000);
+        if(item == null){
+            throw new IllegalStateException("No Execution Node Found");
+        }
         ExecutionNodeService executionNode = (ExecutionNodeService) item.service;
         
         return executionNode;
     }
+    
+    public static DirectoryNodeService locateDirectoryNodeById(String id) throws IOException, InterruptedException{
+        IDEntry[] ids = new IDEntry[]{new IDEntry(id)};
+        Class[] classes = new Class[]{DirectoryNodeService.class};
+        ServiceTemplate tmpl = new ServiceTemplate(null, classes, ids);
+        LookupDiscoveryManager ldm =
+                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
+                null,
+                null);
+        ServiceDiscoveryManager sdm =
+                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
+        /* Wait no more then 10 seconds to discover the service */
+        ServiceItem item = sdm.lookup(tmpl, null, 30000);
+        if(item == null){
+            throw new IllegalStateException("No Execution Node Found");
+        }
+        DirectoryNodeService directoryNode = (DirectoryNodeService) item.service;
+        
+        return directoryNode;
+    }
+
+
+
+    public static List<ExecutionNodeService> locateExecutionNodes() throws IOException, InterruptedException, ConnectorException{
+        List<ExecutionNodeService> executionNodes = new ArrayList<ExecutionNodeService>();
+        Class[] classes = new Class[]{ExecutionNodeService.class};
+        ServiceTemplate tmpl = new ServiceTemplate(null, classes, null);
+        LookupDiscoveryManager ldm =
+                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
+                null,
+                null);
+        System.out.println("Discovering ExecutionNodeService  services ...");
+        ServiceDiscoveryManager sdm =
+                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
+        /* Wait no more then 10 seconds to discover the service */
+        ServiceItem[] items = sdm.lookup(tmpl, 1,100, null, 30000);
+        System.out.println("Service  items.lenght"+items.length);
+
+        for (int i = 0; i < items.length; i++) {
+            if (items[i].service instanceof ExecutionNodeService) {
+                System.out.println("(ExecutionNodeService) items[i].service ->"+((ExecutionNodeService) items[i].service).getId());
+                executionNodes.add((ExecutionNodeService) items[i].service);
+            }
+        }
+        return executionNodes;
+
+    }
+
+    public static List<DirectoryNodeService> locateDirectoryNodes() throws IOException, InterruptedException{
+        List<DirectoryNodeService> directoryNodes = new ArrayList<DirectoryNodeService>();
+        Class[] classes = new Class[]{DirectoryNodeService.class};
+        ServiceTemplate tmpl = new ServiceTemplate(null, classes, null);
+        LookupDiscoveryManager ldm =
+                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
+                null,
+                null);
+        System.out.println("Discovering DirectoryNodeService services ...");
+        ServiceDiscoveryManager sdm =
+                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
+        /* Wait no more then 10 seconds to discover the service */
+        ServiceItem[] items = sdm.lookup(tmpl, 1,100, null, 30000);
+        System.out.println("Service  items.lenght"+items.length);
+
+        for (int i = 0; i < items.length; i++) {
+
+            if (items[i].service instanceof DirectoryNodeService) {
+                directoryNodes.add((DirectoryNodeService) items[i].service);
+            }
+        }
+        return directoryNodes;
+
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -11,6 +11,7 @@
 import org.drools.SystemEventListenerFactory;
 import org.drools.distributed.directory.impl.DistributedRioDirectoryConnector;
 import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.distributed.impl.DistributedRioNodeConnector;
 import org.junit.After;
 
 
@@ -55,7 +56,7 @@
             if (nodeServiceItems[i].service instanceof ExecutionNodeService) {
                 connection.addExecutionNode(new DistributedRioNodeConnector("node"+i,
                                 SystemEventListenerFactory.getSystemEventListener(),
-                                (ExecutionNodeService) nodeServiceItems[i].service));
+                                ((ExecutionNodeService) nodeServiceItems[i].service).getId()));
             }
         }
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -49,7 +49,7 @@
     }
 
     public String getId() throws ConnectorException {
-        return "Local:Directory";
+        return "Local:Local:Directory";
     }
 
 //    public DirectoryNodeService getDirectoryNodeService(){

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -53,7 +53,7 @@
     }
 
     public String getId() throws ConnectorException {
-        return "Local:";
+        return "Local:Local:Node";
     }
 
     public void write(Message msg, MessageResponseHandler responseHandler) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -118,7 +118,7 @@
                 Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
             }
 
-            client = GenericConnectorFactory.newNodeConnector(connectorString);
+            client = GenericConnectorFactory.newConnector(connectorString);
             try {
                 client.connect();
             } catch (RemoteException ex) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -77,7 +77,7 @@
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
         SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
-        return GenericConnectorFactory.newNodeConnector((String)resultcmd.getArguments().get(0));
+        return GenericConnectorFactory.newConnector((String)resultcmd.getArguments().get(0));
     }
 
     public void registerKBase(String kbaseId, String resourceId) throws ConnectorException {
@@ -99,14 +99,14 @@
         write(msg, handler);
         SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
         String connectorString = (String)resultcmd.getArguments().get(0);
-        GenericNodeConnector connector = GenericConnectorFactory.newNodeConnector(connectorString);
+        GenericNodeConnector currentConnector = GenericConnectorFactory.newConnector(connectorString);
         try {
-            connector.connect();
+            currentConnector.connect();
         } catch (RemoteException ex) {
             Logger.getLogger(DirectoryNodeRemoteClient.class.getName()).log(Level.SEVERE, null, ex);
         }
         
-        return new KnowledgeBaseRemoteClient(kbaseId, connector, new MessageSession() );
+        return new KnowledgeBaseRemoteClient(kbaseId, currentConnector, new MessageSession() );
     }
 
    

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,7 +1,6 @@
 package org.drools.grid.remote.directory;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -109,7 +109,7 @@
     public String getId() {
         String hostName = ((InetSocketAddress)this.address).getHostName();
         int hostPort = ((InetSocketAddress)this.address).getPort();
-        return "Mina:"+this.providerName+":"+hostName+":"+hostPort;
+        return "Remote:Mina:Directory:"+hostName+":"+hostPort;
     }
 
     public int getSessionId() {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/pom.xml	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/pom.xml	2010-08-06 03:12:52 UTC (rev 34563)
@@ -22,35 +22,25 @@
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-api</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-local</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-remote-api</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
+       
         <dependency>
             <groupId>org.drools</groupId>
-            <artifactId>drools-grid-remote-dir-mina</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
-            <type>jar</type>
-        </dependency>
-
-        <dependency>
-            <groupId>org.drools</groupId>
             <artifactId>drools-grid-task</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
@@ -58,22 +48,8 @@
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-distributed-api</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
-        <!-- Rio Dependencies -->
-        <!--dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-grid-distributed-rio</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-grid-distributed-dir-rio</artifactId>
-            <version>5.2.0.SNAPSHOT</version>
-            <type>jar</type>
-        </dependency-->
         
         <!-- Test deps -->
          <!-- HSQLDB -->
@@ -86,9 +62,15 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.6</version>
             <scope>test</scope>
         </dependency>
+
+         <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-remote-dir-mina</artifactId>
+            <type>jar</type>
+            <scope>test</scope>
+        </dependency>
          <!-- RIO Test framework -->
         <!--dependency>
             <groupId>org.rioproject</groupId>

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceConfiguration.java (from rev 34502, labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceView.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceConfiguration.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -0,0 +1,14 @@
+package org.drools.grid.services.configuration;
+
+
+public class DirectoryInstanceConfiguration extends GridResourceConfiguration {
+
+	public DirectoryInstanceConfiguration() {
+		super();
+	}
+	
+	public DirectoryInstanceConfiguration(String name, GenericProvider provider) {
+		super(name, provider);
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceView.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceView.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/DirectoryInstanceView.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,14 +0,0 @@
-package org.drools.grid.services.configuration;
-
-
-public class DirectoryInstanceView extends GridResourceView {
-
-	public DirectoryInstanceView() {
-		super();
-	}
-	
-	public DirectoryInstanceView(String name, GenericProvider provider) {
-		super(name, provider);
-	}
-
-}

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentConfiguration.java (from rev 34502, labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentView.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentConfiguration.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -0,0 +1,15 @@
+package org.drools.grid.services.configuration;
+
+
+
+public class ExecutionEnvironmentConfiguration extends GridResourceConfiguration {
+
+	public ExecutionEnvironmentConfiguration() {
+		super();
+	}
+	
+	public ExecutionEnvironmentConfiguration(String name, GenericProvider provider) {
+		super(name, provider);
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentView.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentView.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/ExecutionEnvironmentView.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,15 +0,0 @@
-package org.drools.grid.services.configuration;
-
-
-
-public class ExecutionEnvironmentView extends GridResourceView {
-
-	public ExecutionEnvironmentView() {
-		super();
-	}
-	
-	public ExecutionEnvironmentView(String name, GenericProvider provider) {
-		super(name, provider);
-	}
-
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GenericProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GenericProvider.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GenericProvider.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,15 +1,20 @@
 package org.drools.grid.services.configuration;
 
 import java.io.Serializable;
+import org.drools.grid.GenericNodeConnector;
 
 
 
 /**
  * @author salaboy
  */
-public abstract class GenericProvider implements Serializable{
 
-	public abstract ProviderType getProviderType();
+public interface GenericProvider<T> extends Serializable{
 
-	public abstract String getId();
+	 ProviderType getProviderType();
+
+         GenericNodeConnector getConnector(String connectorString);
+
+	 String getId();
+
 }

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceConfiguration.java (from rev 34502, labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceView.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceConfiguration.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -0,0 +1,33 @@
+package org.drools.grid.services.configuration;
+
+import java.io.Serializable;
+
+
+public abstract class GridResourceConfiguration implements Serializable{
+
+	private String name;
+	private GenericProvider provider;
+	
+	public GridResourceConfiguration() {	}
+	
+	public GridResourceConfiguration(String name, GenericProvider provider) {
+		this.name = name;
+		this.provider = provider;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public void setProvider(GenericProvider provider) {
+		this.provider = provider;
+	}
+
+	public GenericProvider getProvider() {
+		return provider;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceView.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceView.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridResourceView.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,33 +0,0 @@
-package org.drools.grid.services.configuration;
-
-import java.io.Serializable;
-
-
-public abstract class GridResourceView implements Serializable{
-
-	private String name;
-	private GenericProvider provider;
-	
-	public GridResourceView() {	}
-	
-	public GridResourceView(String name, GenericProvider provider) {
-		this.name = name;
-		this.provider = provider;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-	
-	public void setProvider(GenericProvider provider) {
-		this.provider = provider;
-	}
-
-	public GenericProvider getProvider() {
-		return provider;
-	}
-}

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyConfiguration.java (from rev 34502, labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyView.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyConfiguration.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -0,0 +1,84 @@
+package org.drools.grid.services.configuration;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public class GridTopologyConfiguration implements Serializable{
+	
+	private String name;
+	private Map<String, ExecutionEnvironmentConfiguration> executionEnvironments = new HashMap<String, ExecutionEnvironmentConfiguration>();
+	private Map<String, DirectoryInstanceConfiguration> directoryInstances = new HashMap<String, DirectoryInstanceConfiguration>();
+	private Map<String, TaskServerInstanceConfiguration> taskServerInstances = new HashMap<String, TaskServerInstanceConfiguration>();
+
+	public GridTopologyConfiguration() { }
+	
+	public GridTopologyConfiguration(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Collection<ExecutionEnvironmentConfiguration> getExecutionEnvironments() {
+		return Collections.unmodifiableCollection(executionEnvironments.values());
+	}
+	
+	public Collection<DirectoryInstanceConfiguration> getDirectoryInstances() {
+		return Collections.unmodifiableCollection(directoryInstances.values());
+	}
+	
+	public Collection<TaskServerInstanceConfiguration> getTaskServers(){
+		return Collections.unmodifiableCollection(taskServerInstances.values());
+	}
+
+	public void addExecutionEnvironment(ExecutionEnvironmentConfiguration newExecutionEnvironment) {
+		String newGridResourceName = newExecutionEnvironment.getName();
+		checkUniqueName(newGridResourceName, directoryInstances, taskServerInstances);
+		executionEnvironments.put(newGridResourceName, newExecutionEnvironment);
+	}
+	
+	public void addDirectoryInstance(DirectoryInstanceConfiguration newDirectoryInstance){
+		String newGridResourceName = newDirectoryInstance.getName();
+		checkUniqueName(newGridResourceName, executionEnvironments, taskServerInstances);
+		directoryInstances.put(newGridResourceName, newDirectoryInstance);
+	}
+	
+	public void addTaskServerInstance(TaskServerInstanceConfiguration newTaskServerInstance){
+		String newGridResourceName = newTaskServerInstance.getName();
+		checkUniqueName(newGridResourceName, executionEnvironments, directoryInstances);
+		taskServerInstances.put(newGridResourceName, newTaskServerInstance);
+	}
+	
+	public ExecutionEnvironmentConfiguration getExecutionEnvironment(String name){
+		return executionEnvironments.get(name);
+	}
+	
+	public DirectoryInstanceConfiguration getDirectoryInstance(String name){
+		return directoryInstances.get(name);
+	}
+
+	public TaskServerInstanceConfiguration getTaskServerInstance(String name) {
+		return taskServerInstances.get(name);
+	}
+	
+	public void removeResource(String name){
+		boolean removed = executionEnvironments.remove(name) != null;
+		removed |=  directoryInstances.remove(name) != null;
+		removed |= taskServerInstances.remove(name) != null;
+	}
+
+	private void checkUniqueName(String newGridResourceName, 
+			Map<String, ? extends GridResourceConfiguration> firstResources,
+			Map<String, ? extends GridResourceConfiguration> secondResources) {
+		if(null != firstResources.get(newGridResourceName) || null != secondResources.get(newGridResourceName))
+			throw new IllegalArgumentException("Existing resource with name: " + newGridResourceName);
+	}
+}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyView.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyView.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/GridTopologyView.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,84 +0,0 @@
-package org.drools.grid.services.configuration;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-public class GridTopologyView implements Serializable{
-	
-	private String name;
-	private Map<String, ExecutionEnvironmentView> executionEnvironments = new HashMap<String, ExecutionEnvironmentView>();
-	private Map<String, DirectoryInstanceView> directoryInstances = new HashMap<String, DirectoryInstanceView>();
-	private Map<String, TaskServerInstanceView> taskServerInstances = new HashMap<String, TaskServerInstanceView>();
-
-	public GridTopologyView() { }
-	
-	public GridTopologyView(String name) {
-		this.name = name;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public Collection<ExecutionEnvironmentView> getExecutionEnvironments() {
-		return Collections.unmodifiableCollection(executionEnvironments.values());
-	}
-	
-	public Collection<DirectoryInstanceView> getDirectoryInstances() {
-		return Collections.unmodifiableCollection(directoryInstances.values());
-	}
-	
-	public Collection<TaskServerInstanceView> getTaskServers(){
-		return Collections.unmodifiableCollection(taskServerInstances.values());
-	}
-
-	public void addExecutionEnvironment(ExecutionEnvironmentView newExecutionEnvironment) {
-		String newGridResourceName = newExecutionEnvironment.getName();
-		checkUniqueName(newGridResourceName, directoryInstances, taskServerInstances);
-		executionEnvironments.put(newGridResourceName, newExecutionEnvironment);
-	}
-	
-	public void addDirectoryInstance(DirectoryInstanceView newDirectoryInstance){
-		String newGridResourceName = newDirectoryInstance.getName();
-		checkUniqueName(newGridResourceName, executionEnvironments, taskServerInstances);
-		directoryInstances.put(newGridResourceName, newDirectoryInstance);
-	}
-	
-	public void addTaskServerInstance(TaskServerInstanceView newTaskServerInstance){
-		String newGridResourceName = newTaskServerInstance.getName();
-		checkUniqueName(newGridResourceName, executionEnvironments, directoryInstances);
-		taskServerInstances.put(newGridResourceName, newTaskServerInstance);
-	}
-	
-	public ExecutionEnvironmentView getExecutionEnvironment(String name){
-		return executionEnvironments.get(name);
-	}
-	
-	public DirectoryInstanceView getDirectoryInstance(String name){
-		return directoryInstances.get(name);
-	}
-
-	public TaskServerInstanceView getTaskServerInstance(String name) {
-		return taskServerInstances.get(name);
-	}
-	
-	public void removeResource(String name){
-		boolean removed = executionEnvironments.remove(name) != null;
-		removed |=  directoryInstances.remove(name) != null;
-		removed |= taskServerInstances.remove(name) != null;
-	}
-
-	private void checkUniqueName(String newGridResourceName, 
-			Map<String, ? extends GridResourceView> firstResources, 
-			Map<String, ? extends GridResourceView> secondResources) {
-		if(null != firstResources.get(newGridResourceName) || null != secondResources.get(newGridResourceName))
-			throw new IllegalArgumentException("Existing resource with name: " + newGridResourceName);
-	}
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/LocalProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/LocalProvider.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/LocalProvider.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -16,23 +16,30 @@
  */
 package org.drools.grid.services.configuration;
 
+import org.drools.grid.GenericConnectorFactory;
+import org.drools.grid.GenericNodeConnector;
 
 /**
  *
  * @author salaboy
  */
-public class LocalProvider extends GenericProvider {
+public class LocalProvider implements GenericProvider {
 
+
+
     public LocalProvider() {
     }
 
-    @Override
     public String getId() {
         return "LocalProvider:";
     }
 
-    @Override
     public ProviderType getProviderType() {
         return ProviderType.Local;
     }
+
+    public GenericNodeConnector getConnector(String connectorString) {
+          return GenericConnectorFactory.newConnector(connectorString);
+
+    }
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/MinaProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/MinaProvider.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/MinaProvider.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,18 +1,19 @@
 package org.drools.grid.services.configuration;
 
+import org.drools.grid.GenericConnectorFactory;
+import org.drools.grid.GenericNodeConnector;
 
-
-
 /**
  * @author salaboy
  */
-public class MinaProvider extends GenericProvider {
-    
+public class MinaProvider implements GenericProvider {
+
     private String providerAddress;
     private int providerPort;
 
-    public MinaProvider() {	}
-    
+    public MinaProvider() {
+    }
+
     public MinaProvider(String providerAddress, int providerPort) {
         this.providerAddress = providerAddress;
         this.providerPort = providerPort;
@@ -26,21 +27,26 @@
         return providerPort;
     }
 
-	public void setProviderAddress(String providerAddress) {
-		this.providerAddress = providerAddress;
-	}
+    public void setProviderAddress(String providerAddress) {
+        this.providerAddress = providerAddress;
+    }
 
-	public void setProviderPort(int providerPort) {
-		this.providerPort = providerPort;
-	}
+    public void setProviderPort(int providerPort) {
+        this.providerPort = providerPort;
+    }
 
-	@Override
-	public String getId() {
-		return "MinaProvider:"+providerAddress+":"+providerPort;
-	}
-	
-	@Override
-	public ProviderType getProviderType() {
-		return ProviderType.RemoteMina;
-	}
+    public String getId() {
+        return "MinaProvider:" + providerAddress + ":" + providerPort;
+    }
+
+    public ProviderType getProviderType() {
+        return ProviderType.RemoteMina;
+    }
+
+    public GenericNodeConnector getConnector(String connectorString){
+          return GenericConnectorFactory
+                  .newConnector(connectorString+":"+this.getProviderAddress()+":"+this.getProviderPort());
+
+
+    }
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/RioProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/RioProvider.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/RioProvider.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -17,6 +17,8 @@
 package org.drools.grid.services.configuration;
 
 import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.List;
 //import net.jini.core.lookup.ServiceItem;
@@ -24,43 +26,48 @@
 //import net.jini.discovery.LookupDiscoveryManager;
 //import net.jini.lease.LeaseRenewalManager;
 //import net.jini.lookup.ServiceDiscoveryManager;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.ExecutionNodeService;
+import org.drools.grid.GenericConnectorFactory;
+import org.drools.grid.GenericNodeConnector;
 
 /**
  *
  * @author salaboy
  */
-public class RioProvider extends GenericProvider {
+public class RioProvider implements GenericProvider {
 
     private List<ExecutionNodeService> executionNodes;
     private List<DirectoryNodeService> directoryNodes;
 
-    public RioProvider(List<ExecutionNodeService> executionNodes, List<DirectoryNodeService> directoryNodes) {
-        this.executionNodes = executionNodes;
-        this.directoryNodes = directoryNodes;
-    }
+    
 
     public RioProvider() {
         this.executionNodes = new ArrayList<ExecutionNodeService>();
         this.directoryNodes = new ArrayList<DirectoryNodeService>();
     }
 
-    @Override
+    
     public String getId() {
         return "RioProvider:";
     }
 
-    @Override
+
     public ProviderType getProviderType() {
         return ProviderType.DistributedRio;
     }
 
     public ExecutionNodeService getExecutionNode() {
+        //Need a strategy
         return executionNodes.get(0);
     }
 
     public DirectoryNodeService getDirectoryNode() {
+        //Need a strategy
         return directoryNodes.get(0);
     }
 
@@ -72,49 +79,15 @@
         return directoryNodes;
     }
 
-    public void lookupExecutionNodeServices() throws IOException, InterruptedException {
 
-        throw new UnsupportedOperationException("Uncomment RIO DEPS and this method!");
-//        Class[] classes = new Class[]{ExecutionNodeService.class};
-//        ServiceTemplate tmpl = new ServiceTemplate(null, classes, null);
-//        LookupDiscoveryManager ldm =
-//                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
-//                null,
-//                null);
-//        System.out.println("Discovering ExecutionNodeService  services ...");
-//        ServiceDiscoveryManager sdm =
-//                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
-//        /* Wait no more then 10 seconds to discover the service */
-//        ServiceItem[] items = sdm.lookup(tmpl, 1,100, null, 30000);
-//        System.out.println("Service  items.lenght"+items.length);
-//
-//        for (int i = 0; i < items.length; i++) {
-//            if (items[i].service instanceof ExecutionNodeService) {
-//                executionNodes.add((ExecutionNodeService) items[i].service);
-//            }
-//        }
-    }
 
-    public void lookupDirectoryNodeServices() throws IOException, InterruptedException {
-        throw new UnsupportedOperationException("Uncomment RIO DEPS and this method!");
-//        Class[] classes = new Class[]{DirectoryNodeService.class};
-//        ServiceTemplate tmpl = new ServiceTemplate(null, classes, null);
-//        LookupDiscoveryManager ldm =
-//                new LookupDiscoveryManager(LookupDiscoveryManager.ALL_GROUPS,
-//                null,
-//                null);
-//        System.out.println("Discovering DirectoryNodeService services ...");
-//        ServiceDiscoveryManager sdm =
-//                new ServiceDiscoveryManager(ldm, new LeaseRenewalManager());
-//        /* Wait no more then 10 seconds to discover the service */
-//        ServiceItem[] items = sdm.lookup(tmpl, 1,100, null, 30000);
-//        System.out.println("Service  items.lenght"+items.length);
-//
-//        for (int i = 0; i < items.length; i++) {
-//
-//            if (items[i].service instanceof DirectoryNodeService) {
-//                directoryNodes.add((DirectoryNodeService) items[i].service);
-//            }
-//        }
+    
+
+    public GenericNodeConnector getConnector(String connectorString) {
+
+        return GenericConnectorFactory
+                .newConnector(connectorString);
+      
+
     }
 }

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceConfiguration.java (from rev 34502, labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceView.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceConfiguration.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -0,0 +1,14 @@
+package org.drools.grid.services.configuration;
+
+
+public class TaskServerInstanceConfiguration extends GridResourceConfiguration {
+	
+	public TaskServerInstanceConfiguration() {
+		super();
+	}
+
+	public TaskServerInstanceConfiguration(String name, GenericProvider provider) {
+		super(name, provider);
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceView.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceView.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/configuration/TaskServerInstanceView.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,14 +0,0 @@
-package org.drools.grid.services.configuration;
-
-
-public class TaskServerInstanceView extends GridResourceView {
-	
-	public TaskServerInstanceView() {
-		super();
-	}
-
-	public TaskServerInstanceView(String name, GenericProvider provider) {
-		super(name, provider);
-	}
-
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -16,16 +16,10 @@
  */
 package org.drools.grid.services.factory;
 
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.drools.SystemEventListenerFactory;
-//import org.drools.distributed.directory.impl.DistributedRioDirectoryConnector;
-import org.drools.grid.local.LocalDirectoryConnector;
-import org.drools.grid.remote.directory.RemoteMinaDirectoryConnector;
 
 import org.drools.grid.services.DirectoryInstance;
 import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
 import org.drools.grid.services.configuration.RioProvider;
 
@@ -46,32 +40,22 @@
             this.name = directoryInstanceName;
         }
 
-        public DirectoryInstance onLocalProvider() {
-            return new DirectoryInstance(name, new LocalDirectoryConnector());
+        public DirectoryInstance onLocalProvider(LocalProvider provider) {
+            return new DirectoryInstance(name,
+                    //provider.getConnector("org.drools.grid.local.LocalDirectoryConnector"));
+                    provider.getConnector("Local:Local:Directory"));
         }
 
         public DirectoryInstance onMinaProvider(MinaProvider provider) {
             return new DirectoryInstance(name,
-                    new RemoteMinaDirectoryConnector(name,
-                    ((MinaProvider) provider).getProviderAddress(),
-                    ((MinaProvider) provider).getProviderPort(),
-                    SystemEventListenerFactory.getSystemEventListener()));
+                   //provider.getConnector("org.drools.grid.remote.directory.RemoteMinaDirectoryConnector"));
+                   provider.getConnector("Remote:Mina:Directory"));
         }
 
-        public DirectoryInstance onRioProvider(RioProvider rioProvider) {
-            throw new UnsupportedOperationException("Uncomment RIO DEPS and this method!");
-//            try {
-//                rioProvider.lookupDirectoryNodeServices();
-//            } catch (IOException ex) {
-//                Logger.getLogger(ExecutionEnvironmentFactory.class.getName()).log(Level.SEVERE, null, ex);
-//            } catch (InterruptedException ex) {
-//                Logger.getLogger(ExecutionEnvironmentFactory.class.getName()).log(Level.SEVERE, null, ex);
-//            }
-//            return new DirectoryInstance(name,
-//                    new DistributedRioDirectoryConnector(name,
-//                            SystemEventListenerFactory.getSystemEventListener(),
-//                            rioProvider.getDirectoryNode()));
-
+        public DirectoryInstance onRioProvider(RioProvider provider) {
+            return new DirectoryInstance(name,
+                    //provider.getConnector("org.drools.distributed.directory.impl.DistributedRioDirectoryConnector"));
+                    provider.getConnector("Distributed:Rio:Directory"));
         }
 
         public DirectoryInstance onHornetQProvider() {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/ExecutionEnvironmentFactory.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -19,12 +19,11 @@
 import java.io.IOException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.drools.SystemEventListenerFactory;
-import org.drools.grid.distributed.DistributedRioNodeConnector;
-import org.drools.grid.local.LocalNodeConnector;
-import org.drools.grid.remote.mina.RemoteMinaNodeConnector;
+
+
 import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
 import org.drools.grid.services.configuration.RioProvider;
 
@@ -45,30 +44,23 @@
             this.name = executionEnvironmentName;
         }
 
-        public ExecutionEnvironment onLocalProvider() {
-            return new ExecutionEnvironment(name, new LocalNodeConnector());
+        public ExecutionEnvironment onLocalProvider(LocalProvider provider) {
+            return new ExecutionEnvironment(name,
+                    //provider.getConnector("org.drools.grid.local.LocalNodeConnector"));
+                    provider.getConnector("Local:Local:Node"));
         }
 
         public ExecutionEnvironment onMinaProvider(MinaProvider provider) {
             return new ExecutionEnvironment(name,
-                    new RemoteMinaNodeConnector(name,
-                    provider.getProviderAddress(),
-                    provider.getProviderPort(),
-                    SystemEventListenerFactory.getSystemEventListener()));
+                    //provider.getConnector("org.drools.grid.remote.mina.RemoteMinaNodeConnector"));
+                    provider.getConnector("Remote:Mina:Node"));
         }
 
-        public ExecutionEnvironment onRioProvider(RioProvider rioProvider) {
-            try {
-                rioProvider.lookupExecutionNodeServices();
-            } catch (IOException ex) {
-                Logger.getLogger(ExecutionEnvironmentFactory.class.getName()).log(Level.SEVERE, null, ex);
-            } catch (InterruptedException ex) {
-                Logger.getLogger(ExecutionEnvironmentFactory.class.getName()).log(Level.SEVERE, null, ex);
-            }
+        public ExecutionEnvironment onRioProvider(RioProvider provider) {
+            
             return new ExecutionEnvironment(name,
-                    new DistributedRioNodeConnector(name,
-                    SystemEventListenerFactory.getSystemEventListener(),
-                    rioProvider.getExecutionNode()));
+                    //provider.getConnector("org.drools.grid.distributed.DistributedRioNodeConnector"));
+                    provider.getConnector("Distributed:Rio:Node"));
         }
 
         public ExecutionEnvironment onHornetQProvider() {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerBuilder.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,11 +1,12 @@
 package org.drools.grid.services.factory;
 
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
 import org.drools.grid.services.configuration.RioProvider;
 
 public interface GenericProviderContainerBuilder<T> {
 
-	T onLocalProvider();
+	T onLocalProvider(LocalProvider provider);
 
 	T onMinaProvider(MinaProvider provider);
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GenericProviderContainerFactoryHelper.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,6 +1,7 @@
 package org.drools.grid.services.factory;
 
 import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
 import org.drools.grid.services.configuration.RioProvider;
 
@@ -9,7 +10,7 @@
 	public static <T> T doOnGenericProvider(GenericProvider provider, GenericProviderContainerBuilder<T> builder){
         switch (provider.getProviderType()){
             case Local: {
-            	return builder.onLocalProvider();
+            	return builder.onLocalProvider((LocalProvider)provider);
             }
             case RemoteMina: {
             	return builder.onMinaProvider((MinaProvider)provider);

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/GridTopologyFactory.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -1,22 +1,22 @@
 package org.drools.grid.services.factory;
 
 import org.drools.grid.services.GridTopology;
-import org.drools.grid.services.configuration.DirectoryInstanceView;
-import org.drools.grid.services.configuration.ExecutionEnvironmentView;
-import org.drools.grid.services.configuration.GridTopologyView;
-import org.drools.grid.services.configuration.TaskServerInstanceView;
+import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
+import org.drools.grid.services.configuration.TaskServerInstanceConfiguration;
 
 public class GridTopologyFactory {
 	
-	public static GridTopology build(GridTopologyView gridConfiguration){
+	public static GridTopology build(GridTopologyConfiguration gridConfiguration){
 		GridTopology topology = new GridTopology(gridConfiguration.getName());
-		for (DirectoryInstanceView directoryInstanceView : gridConfiguration.getDirectoryInstances()) {
+		for (DirectoryInstanceConfiguration directoryInstanceView : gridConfiguration.getDirectoryInstances()) {
 			topology.registerDirectoryInstance(directoryInstanceView.getName(), directoryInstanceView.getProvider());
 		}
-		for (ExecutionEnvironmentView executionEnvironmentView : gridConfiguration.getExecutionEnvironments()) {
+		for (ExecutionEnvironmentConfiguration executionEnvironmentView : gridConfiguration.getExecutionEnvironments()) {
 			topology.registerExecutionEnvironment(executionEnvironmentView.getName(), executionEnvironmentView.getProvider());
 		}
-		for (TaskServerInstanceView taskServerInstanceView : gridConfiguration.getTaskServers()) {
+		for (TaskServerInstanceConfiguration taskServerInstanceView : gridConfiguration.getTaskServers()) {
 			topology.registerTaskServerInstance(taskServerInstanceView.getName(), taskServerInstanceView.getProvider());
 		}
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/TaskServerInstanceFactory.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -19,6 +19,7 @@
 import org.drools.SystemEventListenerFactory;
 import org.drools.grid.services.TaskServerInstance;
 import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
 import org.drools.grid.services.configuration.RioProvider;
 import org.drools.grid.task.RemoteMinaHumanTaskConnector;
@@ -41,7 +42,7 @@
             throw new UnsupportedOperationException("We don't have a HortnetQ implementation for the Task Service. Yet!");
         }
 
-        public TaskServerInstance onLocalProvider() {
+        public TaskServerInstance onLocalProvider(LocalProvider provider) {
             throw new UnsupportedOperationException("We don't have a local implementation for the Task Service. Yet!");
         }
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -12,20 +12,23 @@
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactoryService;
 import org.drools.SystemEventListenerFactory;
-import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.builder.ResourceType;
 import org.drools.grid.ConnectorException;
 import org.drools.grid.ExecutionNode;
-import org.drools.grid.GenericNodeConnector;
 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.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
+import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
+import org.drools.grid.services.factory.GridTopologyFactory;
 import org.drools.grid.services.strategies.RandomEnvironmentSelectionStrategy;
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
@@ -94,19 +97,14 @@
     @Test
     public void singleMinaProvider() throws ConnectorException, RemoteException, RemoteException, RemoteException, RemoteException {
 
-        //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.
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addExecutionEnvironment(
+                        new ExecutionEnvironmentConfiguration("MyMinaExecutionEnv1",new MinaProvider("127.0.0.1", 9123)));
 
-        //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
-        grid = new GridTopology("MyCompanyTopology");
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
 
-      
-        //Create the provider
-        MinaProvider provider = new MinaProvider("127.0.0.1", 9123);
-        //Register the provider into the topology
-        grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
-
+        Assert.assertNotNull(grid);
+        
         //Then we can get the registered Execution Environments by Name
 
         ExecutionEnvironment ee = grid.getExecutionEnvironment("MyMinaExecutionEnv1");
@@ -168,27 +166,16 @@
     @Test
     public void multiMinaProvider() throws ConnectorException {
 
-        //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.
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addExecutionEnvironment(
+                        new ExecutionEnvironmentConfiguration("MyMinaExecutionEnv1",new MinaProvider("127.0.0.1", 9123)));
+        gridTopologyConfiguration.addExecutionEnvironment(
+                        new ExecutionEnvironmentConfiguration("MyMinaExecutionEnv2",new MinaProvider("127.0.0.1", 9124)));
 
-        //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
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
 
-        
-        grid = new GridTopology("MyCompanyTopology");
+        Assert.assertNotNull(grid);
 
-       
-        //Create the provider
-        MinaProvider provider1 = new MinaProvider("127.0.0.1", 9123);
-        //Register the provider into the topology
-        grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider1);
-
-
-        //Create the provider
-         MinaProvider provider2 = new MinaProvider("127.0.0.1", 9124);
-        //Register the provider into the topology
-        grid.registerExecutionEnvironment("MyMinaExecutionEnv2", provider2);
-
         //Then we can get the registered Execution Environments by Name
         ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new RandomEnvironmentSelectionStrategy());
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ITGridExecutionTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ITGridExecutionTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -14,40 +14,25 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.services;
 
 import java.io.IOException;
 import org.junit.Assert;
-import org.drools.grid.services.configuration.GenericProvider;
 
 import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.List;
 
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactoryService;
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderFactoryService;
-import org.drools.builder.ResourceType;
-import org.drools.grid.AcceptorService;
 import org.drools.grid.ConnectorException;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.ExecutionNode;
-import org.drools.grid.ExecutionNodeService;
-import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
-import org.drools.grid.services.configuration.LocalProvider;
+import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
 import org.drools.grid.services.configuration.RioProvider;
-import org.drools.grid.services.strategies.ExecutionEnvByPrioritySelectionStrategy;
-import org.drools.io.ResourceFactory;
-import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.grid.services.factory.GridTopologyFactory;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 //import net.jini.core.lookup.ServiceItem;
 //import org.rioproject.gnostic.Gnostic;
 //import org.rioproject.sla.RuleMap;
@@ -62,13 +47,14 @@
 //    @RunWith(RioTestRunner.class)
 public class ITGridExecutionTest {
 
+    private GridTopology grid;
 //    AcceptorService server;
 //    @SetTestManager
 //    static TestManager testManager;
 //    private GridTopology grid;
 //    private List<ExecutionNodeService> executionNodes = new ArrayList<ExecutionNodeService>();
 //    private List<DirectoryNodeService> directoryNodes = new ArrayList<DirectoryNodeService>();
-    
+
     public ITGridExecutionTest() {
     }
 
@@ -105,7 +91,6 @@
 //                executionNodes.add((ExecutionNodeService) nodeServiceItems[i].service);
 //            }
 //        }
-
     }
 
     @After
@@ -113,25 +98,29 @@
 //        System.out.println("Disconecting all clients");
 //        grid.dispose();
 //
-        
     }
+
     @Test
-    public void doNothing(){}
-    
-     @Test
-     public void rioProviderTest() throws ConnectorException, RemoteException {
-//        grid = new GridTopology("MyBusinessUnit");
+    public void doNothing() {
+    }
+
+    @Test
+    public void rioProviderTest() throws ConnectorException, RemoteException {
+
+//        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+//        gridTopologyConfiguration.addExecutionEnvironment(
+//                new ExecutionEnvironmentConfiguration("MyMinaExecutionEnv1", new RioProvider()));
+//        gridTopologyConfiguration.addDirectoryInstance(
+//                new DirectoryInstanceConfiguration("MyMinaExecutionEnv2", new RioProvider()));
 //
+//        grid = GridTopologyFactory.build(gridTopologyConfiguration);
 //
-//        GenericProvider rioProvider = new RioProvider();
-//        GenericProvider rioDirProvider = new RioProvider();
+//        Assert.assertNotNull(grid);
+
+
 //
 //
-//        grid.registerExecutionEnvironment("MyRioEnv", rioProvider);
-//        grid.registerDirectoryInstance("MyRioDir", rioDirProvider);
 //
-//
-//
 //        ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new ExecutionEnvByPrioritySelectionStrategy());
 //        Assert.assertNotNull(ee);
 //        System.out.println("EE Name = "+ee.getName());
@@ -183,8 +172,7 @@
 
 
 
-     }
-
+    }
 //      private void waitForRule(Gnostic g, String rule) {
 //        Throwable thrown = null;
 //        long t0 = System.currentTimeMillis();
@@ -218,5 +206,4 @@
 //
 //        }
 //    }
-
-}
\ No newline at end of file
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -14,13 +14,11 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.services;
 
 import java.rmi.RemoteException;
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactoryService;
-import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.builder.ResourceType;
@@ -30,8 +28,13 @@
 import org.drools.grid.services.DirectoryInstance;
 import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
+import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
 import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
 import org.drools.grid.services.configuration.LocalProvider;
+import org.drools.grid.services.configuration.MinaProvider;
+import org.drools.grid.services.factory.GridTopologyFactory;
 import org.drools.grid.services.strategies.DirectoryInstanceByPrioritySelectionStrategy;
 import org.drools.grid.services.strategies.ExecutionEnvByPrioritySelectionStrategy;
 import org.drools.io.ResourceFactory;
@@ -48,6 +51,8 @@
  */
 public class RegisterDirectoryTest {
 
+    private GridTopology grid;
+
     public RegisterDirectoryTest() {
     }
 
@@ -67,93 +72,107 @@
     public void tearDown() {
     }
 
-    
-     @Test
-     public void directoryLocalTest() throws ConnectorException, RemoteException {
-         System.out.println("First Test!!");
-        GridTopology grid = new GridTopology("MyBusinessUnit");
-        GenericProvider localDirProvider = new LocalProvider();
-        GenericProvider localEnvProvider = new LocalProvider();
+    @Test
+    public void directoryLocalTest() throws ConnectorException, RemoteException {
 
-        grid.registerDirectoryInstance("MyLocalDir", localDirProvider);
-        grid.registerExecutionEnvironment("MyLocalEnv", localEnvProvider);
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir", new LocalProvider()));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
 
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
 
+        Assert.assertNotNull(grid);
 
         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull("Directory Instance null", directory);
 
-        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);;
+        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);
+
         Assert.assertNotNull("Dir Null", dir);
 
         Assert.assertEquals(2, dir.getExecutorsMap().size());
 
         grid.dispose();
-     }
+    }
 
-     @Test
-     public void multiDirectoryLocalTest() throws ConnectorException, RemoteException {
-         
-        GridTopology grid = new GridTopology("MyBusinessUnit");
-        GenericProvider localDirProvider = new LocalProvider();
-        GenericProvider localDirProvider2 = new LocalProvider();
-        GenericProvider localEnvProvider = new LocalProvider();
-        GenericProvider localEnvProvider2 = new LocalProvider();
+    @Test
+    public void multiDirectoryLocalTest() throws ConnectorException, RemoteException {
 
-        grid.registerDirectoryInstance("MyLocalDir", localDirProvider);
-        grid.registerDirectoryInstance("MyLocalDir2", localDirProvider2);
-        grid.registerExecutionEnvironment("MyLocalEnv", localEnvProvider);
-        grid.registerExecutionEnvironment("MyLocalEnv2", localEnvProvider2);
 
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir", new LocalProvider()));
+        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir2", new LocalProvider()));
 
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv2", new LocalProvider()));
 
+
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
+
+
+        Assert.assertNotNull(grid);
+
+
+
+
         //DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         DirectoryInstance directory = grid.getDirectoryInstance("MyLocalDir");
-        Assert.assertNotNull("DirInstance is null!",directory);
+        Assert.assertNotNull("DirInstance is null!", directory);
 
-        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);;
-        Assert.assertNotNull("Dir is null!",dir);
+        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);
+        ;
+        Assert.assertNotNull("Dir is null!", dir);
         //This assertion is not deterministic
         //Assert.assertEquals(4, dir.getExecutorsMap().size());
 
         DirectoryInstance directory2 = grid.getDirectoryInstance("MyLocalDir2");
-        Assert.assertNotNull("DirInstance 2 is null!",directory2);
+        Assert.assertNotNull("DirInstance 2 is null!", directory2);
 
-        DirectoryNodeService dir2 = directory2.getDirectoryService().get(DirectoryNodeService.class);;
+        DirectoryNodeService dir2 = directory2.getDirectoryService().get(DirectoryNodeService.class);
+        ;
         Assert.assertNotNull("Dir 2 is null!", dir2);
         //This assertion is not deterministic
         //Assert.assertEquals(3, dir2.getExecutorsMap().size());
 
         // the only thing that is for sure is
-        System.out.println("dir1 exec map"+dir.getExecutorsMap());
-        System.out.println("dir2 exec map"+dir2.getExecutorsMap());
-        Assert.assertTrue( (dir2.getExecutorsMap().size() + dir.getExecutorsMap().size()) > 4 );
+        System.out.println("dir1 exec map" + dir.getExecutorsMap());
+        System.out.println("dir2 exec map" + dir2.getExecutorsMap());
+        Assert.assertTrue((dir2.getExecutorsMap().size() + dir.getExecutorsMap().size()) > 4);
 
         grid.dispose();
 
-     }
+    }
 
-      @Test
-     public void registerKbaseInLocalDirectoryTest() throws ConnectorException, RemoteException {
-        
-        GridTopology grid = new GridTopology("MyBusinessUnit");
-        GenericProvider localDirProvider = new LocalProvider();
-        GenericProvider localEnvProvider = new LocalProvider();
+    @Test
+    public void registerKbaseInLocalDirectoryTest() throws ConnectorException, RemoteException {
 
-        grid.registerDirectoryInstance("MyLocalDir", localDirProvider);
-        grid.registerExecutionEnvironment("MyLocalEnv", localEnvProvider);
 
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyLocalDir", new LocalProvider()));
 
-       
 
-         ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new ExecutionEnvByPrioritySelectionStrategy());
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
+
+
+
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
+
+
+        Assert.assertNotNull(grid);
+
+
+
+
+
+
+        ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new ExecutionEnvByPrioritySelectionStrategy());
         Assert.assertNotNull(ee);
-        System.out.println("EE Name = "+ee.getName());
+        System.out.println("EE Name = " + ee.getName());
 
         ExecutionNode node = ee.getExecutionNode();
         Assert.assertNotNull(node);
 
-         // Do a basic Runtime Test that register a ksession and fire some rules.
+        // 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";
@@ -186,17 +205,16 @@
 
         kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
 
-         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
+        DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull("Directory Instance null", directory);
 
-       DirectoryNodeService dirService = directory.getDirectoryService().get(DirectoryNodeService.class);;
-       kbase = dirService.lookupKBase("DoctorsKBase");
-       Assert.assertNotNull(kbase);
+        DirectoryNodeService dirService = directory.getDirectoryService().get(DirectoryNodeService.class);
 
-       grid.dispose();
-       
+        kbase = dirService.lookupKBase("DoctorsKBase");
+        Assert.assertNotNull(kbase);
 
-     }
-     
+        grid.dispose();
 
-}
\ No newline at end of file
+
+    }
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -41,9 +41,12 @@
 import org.drools.grid.services.DirectoryInstance;
 import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
-import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
 import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
+import org.drools.grid.services.factory.GridTopologyFactory;
 import org.drools.grid.services.strategies.DirectoryInstanceByPrioritySelectionStrategy;
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
@@ -117,6 +120,8 @@
 
         grid.dispose();
 
+        Thread.sleep(5000);
+
         Assert.assertEquals(0, serverDir.getCurrentSessions());
         serverDir.stop();
         System.out.println("Dir Server Stopped!");
@@ -130,18 +135,20 @@
 
     @Test
      public void directoryRemoteTest() throws ConnectorException, RemoteException {
-        grid = new GridTopology("MyBusinessUnit");
 
-        GenericProvider remoteDirProvider = new MinaProvider("127.0.0.1", 9123);
-        GenericProvider localEnvProvider = new LocalProvider();
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyMinaDir", new MinaProvider("127.0.0.1", 9123)));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyRemoteEnv", new MinaProvider("127.0.0.1", 9124)));
 
-        MinaProvider remoteEnvProvider = new MinaProvider("127.0.0.1", 9124);
 
-        grid.registerDirectoryInstance("MyMinaDir", remoteDirProvider);
-        grid.registerExecutionEnvironment("MyLocalEnv", localEnvProvider);
-        grid.registerExecutionEnvironment("MyRemoteEnv", remoteEnvProvider);
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
 
 
+        Assert.assertNotNull(grid);
+       
+
+
         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull(directory);
 
@@ -224,22 +231,19 @@
      @Test
     public void directoryInstanceRetriveKSessionFromEE() throws ConnectorException, RemoteException {
 
-        //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.
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addDirectoryInstance(new DirectoryInstanceConfiguration("MyMinaDir", new MinaProvider("127.0.0.1", 9123)));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyMinaExecutionEnv1", new MinaProvider("127.0.0.1", 9124)));
 
-        //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
-        grid = new GridTopology("MyCompanyTopology");
 
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
 
-        //Create the provider
-        MinaProvider provider = new MinaProvider("127.0.0.1", 9124);
-        GenericProvider remoteDirProvider = new MinaProvider("127.0.0.1", 9123);
-        //Register the provider into the topology
-        
-        grid.registerDirectoryInstance("MyMinaDir", remoteDirProvider);
-        grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
 
+        Assert.assertNotNull(grid);
+
+
+       
+
         //Then we can get the registered Execution Environments by Name
 
         ExecutionEnvironment ee = grid.getExecutionEnvironment("MyMinaExecutionEnv1");

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterTaskTest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -45,8 +45,13 @@
 import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
 import org.drools.grid.services.TaskServerInstance;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
 import org.drools.grid.services.configuration.GenericProvider;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
+import org.drools.grid.services.configuration.LocalProvider;
 import org.drools.grid.services.configuration.MinaProvider;
+import org.drools.grid.services.configuration.TaskServerInstanceConfiguration;
+import org.drools.grid.services.factory.GridTopologyFactory;
 import org.drools.grid.task.CommandBasedServicesWSHumanTaskHandler;
 import org.drools.grid.task.HumanTaskService;
 import org.drools.grid.task.TaskServerMessageHandlerImpl;
@@ -82,6 +87,7 @@
  * @author salaboy
  */
 public class RegisterTaskTest {
+
     private GridTopology grid;
     private MinaAcceptor serverTask;
     private MinaAcceptor serverNode;
@@ -95,6 +101,7 @@
     protected static final int MANAGER_COMPLETION_WAIT_TIME = DEFAULT_WAIT_TIME;
     protected static final int MANAGER_ABORT_WAIT_TIME = DEFAULT_WAIT_TIME;
     protected CommandBasedServicesWSHumanTaskHandler handler;
+
     public RegisterTaskTest() {
     }
 
@@ -147,7 +154,7 @@
         }
 
 
-         // Human task Server configuration
+        // Human task Server configuration
         SocketAddress htAddress = new InetSocketAddress("127.0.0.1", 9123);
         SocketAcceptor htAcceptor = new NioSocketAcceptor();
 
@@ -161,7 +168,7 @@
 
         //Execution Node related stuff
 
-           System.out.println("Server 1 Starting!");
+        System.out.println("Server 1 Starting!");
         // the servers should be started in a different machine (jvm or physical) or in another thread
         SocketAddress address = new InetSocketAddress("127.0.0.1", 9124);
         NodeData nodeData = new NodeData();
@@ -184,8 +191,8 @@
 
         grid.dispose();
 
-        
-        
+
+
         handler.dispose();
         Assert.assertEquals(0, serverNode.getCurrentSessions());
         serverNode.stop();
@@ -193,37 +200,40 @@
         Assert.assertEquals(0, serverTask.getCurrentSessions());
         serverTask.stop();
         System.out.println("Task Server Stopped!");
-        
+
         taskSession.dispose();
         emf.close();
-        
-        
 
 
 
+
+
     }
 
     @Test
     public void MinaTaskTest() throws InterruptedException, ConnectorException {
-        grid = new GridTopology("MyBusinessUnit");
 
-        GenericProvider remoteTaskProvider = new MinaProvider("127.0.0.1", 9123);
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addTaskServerInstance(new TaskServerInstanceConfiguration("MyMinaTask", new MinaProvider("127.0.0.1", 9123)));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyMinaExecutionEnv1", new MinaProvider("127.0.0.1", 9124)));
 
-        grid.registerTaskServerInstance("MyMinaTask", remoteTaskProvider);
 
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
+
+
+        Assert.assertNotNull(grid);
+
+
         TaskServerInstance taskServer = grid.getTaskServerInstance("MyMinaTask");
 
-        //Create the provider
-        MinaProvider provider = new MinaProvider("127.0.0.1", 9124);
-        //Register the provider into the topology
-        grid.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
 
+
         Assert.assertNotNull(taskServer);
 
         client = (HumanTaskService) taskServer.getTaskClient();
         Assert.assertNotNull(client);
-        
 
+
         //Create a task to test the HT client. For that we need to have a ksession with a workitem that creates it
         ExecutionEnvironment ee = grid.getExecutionEnvironment("MyMinaExecutionEnv1");
         Assert.assertNotNull(ee);
@@ -233,7 +243,7 @@
         ExecutionNode node = ee.getExecutionNode();
 
         Assert.assertNotNull(node);
-         KnowledgeBuilder kbuilder =
+        KnowledgeBuilder kbuilder =
                 node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
 
 
@@ -256,7 +266,7 @@
         workItem.setParameter("Comment", "Comment");
         workItem.setParameter("Priority", "10");
         workItem.setParameter("ActorId", "Darth Vader");
-        handler.executeWorkItem(workItem,  manager);
+        handler.executeWorkItem(workItem, manager);
 
         Thread.sleep(500);
 
@@ -319,92 +329,86 @@
         vars.put("now", new Date());
         return MVEL.executeExpression(compiler.compile(context), vars);
     }
-
-    
-
 }
 
 class TestWorkItemManager implements WorkItemManager {
 
-        private volatile boolean completed;
-        private volatile boolean aborted;
-        private volatile Map<String, Object> results;
+    private volatile boolean completed;
+    private volatile boolean aborted;
+    private volatile Map<String, Object> results;
 
-        public synchronized boolean waitTillCompleted(long time) {
-            if (!isCompleted()) {
-                try {
-                    wait(time);
-                } catch (InterruptedException e) {
-                    // swallow and return state of completed
-                }
+    public synchronized boolean waitTillCompleted(long time) {
+        if (!isCompleted()) {
+            try {
+                wait(time);
+            } catch (InterruptedException e) {
+                // swallow and return state of completed
             }
-
-            return isCompleted();
         }
 
-        public synchronized boolean waitTillAborted(long time) {
-            if (!isAborted()) {
-                try {
-                    wait(time);
-                } catch (InterruptedException e) {
-                    // swallow and return state of aborted
-                }
+        return isCompleted();
+    }
+
+    public synchronized boolean waitTillAborted(long time) {
+        if (!isAborted()) {
+            try {
+                wait(time);
+            } catch (InterruptedException e) {
+                // swallow and return state of aborted
             }
-
-            return isAborted();
         }
 
-        public void abortWorkItem(long id) {
-            setAborted(true);
-        }
+        return isAborted();
+    }
 
-        public synchronized boolean isAborted() {
-            return aborted;
-        }
+    public void abortWorkItem(long id) {
+        setAborted(true);
+    }
 
-        private synchronized void setAborted(boolean aborted) {
-            this.aborted = aborted;
-            notifyAll();
-        }
+    public synchronized boolean isAborted() {
+        return aborted;
+    }
 
-        public void completeWorkItem(long id, Map<String, Object> results) {
-            this.results = results;
-            setCompleted(true);
-        }
+    private synchronized void setAborted(boolean aborted) {
+        this.aborted = aborted;
+        notifyAll();
+    }
 
-        private synchronized void setCompleted(boolean completed) {
-            this.completed = completed;
-            notifyAll();
-        }
+    public void completeWorkItem(long id, Map<String, Object> results) {
+        this.results = results;
+        setCompleted(true);
+    }
 
-        public synchronized boolean isCompleted() {
-            return completed;
-        }
+    private synchronized void setCompleted(boolean completed) {
+        this.completed = completed;
+        notifyAll();
+    }
 
-        public WorkItem getWorkItem(long id) {
-            return null;
-        }
+    public synchronized boolean isCompleted() {
+        return completed;
+    }
 
-        public Set<WorkItem> getWorkItems() {
-            return null;
-        }
+    public WorkItem getWorkItem(long id) {
+        return null;
+    }
 
-        public Map<String, Object> getResults() {
-            return results;
-        }
+    public Set<WorkItem> getWorkItems() {
+        return null;
+    }
 
-        public void internalAbortWorkItem(long id) {
-        }
+    public Map<String, Object> getResults() {
+        return results;
+    }
 
-        public void internalAddWorkItem(WorkItem workItem) {
-        }
+    public void internalAbortWorkItem(long id) {
+    }
 
-        public void internalExecuteWorkItem(WorkItem workItem) {
-        }
+    public void internalAddWorkItem(WorkItem workItem) {
+    }
 
-        public void registerWorkItemHandler(String workItemName, WorkItemHandler handler) {
-        }
+    public void internalExecuteWorkItem(WorkItem workItem) {
+    }
 
-
-
+    public void registerWorkItemHandler(String workItemName, WorkItemHandler handler) {
     }
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-08-05 23:21:53 UTC (rev 34562)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-08-06 03:12:52 UTC (rev 34563)
@@ -42,6 +42,10 @@
 import org.drools.grid.remote.mina.MinaIoHandler;
 import org.drools.grid.services.ExecutionEnvironment;
 import org.drools.grid.services.GridTopology;
+import org.drools.grid.services.configuration.DirectoryInstanceConfiguration;
+import org.drools.grid.services.configuration.ExecutionEnvironmentConfiguration;
+import org.drools.grid.services.configuration.GridTopologyConfiguration;
+import org.drools.grid.services.factory.GridTopologyFactory;
 import org.drools.grid.services.strategies.ExecutionEnvByPrioritySelectionStrategy;
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
@@ -99,16 +103,20 @@
 
     
      @Test
-     public void mixedTopologyMinaAndLocal() throws ConnectorException {
-        grid = new GridTopology("MyBusinessUnit");
-       
-        GenericProvider minaProvider = new MinaProvider("127.0.0.1", 9123 );
-        GenericProvider localProvider = new LocalProvider();
+     public void mixedTopologyMinaAndLocal() throws ConnectorException, RemoteException {
 
-        grid.registerExecutionEnvironment("MyMinaEnv", minaProvider);
+        GridTopologyConfiguration gridTopologyConfiguration = new GridTopologyConfiguration("MyTopology");
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyMinaEnv", new MinaProvider("127.0.0.1", 9123)));
+        gridTopologyConfiguration.addExecutionEnvironment(new ExecutionEnvironmentConfiguration("MyLocalEnv", new LocalProvider()));
 
-        grid.registerExecutionEnvironment("MyLocalEnv", localProvider);
 
+        grid = GridTopologyFactory.build(gridTopologyConfiguration);
+
+
+        Assert.assertNotNull(grid);
+
+        
+
         ExecutionEnvironment ee = grid.getBestExecutionEnvironment(new ExecutionEnvByPrioritySelectionStrategy());
         Assert.assertNotNull(ee);
         System.out.println("EE Name = "+ee.getName());
@@ -156,9 +164,9 @@
         Assert.assertEquals(2, fired);
 
 
+        grid.dispose();
 
 
-
      }
 
 }
\ No newline at end of file



More information about the jboss-svn-commits mailing list