[jboss-svn-commits] JBL Code SVN: r33963 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation: drools-grid/drools-grid-api/src/main/java/org/drools/grid and 21 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 16 17:47:34 EDT 2010


Author: salaboy21
Date: 2010-07-16 17:47:33 -0400 (Fri, 16 Jul 2010)
New Revision: 33963

Added:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-api/src/main/java/org/drools/grid/DirectoryNode.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnectionDirectory.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaConnectionDirectory.java
Removed:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/GridConnectionOLDDELETE.java
Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericDirectoryConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/NodeFactory.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/DirectorySelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/StaticIncrementalDirectorySelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/conf/test-config.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/KnowledgeBaseProviderLocalClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/GenericConnectorFactory.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/DirectoryInstance.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
Log:
adding DirectoryNode, that a is a collection of Services for the directoryInstances. Right now the only service available is DirectoryNodeService

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-api/src/main/java/org/drools/grid/DirectoryNode.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-api/src/main/java/org/drools/grid/DirectoryNode.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-api/src/main/java/org/drools/grid/DirectoryNode.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,71 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid;
+
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryNode {
+    private String id;
+    private final Map<Class<?>, Object> services = new ConcurrentHashMap<Class<?>, Object>();
+
+    public DirectoryNode() {
+        this.id = UUID.randomUUID().toString();
+    }
+
+    public DirectoryNode(String id) {
+        this.id = id;
+    }
+
+    public <T> T get(Class<T> interfaceClass) {
+        synchronized (interfaceClass) {
+            Object service = services.get(interfaceClass);
+            if (service == null) {
+                try {
+                    Class<?> implementingClass = Class.forName(interfaceClass.getCanonicalName() + "Impl");
+
+                    service = implementingClass.newInstance();
+                    services.put(interfaceClass, service);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            return interfaceClass.cast(service);
+        }
+    }
+
+    public <T> void set(Class<T> interfaceClass, T provider) {
+        synchronized (interfaceClass) {
+            services.put(interfaceClass, provider);
+        }
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -21,8 +21,11 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.drools.KnowledgeBase;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 
 /**
  *
@@ -131,8 +134,32 @@
 
     public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException {
         return kbasesMap;
+    } 
+
+    public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 
+    public void write(Message msg, MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -16,18 +16,30 @@
  * @author salaboy
  */
 
-public interface DirectoryNodeService extends GenericDirectoryConnector {
+public interface DirectoryNodeService extends GenericNodeConnector {
 
     public void register(String executorId, String resourceId) throws ConnectorException, RemoteException;
+    
+    public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException;
+
     public void unregister(String executorId) throws ConnectorException, RemoteException;
-    public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException;
+
     public GenericNodeConnector lookup(String resourceId) throws ConnectorException, RemoteException;
+    // Returns the ID of the GenericNodeConnector found
     public String lookupId(String resourceId) throws ConnectorException, RemoteException;
+
     public void registerKBase(String kbaseId, String resourceId) throws ConnectorException, RemoteException;
+
     public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException;
+
+    public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException;
+
     public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException;
+
     public Map<String, String> getExecutorsMap() throws ConnectorException, RemoteException;
+
     public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException;
+
     public void dispose() throws ConnectorException, RemoteException;
 
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnection.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnection.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -31,7 +31,7 @@
     //Add Connectors to get new Connections
     public void addExecutionNode(GenericNodeConnector execNodeConnector);
 
-    public void addDirectoryNode(GenericDirectoryConnector directoryNodeConnector);
+    public void addDirectoryNode(GenericNodeConnector directoryNodeConnector);
 
     public void addHumanTaskNode(GenericHumanTaskConnector humanTaskNodeConnector);
 
@@ -43,11 +43,11 @@
     public List<ExecutionNode> getExecutionNodes() throws ConnectorException;
 
     //Get DirectoryNode(s) with live connections
-    public DirectoryNodeService getDirectoryNode(DirectorySelectionStrategy directorySelectionStrategy) throws ConnectorException;
+    public DirectoryNode getDirectoryNode(DirectorySelectionStrategy directorySelectionStrategy) throws ConnectorException;
 
-    public DirectoryNodeService getDirectoryNode() throws ConnectorException;
+    public DirectoryNode getDirectoryNode() throws ConnectorException;
 
-    public List<DirectoryNodeService> getDirectoryNodes() throws ConnectorException;
+    public List<DirectoryNode> getDirectoryNodes() throws ConnectorException;
 
     //Get HumanTaskNode(s) with live connections
     public HumanTaskNodeService getHumanTaskNode(HumanTaskSelectionStrategy humanTaskSelectionStrategy) throws ConnectorException;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericDirectoryConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericDirectoryConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -36,5 +36,7 @@
 
     public ConnectorType getConnectorType() ;
 
+    NodeConnectionType getNodeConnectionType()  throws ConnectorException, RemoteException ;
 
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -1,6 +1,7 @@
 package org.drools.grid;
 
 import java.rmi.RemoteException;
+import java.util.concurrent.atomic.AtomicInteger;
 import org.drools.grid.internal.GenericIoWriter;
 import org.drools.grid.internal.Message;
 
@@ -20,4 +21,10 @@
 
     public ConnectorType getConnectorType() ;
 
+    public int getSessionId();
+
+    public AtomicInteger getCounter();
+
+    
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GridConnection.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -35,12 +35,12 @@
 public class GridConnection implements GenericConnection {
 
     private List<GenericNodeConnector> executionNodeConnectors;
-    private List<GenericDirectoryConnector> directoryNodeConnectors;
+    private List<GenericNodeConnector> directoryNodeConnectors;
     private List<GenericHumanTaskConnector> humanTaskNodeConnectors;
 
     public GridConnection() {
         this.executionNodeConnectors = new ArrayList<GenericNodeConnector>();
-        this.directoryNodeConnectors = new ArrayList<GenericDirectoryConnector>();
+        this.directoryNodeConnectors = new ArrayList<GenericNodeConnector>();
         this.humanTaskNodeConnectors = new ArrayList<GenericHumanTaskConnector>();
     }
 
@@ -48,7 +48,7 @@
         this.executionNodeConnectors.add(execNodeConnector);
     }
 
-    public void addDirectoryNode(GenericDirectoryConnector directoryNodeConnector) {
+    public void addDirectoryNode(GenericNodeConnector directoryNodeConnector) {
         this.directoryNodeConnectors.add(directoryNodeConnector);
 
     }
@@ -79,7 +79,6 @@
 
             type.setConnector(connector);
             type.setConnection(this);
-            type.init();
             node = NodeFactory.newExecutionNode(type);
         } catch (RemoteException ex) {
             Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
@@ -90,39 +89,52 @@
         return node;
     }
 
-    public DirectoryNodeService getDirectoryNode(DirectorySelectionStrategy strategy) throws ConnectorException {
+    public DirectoryNode getDirectoryNode(DirectorySelectionStrategy strategy) throws ConnectorException {
+
+//        if (directoryNodeConnectors.isEmpty()) {
+//            //Should I return null or add a local directory?
+//            DirectoryNodeService localDirectory = new DirectoryNodeLocalImpl();
+//            addDirectoryNode(localDirectory);
+//            DirectoryNodeService directoryNodeService = null;
+//            try {
+//                directoryNodeService = localDirectory.getDirectoryNodeService();
+//            } catch (RemoteException ex) {
+//                Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
+//            }
+//            return directoryNodeService;
+//        }
+        GenericNodeConnector connector = null;
+        //if the strategy is null use the default one
        
-            if (directoryNodeConnectors.isEmpty()) {
-                //Should I return null or add a local directory?
-                DirectoryNodeService localDirectory = new DirectoryNodeLocalImpl();
-                addDirectoryNode(localDirectory);
-                DirectoryNodeService directoryNodeService = null;
-                try {
-                    directoryNodeService = localDirectory.getDirectoryNodeService();
-                } catch (RemoteException ex) {
-                    Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
-                }
-                return directoryNodeService;
-            }
-            GenericDirectoryConnector connector = null;
-            //if the strategy is null use the default one
-            DirectoryNodeService directoryNode = null;
-             try {
-            if (strategy == null) {
-                connector = getBestDirectory(new StaticIncrementalDirectorySelectionStrategy());
-            } else {
-                connector = getBestDirectory(strategy);
-            }
+
+        if (strategy == null) {
+            connector = getBestDirectory(new StaticIncrementalDirectorySelectionStrategy());
+        } else {
+            connector = getBestDirectory(strategy);
+        }
+//            connector.connect();
+//            directoryNode = connector.getDirectoryNodeService();
+        System.out.println(">>>>>>>> Connector = " + connector);
+        NodeConnectionType type;
+        DirectoryNode directoryNode = null;
+        try {
+            type = connector.getNodeConnectionType();
+            System.out.println(">>>>>>>> Type = " + type);
             connector.connect();
-            directoryNode = connector.getDirectoryNodeService();
 
+            type.setConnector(connector);
+            type.setConnection(this);
+            
+            directoryNode = NodeFactory.newDirectoryNode(type);
         } catch (RemoteException ex) {
             Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
         }
+
+
         return directoryNode;
     }
 
-    public DirectoryNodeService getDirectoryNode() throws ConnectorException {
+    public DirectoryNode getDirectoryNode() throws ConnectorException {
         return getDirectoryNode(null);
     }
 
@@ -152,7 +164,7 @@
     public List<ExecutionNode> getExecutionNodes() throws ConnectorException {
         List<ExecutionNode> executionNodes = new ArrayList<ExecutionNode>();
         for (GenericNodeConnector connector : executionNodeConnectors) {
-             NodeConnectionType type;
+            NodeConnectionType type;
             try {
                 type = connector.getNodeConnectionType();
                 System.out.println(">>>>>>>> Type = " + type);
@@ -165,27 +177,28 @@
             } catch (RemoteException ex) {
                 Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
             }
-         }
+        }
         return executionNodes;
     }
 
-    public List<DirectoryNodeService> getDirectoryNodes() throws ConnectorException {
-        List<DirectoryNodeService> directories = new ArrayList<DirectoryNodeService>();
-        if (directoryNodeConnectors.isEmpty()) {
-           
-            DirectoryNodeService localDirectory = new DirectoryNodeLocalImpl();
-            addDirectoryNode(localDirectory);
-           
-        }
-        for(GenericDirectoryConnector connector : directoryNodeConnectors){
-            try {
-                connector.connect();
-                directories.add(connector.getDirectoryNodeService());
-            } catch (RemoteException ex) {
-                Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
-            }
-        }
-        return directories;
+    public List<DirectoryNode> getDirectoryNodes() throws ConnectorException {
+//        List<DirectoryNodeService> directories = new ArrayList<DirectoryNodeService>();
+//        if (directoryNodeConnectors.isEmpty()) {
+//
+//            DirectoryNodeService localDirectory = new DirectoryNodeLocalImpl();
+//            addDirectoryNode(localDirectory);
+//
+//        }
+//        for (GenericDirectoryConnector connector : directoryNodeConnectors) {
+//            try {
+//                connector.connect();
+//                directories.add(connector.getDirectoryNodeService());
+//            } catch (RemoteException ex) {
+//                Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
+//            }
+//        }
+//        return directories;
+        return null;
     }
 
     public List<HumanTaskNodeService> getHumanTaskNodes() {
@@ -200,7 +213,7 @@
                 Logger.getLogger(GridConnection.class.getName()).log(Level.SEVERE, null, ex);
             }
         }
-        for (GenericDirectoryConnector connector : directoryNodeConnectors) {
+        for (GenericNodeConnector connector : directoryNodeConnectors) {
             try {
                 connector.disconnect();
             } catch (RemoteException ex) {
@@ -217,7 +230,7 @@
         return nodeSelectionStrategy.getBestNode(this.executionNodeConnectors);
     }
 
-    private GenericDirectoryConnector getBestDirectory(DirectorySelectionStrategy directorySelectionStrategy) {
+    private GenericNodeConnector getBestDirectory(DirectorySelectionStrategy directorySelectionStrategy) {
         return directorySelectionStrategy.getBestDirectory(this.directoryNodeConnectors);
     }
 

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/NodeFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/NodeFactory.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/NodeFactory.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -23,10 +23,20 @@
  */
 public class NodeFactory {
     public static ExecutionNode newExecutionNode(NodeConnectionType type){
+        type.init();
         ExecutionNode node = new ExecutionNode();
         for(Class serviceClass : type.getServicesKeys()){
             node.set(serviceClass, type.getServiceImpl(serviceClass));
         }
         return node;
     }
+    public static DirectoryNode newDirectoryNode(NodeConnectionType type){
+        type.init();
+        DirectoryNode node = new DirectoryNode();
+        for(Class serviceClass : type.getServicesKeys()){
+            node.set(serviceClass, type.getServiceImpl(serviceClass));
+        }
+        return node;
+    }
+   
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/DirectorySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/DirectorySelectionStrategy.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/DirectorySelectionStrategy.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -18,12 +18,12 @@
 package org.drools.grid.strategies;
 
 import java.util.List;
-import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.GenericNodeConnector;
 
 /**
  *
  * @author salaboy
  */
 public interface DirectorySelectionStrategy {
-    public GenericDirectoryConnector getBestDirectory(List<GenericDirectoryConnector> connectors);
+    public GenericNodeConnector getBestDirectory(List<GenericNodeConnector> connectors);
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/StaticIncrementalDirectorySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/StaticIncrementalDirectorySelectionStrategy.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/StaticIncrementalDirectorySelectionStrategy.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -17,7 +17,7 @@
 package org.drools.grid.strategies;
 
 import java.util.List;
-import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.GenericNodeConnector;
 
 /**
  *
@@ -27,11 +27,11 @@
 
     public static int counter = 0;
 
-    public GenericDirectoryConnector getBestDirectory(List<GenericDirectoryConnector> connectors) {
+    public GenericNodeConnector getBestDirectory(List<GenericNodeConnector> connectors) {
         if(counter >= connectors.size()){
             counter = 0;
         }
-        GenericDirectoryConnector connector = connectors.get(counter);
+        GenericNodeConnector connector = connectors.get(counter);
         StaticIncrementalDirectorySelectionStrategy.counter = counter + 1;
         
         return connector;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -26,13 +26,12 @@
 import org.drools.command.FinishedCommand;
 import org.drools.command.KnowledgeContextResolveFromContextCommand;
 import org.drools.grid.ConnectorType;
+import org.drools.grid.DirectoryNode;
 import org.drools.grid.GenericConnection;
 import org.drools.runtime.CommandExecutor;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.grid.GenericNodeConnector;
-import org.drools.grid.NodeConnectionType;
-import org.drools.grid.NodeFactory;
 import org.drools.grid.internal.Message;
 import org.drools.grid.internal.MessageSession;
 import org.drools.grid.internal.commands.LookupCommand;
@@ -69,10 +68,10 @@
             }
             Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionGridClient) executor).getInstanceId(), type), null, null, null, null));
             //System.out.println("Registering " + identifier + " - - " + currentService.getId());
-            for (DirectoryNodeService directory : connection.getDirectoryNodes()) {
+            for (DirectoryNode directory : connection.getDirectoryNodes()) {
                 try {
                     try {
-                        directory.register(identifier, currentConnector.getId());
+                        directory.get(DirectoryNodeService.class).register(identifier, currentConnector.getId());
                     } catch (RemoteException ex) {
                         Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
                     }
@@ -105,14 +104,14 @@
             //First I need to get the correct client ExecutionNodeService with the identifier
             //Look in all the DirectoryNodes
             //DirectoryNodeService directory = (DirectoryNodeService) gridClient.getDirectories().iterator().next();
-            for (DirectoryNodeService directory : connection.getDirectoryNodes()) {
+            for (DirectoryNode directory : connection.getDirectoryNodes()) {
 
                 try {
                     
-                    if(directory.getConnectorType() == ConnectorType.DISTRIBUTED){
-                        currentConnector = directory.lookup(identifier);
+                    if(directory.get(DirectoryNodeService.class).getConnectorType() == ConnectorType.DISTRIBUTED){
+                        currentConnector = directory.get(DirectoryNodeService.class).lookup(identifier);
                     }else{
-                        String connectorString = directory.lookupId(identifier);
+                        String connectorString = directory.get(DirectoryNodeService.class).lookupId(identifier);
                         currentConnector = GenericConnectorFactory.newNodeConnector(connectorString);
                         currentConnector.connect();
                     }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,136 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid.distributed;
+
+import java.rmi.RemoteException;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.drools.KnowledgeBase;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.ConnectorType;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.NodeConnectionType;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryNodeServiceGridClient implements DirectoryNodeService {
+    private GenericNodeConnector client;
+    
+    public DirectoryNodeServiceGridClient(GenericNodeConnector connector, GenericConnection connection) {
+        
+        this.client = new RioDirectoryConnector("client 1", SystemEventListenerFactory.getSystemEventListener(), (DirectoryNodeService) connector);
+    }
+
+
+
+    public void register(String executorId, String resourceId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void unregister(String executorId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public GenericNodeConnector lookup(String resourceId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public String lookupId(String resourceId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void registerKBase(String kbaseId, String resourceId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public Map<String, String> getExecutorsMap() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void dispose() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void connect() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void disconnect() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public String getId() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public GenericConnection getConnection() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public ConnectorType getConnectorType() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void write(Message msg, MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/GridConnectionOLDDELETE.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/GridConnectionOLDDELETE.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/GridConnectionOLDDELETE.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -1,186 +0,0 @@
-/*
- *  Copyright 2010 salaboy.
- * 
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- * 
- *       http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *  under the License.
- */
-package org.drools.grid.distributed;
-
-/**
- *
- * @author salaboy
- */
-public class GridConnectionOLDDELETE {//implements GenericConnection {
-
-//    static {
-//        System.setSecurityManager(new RMISecurityManager() {
-//
-//            @Override
-//            public void checkPermission(Permission perm) {
-//            }
-//        });
-//
-//    }
-//    //Cached Services
-//    private List<GenericNodeConnector> nodeConnectors;
-//    //Cached Directories
-//    private List<DirectoryNodeService> directories;
-//
-//    public GridConnectionOLDDELETE() {
-//        this.nodeConnectors = new ArrayList<GenericNodeConnector>();
-//        this.directories = new ArrayList<DirectoryNodeService>();
-//    }
-//
-//    public void addNodeConnector(GenericNodeConnector service) {
-//
-//        this.nodeConnectors.add(service);
-//
-//    }
-//
-//    public void addDirectoryNode(DirectoryNodeService directory) {
-//        this.directories.add(directory);
-//    }
-//
-//    // In real scenarios this method will be in charge of populating
-//    // all the ExecutionNodeService and DirectoryServices
-//    public boolean connect() throws IOException, RemoteException, InterruptedException {
-//        Logger.getLogger("org.rioproject.associations").setLevel(Level.FINEST);
-//        AssociationDescriptor descriptorExecutionNode = AssociationDescriptor.create("ExecutionNodeService",
-//                "nodeConnectorsInj",
-//                org.drools.grid.ExecutionNodeService.class,
-//                DiscoveryGroupManagement.ALL_GROUPS);
-//        AssociationDescriptor descriptorDirectoryNode = AssociationDescriptor.create("DirectoryNodeService",
-//                "directoriesInj",
-//                org.drools.grid.DirectoryNodeService.class,
-//                DiscoveryGroupManagement.ALL_GROUPS);
-//        /*
-//         * Create and configure association management. Make sure to set
-//         * the backend, this is the object that has the setter method provided
-//         * above. For our case its "this".
-//         */
-//        AssociationMgmt aMgr = new AssociationMgmt();
-//        aMgr.setBackend(this);
-//        aMgr.addAssociationDescriptors(descriptorExecutionNode, descriptorDirectoryNode);
-//
-//
-//
-//        Iterable<org.drools.grid.ExecutionNodeService> executionNodes = aMgr.getAssociations("ExecutionNodeService", null)[0];
-//        for (ExecutionNodeService executionNodeService : executionNodes) {
-//            addNodeConnector(executionNodeService);
-//        }
-//
-//        Iterable<org.drools.grid.DirectoryNodeService> directoryNodes = aMgr.getAssociations("DirectoryNodeService", null)[0];
-//        for (DirectoryNodeService directoryNodeService : directoryNodes) {
-//            addDirectoryNode(directoryNodeService);
-//        }
-//
-//        long waited = 0;
-//        while (nodeConnectors.size() == 0 && waited < 30000) {
-//            Thread.sleep(500);
-//            waited += 500;
-//        }
-//
-//        if (nodeConnectors.size() > 0 && directories.size() > 0) {
-//            return true;
-//        }
-//
-//
-//
-//        return false;
-//    }
-//
-//    @Override
-//    public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
-//        ExecutionNode node = null;
-//        GenericNodeConnector currentNode = null;
-//        try {
-//
-//            //if the strategy is null use the default one
-//            if (strategy == null) {
-//                currentNode = getBestNode(new StaticIncrementalSelectionStrategy(this));
-//            } else {
-//                strategy.setConnection(this);
-//                currentNode = getBestNode(strategy);
-//            }
-//            if (currentNode.connect()) {
-//                node = new ExecutionNode();
-//                node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderGridClient(currentNode, this));
-//                node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderGridClient(currentNode, this));
-//                node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentNode, this));
-//            }
-//
-//        } catch (RemoteException ex) {
-//            Logger.getLogger(GridConnectionOLDDELETE.class.getName()).log(Level.SEVERE, null, ex);
-//        }
-//        return node;
-//    }
-//
-//    public GenericNodeConnector getBestNode(NodeSelectionStrategy nodeSelectionStrategy) {
-//        return nodeSelectionStrategy.getBestNode();
-//
-//
-//    }
-//
-//    public void setNodeConnectorsInj(Iterable<ExecutionNodeService> nodes) {
-//        for (ExecutionNodeService node : nodes) {
-//            addNodeConnector(node);
-//        }
-//
-//
-//    }
-//
-//    public void setDirectoriesInj(Iterable<DirectoryNodeService> nodes) {
-//        for (DirectoryNodeService node : nodes) {
-//            addDirectoryNode(node);
-//        }
-//
-//
-//    }
-//
-//    public List<DirectoryNodeService> getDirectories() {
-//        return (List<DirectoryNodeService>) directories;
-//
-//
-//    }
-//
-//    public void setDirectories(List<DirectoryNodeService> directories) {
-//        this.directories = directories;
-//
-//
-//    }
-//
-//    public List<GenericNodeConnector> getNodeConnectors() {
-//        return nodeConnectors;
-//
-//
-//    }
-//
-//    public void setNodeConnectors(List<GenericNodeConnector> services) {
-//        this.nodeConnectors = services;
-//
-//
-//    }
-//
-//    @Override
-//    public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) {
-//        return ((List<DirectoryNodeService>) directories).get(0);
-//
-//
-//    }
-//
-//    @Override
-//    public ExecutionNode getExecutionNode() {
-//        return getExecutionNode(null);
-//
-//    }
-}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -65,7 +65,7 @@
         DirectoryNodeService directory = null;
         try {
             //get best directory????????/
-            directory = connection.getDirectoryNode(null);
+            directory = connection.getDirectoryNode().get(DirectoryNodeService.class);
         } catch (ConnectorException ex) {
             Logger.getLogger(KnowledgeBaseGridClient.class.getName()).log(Level.SEVERE, null, ex);
         }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,110 @@
+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.DirectoryNodeService;
+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.GenericNodeConnector;
+import org.drools.grid.GridConnection;
+
+public class RioDirectoryConnector
+        implements GenericNodeConnector {
+
+    protected final String name;
+    protected AtomicInteger counter;
+    protected DirectoryNodeService directoryNode;
+    protected SocketAddress address;
+    protected SystemEventListener eventListener;
+
+    public RioDirectoryConnector(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;
+
+    }
+
+    public RioDirectoryConnector(String name,
+            SystemEventListener eventListener,
+            DirectoryNodeService directoryNode) {
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
+        }
+        this.name = name;
+        this.counter = new AtomicInteger();
+        this.eventListener = eventListener;
+        this.directoryNode = directoryNode;
+
+
+    }
+
+    
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        if (directoryNode != null) {
+
+
+            Message returnMessage = this.directoryNode.write(msg);
+            return returnMessage;
+
+
+        }
+        throw new IllegalStateException("sessionService should not be null");
+    }
+
+    public void write(Message msg,
+            MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getId() throws ConnectorException, RemoteException {
+
+        return directoryNode.getId();
+
+
+    }
+
+    public void setNodeService(Object object) {
+        this.directoryNode = (DirectoryNodeService) object;
+
+
+    }
+
+    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 new GridConnection();
+    }
+
+    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/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioNodeConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioNodeConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -59,7 +59,7 @@
 
 
         }
-        throw new IllegalStateException("sessionService should not be null");
+        throw new IllegalStateException("executionNode should not be null");
     }
 
     public void write(Message msg,
@@ -99,4 +99,12 @@
     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/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -11,16 +11,19 @@
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
 import org.drools.KnowledgeBase;
 import org.drools.command.KnowledgeContextResolveFromContextCommand;
 import org.drools.command.runtime.GetKnowledgeBaseCommand;
 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.ExecutionNodeService;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.MessageResponseHandler;
 
 
 /**
@@ -141,18 +144,15 @@
 
     @Override
     public void connect() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
+        // do nothing, we don't need connect in distributed environments
     }
 
     @Override
     public void disconnect() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
+        // do nothing, we don't need disconnect in distributed environments
     }
 
-    @Override
-    public DirectoryNodeService getDirectoryNodeService() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
+    
 
     @Override
     public GenericConnection getConnection() {
@@ -179,5 +179,35 @@
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    @Override
+    public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 
+    @Override
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
+        return new DistributedConnectionDirectory();
+    }
+
+    @Override
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void write(Message msg, MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+
 }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,76 @@
+/*
+ *  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.impl;
+
+import java.io.Serializable;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import org.drools.grid.ConnectorType;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.NodeConnectionType;
+import org.drools.grid.distributed.DirectoryNodeServiceGridClient;
+
+/**
+ *
+ * @author salaboy 
+ */
+public class DistributedConnectionDirectory implements NodeConnectionType, Serializable {
+
+    private final Map<Class<?>, Object> services = new ConcurrentHashMap<Class<?>, Object>();
+    private GenericNodeConnector connector;
+    private GenericConnection connection;
+
+    public DistributedConnectionDirectory() {
+    }
+
+    
+
+
+    public DistributedConnectionDirectory(GenericNodeConnector connector, GenericConnection connection) {
+        this.connector = connector;
+        this.connection = connection;
+    }
+
+    
+
+    public void init() {
+        services.put(DirectoryNodeService.class, new DirectoryNodeServiceGridClient(connector, connection) );
+    }
+
+    public Set<Class<?>> getServicesKeys() {
+        return services.keySet();
+    }
+
+    public <T> T getServiceImpl(Class<T> clazz) {
+        return (T) services.get(clazz);
+    }
+
+    public void setConnector(GenericNodeConnector connector) {
+        //not needed
+    }
+
+    public void setConnection(GenericConnection connection) {
+        //not needed
+    }
+
+    public ConnectorType getConnectorType() {
+        return ConnectorType.DISTRIBUTED;
+    }
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy	2010-07-16 21:47:33 UTC (rev 33963)
@@ -3,7 +3,7 @@
 
 import org.rioproject.resources.servicecore.Service
 
-deployment(name:'executionNodeService',  debug: 'true') {
+deployment(name:'directoryNodeService',  debug: 'true') {
 
     logging {
         logger 'org.rioproject.resolver', Level.ALL
@@ -24,22 +24,7 @@
      * Declare the service to be deployed. The number of instances deployed
      * defaults to 1. If you require > 1 instances change as needed
      */
-//    service(name: 'ExecutionNodeService') {
-//        interfaces {
-//            classes 'org.drools.grid.ExecutionNodeService'
-//            artifact ref:'service-dl'
-//        }
-//        implementation(class:'org.drools.grid.distributed.impl.ExecutionNodeServiceImpl') {
-//            artifact ref:'service'
-//        }
-//        /*sla(id:'load', low:10, high: 30) {
-//            rule resource: 'ScalingRuleHandler', max:5
-//        }*/
-////        sla(id:'ksessionCounter', low:1, high: 4) {
-////            rule resource: 'ScalingRuleHandlerCounter', max:5
-////        }
-//        maintain 2
-//    }
+
     service(name: 'DirectoryNodeService') {
         interfaces {
             classes 'org.drools.grid.DirectoryNodeService'
@@ -49,32 +34,10 @@
             artifact ref:'service'
         }
 
-        association (name:'ExecutionNodeService', type:'uses', property:'nodeServices')
+        association (name:'ExecutionNodeService', type:'uses', property:'executionNodes')
 
         maintain 1
     }
 
-//    service(name: 'Gnostic') {
-//        interfaces {
-//            classes 'org.rioproject.gnostic.Gnostic'
-//            artifact ref: 'service-dl'
-//        }
-//        implementation(class: 'org.rioproject.gnostic.GnosticImpl') {
-//            artifact ref: 'service'
-//        }
-//
-//        parameters {
-//            parameter name: "create-core-associations", value: "yes"
-//        }
-//
-//        associations {
-//            ['ExecutionNodeService'].each {
-//                association name: "$it",
-//                            type: 'uses', property: 'service',
-//                            serviceType: Service.name
-//            }
-//        }
-//        maintain 1
-//    }
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -50,7 +50,7 @@
 //        node = connection.getExecutionNode();
 //        System.out.println("ExecutionNode = "+ node);
 
-        directory = connection.getDirectoryNode();
+        directory = connection.getDirectoryNode().get(DirectoryNodeService.class);
         System.out.println("Directory Node = "+directory);
 
 

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml	2010-07-16 21:47:33 UTC (rev 33963)
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>drools-grid</artifactId>
-    <groupId>org.drools</groupId>
-    <version>5.1.0.SNAPSHOT</version>
-  </parent>
-  <artifactId>drools-grid-distributed-rio</artifactId>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>drools-grid</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.1.0.SNAPSHOT</version>
+    </parent>
+    <artifactId>drools-grid-distributed-rio</artifactId>
   
-  <name>Drools :: Grid :: Distributed Node :: Rio</name>
-  <packaging>oar</packaging>
+    <name>Drools :: Grid :: Distributed Node :: Rio</name>
+    <packaging>oar</packaging>
 
-  <dependencies>
+    <dependencies>
 
       <!-- Drools Runtime -->
         <dependency>
@@ -33,20 +33,27 @@
 
         </dependency>
 
-    <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-grid-api</artifactId>
-      <version>5.1.0.SNAPSHOT</version>
-    </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
 
-     <dependency>
-      <groupId>org.drools</groupId>
-      <artifactId>drools-grid-distributed-api</artifactId>
-      <version>5.1.0.SNAPSHOT</version>
-    </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-distributed-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
 
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-distributed-dir-rio</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+           
+        </dependency>
+
      <!-- RIO Runtime -->
-         <dependency>
+        <dependency>
             <groupId>org.rioproject</groupId>
             <artifactId>rio</artifactId>
             <version>4.1-SNAPSHOT</version>
@@ -69,20 +76,20 @@
         </dependency>
 
 
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.8.1</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>net.jini</groupId>
-      <artifactId>jsk-lib</artifactId>
-      <version>2.1</version>
-      <type>jar</type>
-    </dependency>
-  </dependencies>
-  <build>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>net.jini</groupId>
+            <artifactId>jsk-lib</artifactId>
+            <version>2.1</version>
+            <type>jar</type>
+        </dependency>
+    </dependencies>
+    <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -98,7 +105,7 @@
                         </ins>
                         <topclasses>
                             <topclass>org.drools.grid.ExecutionNodeService</topclass>
-                            <!--topclass>org.drools.grid.generic.DirectoryNodeService</topclass-->
+                            <topclass>org.drools.grid.generic.DirectoryNodeService</topclass>
                             <topclass>org.drools.grid.distributed.RioNodeConnector</topclass>
                             <topclass>org.drools.grid.distributed.util.IDEntry</topclass>
                             <topclass>org.drools.grid.distributed.command.NewStatefulKnowledgeSessionGridCommand</topclass>
@@ -106,6 +113,7 @@
                             <!--topclass>org.rioproject.gnostic.Gnostic</topclass-->
                         </topclasses>
                     </createJar>
+                    
                 </configuration>
             </plugin>
             <plugin>

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -18,6 +18,7 @@
 
 import java.rmi.RemoteException;
 import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.drools.SystemEventListener;
 import org.drools.SystemEventListenerFactory;
@@ -92,6 +93,7 @@
         context.getWatchRegistry().register(loadWatch);
         context.getWatchRegistry().register(ksessionCounter);
         instanceID = context.getServiceBeanConfig().getInstanceID();
+        
     }
 
     @Override
@@ -175,7 +177,17 @@
         return ConnectorType.DISTRIBUTED;
     }
 
+    @Override
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 
+    @Override
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 
+
+
   
 }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,40 @@
+package org.rioproject.gnostic;
+
+import org.rioproject.system.measurable.cpu.CalculableCPU;
+import org.rioproject.system.measurable.memory.CalculableMemory;
+import org.rioproject.gnostic.test.TestService;
+import org.rioproject.gnostic.test.TestService.Status;
+
+global org.rioproject.gnostic.DeployedServiceContext context;
+
+
+declare Calculable
+    @role(event)
+    @timestamp(when)
+end
+
+declare CalculableCPU
+    @role(event)
+    @timestamp(when)
+end
+
+declare CalculableMemory
+    @role(event)
+    @timestamp(when)
+end
+
+
+rule "1 ksession == scale"
+when
+    // $cpu : Number(doubleValue > 0.02)
+    //          from accumulate(CalculableCPU($value : value) over window:time(1m)
+    //          from entry-point "calculables-stream", average($value))
+    // $mem : Number(doubleValue > 0.1)
+    //          from accumulate(CalculableMemory($value : value) over window:time(1m)
+    //         from entry-point "calculables-stream", average($value)) 
+            Calculable(id == "ksessionCounter", value == 1 ) from entry-point "calculables-stream"
+then
+    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Scaling!!");
+   // context.increment("ExecutionNodeService", "executionNodeService");
+
+end
\ No newline at end of file

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy	2010-07-16 21:47:33 UTC (rev 33963)
@@ -2,6 +2,7 @@
 import java.util.logging.Level
 
 import org.rioproject.resources.servicecore.Service
+import org.rioproject.system.SystemWatchID
 
 deployment(name:'executionNodeService',  debug: 'true') {
 
@@ -24,7 +25,7 @@
      * Declare the service to be deployed. The number of instances deployed
      * defaults to 1. If you require > 1 instances change as needed
      */
-    service(name: 'ExecutionNodeService') {
+    service(name: 'ExecutionNodeService', fork: 'yes') { //fork yes, works only in unix machines
         interfaces {
             classes 'org.drools.grid.ExecutionNodeService'
             artifact ref:'service-dl'
@@ -32,49 +33,24 @@
         implementation(class:'org.drools.grid.distributed.impl.ExecutionNodeServiceImpl') {
             artifact ref:'service'
         }
-        /*sla(id:'load', low:10, high: 30) {
-            rule resource: 'ScalingRuleHandler', max:5
-        }*/
-//        sla(id:'ksessionCounter', low:1, high: 4) {
-//            rule resource: 'ScalingRuleHandlerCounter', max:5
-//        }
+
+
+       
+
+
         maintain 2
     }
-//    service(name: 'DirectoryNodeService') {
-//        interfaces {
-//            classes 'org.drools.grid.DirectoryNodeService'
-//            artifact ref:'service-dl'
-//        }
-//        implementation(class:'org.drools.grid.distributed.impl.DirectoryNodeServiceImpl') {
-//            artifact ref:'service'
-//        }
-//
-//        association (name:'ExecutionNodeService', type:'uses', property:'nodeServices')
-//
-//        maintain 1
-//    }
 
-//    service(name: 'Gnostic') {
-//        interfaces {
-//            classes 'org.rioproject.gnostic.Gnostic'
-//            artifact ref: 'service-dl'
-//        }
-//        implementation(class: 'org.rioproject.gnostic.GnosticImpl') {
-//            artifact ref: 'service'
-//        }
-//
-//        parameters {
-//            parameter name: "create-core-associations", value: "yes"
-//        }
-//
-//        associations {
-//            ['ExecutionNodeService'].each {
-//                association name: "$it",
-//                            type: 'uses', property: 'service',
-//                            serviceType: Service.name
-//            }
-//        }
-//        maintain 1
-//    }
 
+    rules {
+        rule{
+            resource 'SLAKsessions'
+            ruleClassPath 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
+            serviceFeed(name: "ExecutionNodeService") {
+                watches "ksessionCounter, ${SystemWatchID.SYSTEM_CPU}, ${SystemWatchID.JVM_MEMORY}"
+            }
+        }
+    }
+
+
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/conf/test-config.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/conf/test-config.groovy	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/conf/test-config.groovy	2010-07-16 21:47:33 UTC (rev 33963)
@@ -6,7 +6,7 @@
     numCybernodes = 1
     numMonitors = 1
     //numLookups = 1
-    opstring = 'src/main/resources/org/drools/executionNodeService.groovy'
+    opstring = 'src/test/resources/org/drools/executionNodeServiceTest.groovy'
     autoDeploy = true
     //harvest = true
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -313,7 +313,8 @@
 
 //   @Test
 //   public void scalingUp(){
-//       for(int i=1; i<20; i++) {
+//       for(int i=1; i<5; i++) {
+//
 //       List<GenericNodeConnector> services = connection.getNodeConnectors();
 //         for(GenericNodeConnector serviceConnector : services) {
 //             if(serviceConnector instanceof ExecutionNodeService){

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -6,6 +6,7 @@
 import junit.framework.Assert;
 
 import net.jini.core.lookup.ServiceItem;
+import org.drools.grid.DirectoryNodeService;
 import org.junit.After;
 
 
@@ -31,11 +32,11 @@
 //        //setup all the services using the Rio Test Framework
 //        //In real scenarios all this code will happen inside the connection.connect() method
 //
-//        DirectoryNodeService directoryService = (DirectoryNodeService) testManager.waitForService(DirectoryNodeService.class);
-//        Assert.assertNotNull(directoryService);
+        DirectoryNodeService directoryService = (DirectoryNodeService) testManager.waitForService(DirectoryNodeService.class);
+        Assert.assertNotNull(directoryService);
 //        Gnostic service = (Gnostic)testManager.waitForService(Gnostic.class);
 //
-//        connection.addDirectoryNode(directoryService);
+        connection.addDirectoryNode(directoryService);
 
         ExecutionNodeService executionNode = (ExecutionNodeService) testManager.waitForService(ExecutionNodeService.class);
         ServiceItem[] nodeServiceItems = testManager.getServiceItems(ExecutionNodeService.class);

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,40 @@
+package org.rioproject.gnostic;
+
+import org.rioproject.system.measurable.cpu.CalculableCPU;
+import org.rioproject.system.measurable.memory.CalculableMemory;
+import org.rioproject.gnostic.test.TestService;
+import org.rioproject.gnostic.test.TestService.Status;
+
+global org.rioproject.gnostic.DeployedServiceContext context;
+
+
+declare Calculable
+    @role(event)
+    @timestamp(when)
+end
+
+declare CalculableCPU
+    @role(event)
+    @timestamp(when)
+end
+
+declare CalculableMemory
+    @role(event)
+    @timestamp(when)
+end
+
+
+rule "1 ksession == scale"
+when
+    // $cpu : Number(doubleValue > 0.02)
+    //          from accumulate(CalculableCPU($value : value) over window:time(1m)
+    //          from entry-point "calculables-stream", average($value))
+    // $mem : Number(doubleValue > 0.1)
+    //          from accumulate(CalculableMemory($value : value) over window:time(1m)
+    //         from entry-point "calculables-stream", average($value)) 
+            Calculable(id == "ksessionCounter", value == 1 ) from entry-point "calculables-stream"
+then
+    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Scaling!!");
+   // context.increment("ExecutionNodeService", "executionNodeService");
+
+end
\ No newline at end of file

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,70 @@
+import org.rioproject.config.Constants
+import java.util.logging.Level
+
+import org.rioproject.resources.servicecore.Service
+import org.rioproject.system.SystemWatchID
+
+deployment(name:'executionNodeService',  debug: 'true') {
+
+    logging {
+        logger 'org.rioproject.resolver', Level.ALL
+        logger 'org.rioproject.associsations' , Level.ALL
+    }
+    /* Configuration for the discovery group that the service should join.
+     * This first checks if the org.rioproject.groups property is set, if not
+     * the user name is used */
+    groups System.getProperty(Constants.GROUPS_PROPERTY_NAME,
+                              System.getProperty('user.name'))
+
+    /* Declares the artifacts required for deployment. Note the 'dl'
+     * classifier used for the 'download' jar */
+    artifact id:'service-dir', 'org.drools:drools-grid-distributed-dir-rio:5.1.0.SNAPSHOT'
+    artifact id:'service-dir-dl', 'org.drools:drools-grid-distributed-dir-rio:dl:5.1.0.SNAPSHOT'
+    artifact id:'service', 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
+    artifact id:'service-dl', 'org.drools:drools-grid-distributed-rio:dl:5.1.0.SNAPSHOT'
+
+    /*
+     * Declare the service to be deployed. The number of instances deployed
+     * defaults to 1. If you require > 1 instances change as needed
+     */
+    service(name: 'ExecutionNodeService', fork: 'yes') { //fork yes, works only in unix machines
+        interfaces {
+            classes 'org.drools.grid.ExecutionNodeService'
+            artifact ref:'service-dl'
+        }
+        implementation(class:'org.drools.grid.distributed.impl.ExecutionNodeServiceImpl') {
+            artifact ref:'service'
+        }
+
+
+       
+
+
+        maintain 2
+    }
+    service(name: 'DirectoryNodeService') {
+        interfaces {
+            classes 'org.drools.grid.DirectoryNodeService'
+            artifact ref:'service-dir-dl'
+        }
+        implementation(class:'org.drools.distributed.directory.impl.DirectoryNodeServiceImpl') {
+            artifact ref:'service-dir'
+        }
+
+        association (name:'ExecutionNodeService', type:'uses', property:'executionNodes')
+
+        maintain 1
+    }
+
+    rules {
+        rule{
+            resource 'SLAKsessions'
+            ruleClassPath 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
+            serviceFeed(name: "ExecutionNodeService") {
+                watches "ksessionCounter, ${SystemWatchID.SYSTEM_CPU}, ${SystemWatchID.JVM_MEMORY}"
+            }
+        }
+    }
+
+
+}
\ No newline at end of file

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/KnowledgeBaseProviderLocalClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/KnowledgeBaseProviderLocalClient.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/KnowledgeBaseProviderLocalClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -61,7 +61,7 @@
         try{
             ConnectorType connectorType = nodeConnector.getConnectorType();
 
-            DirectoryNodeService directory = nodeConnector.getConnection().getDirectoryNode();
+            DirectoryNodeService directory = nodeConnector.getConnection().getDirectoryNode().get(DirectoryNodeService.class);
             if(connectorType == ConnectorType.LOCAL){
                 directory.registerKBase(kbaseId, kbase);
             }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnectionDirectory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnectionDirectory.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnectionDirectory.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,70 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid.local;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.grid.ConnectorType;
+import org.drools.grid.DirectoryNodeLocalImpl;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.NodeConnectionType;
+
+/**
+ *
+ * @author salaboy 
+ */
+public class LocalConnectionDirectory implements NodeConnectionType {
+    private final Map<Class<?>, Object> services = new ConcurrentHashMap<Class<?>, Object>();
+    private static DirectoryNodeService directory = new DirectoryNodeLocalImpl();
+
+    public LocalConnectionDirectory() {
+        services.put(DirectoryNodeService.class, directory);
+        
+    }
+
+    
+
+    public Set<Class<?>> getServicesKeys() {
+        return services.keySet(); 
+    }
+
+    public <T> T getServiceImpl(Class<T> clazz) {
+        return (T) services.get(clazz);
+    }
+
+    public void setConnector(GenericNodeConnector connector) {
+        //do nothing, we don't need a connector here
+    }
+
+    public void setConnection(GenericConnection connection) {
+        // do nothing, we don't need a connection here
+    }
+
+    public void init() {
+        // do nothing
+    }
+
+    public ConnectorType getConnectorType() {
+        return ConnectorType.LOCAL;
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalDirectoryConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -18,18 +18,22 @@
 package org.drools.grid.local;
 
 import java.rmi.RemoteException;
+import java.util.concurrent.atomic.AtomicInteger;
 import org.drools.grid.ConnectorException;
 import org.drools.grid.ConnectorType;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.GenericConnection;
-import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.GridConnection;
+import org.drools.grid.NodeConnectionType;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 
 /**
  *
  * @author salaboy
  */
-public class LocalDirectoryConnector implements GenericDirectoryConnector{
+public class LocalDirectoryConnector implements GenericNodeConnector{
     private DirectoryNodeService directoryNode;
     private GridConnection connection = new GridConnection();
 
@@ -41,7 +45,6 @@
     public void connect() throws ConnectorException {
         //do nothing
     }
-
     public void disconnect() throws ConnectorException {
         //do nothing
     }
@@ -50,9 +53,9 @@
         return "Local:Directory";
     }
 
-    public DirectoryNodeService getDirectoryNodeService(){
-        return directoryNode;
-    }
+//    public DirectoryNodeService getDirectoryNodeService(){
+//        return directoryNode;
+//    }
 
     public GenericConnection getConnection() {
         return connection;
@@ -62,4 +65,24 @@
         return ConnectorType.LOCAL;
     }
 
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
+        return new LocalConnectionDirectory();
+    }
+
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void write(Message msg, MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -17,6 +17,7 @@
 
 package org.drools.grid.local;
 
+import java.util.concurrent.atomic.AtomicInteger;
 import org.drools.grid.ConnectorException;
 import org.drools.grid.ConnectorType;
 import org.drools.grid.GenericConnection;
@@ -70,4 +71,12 @@
     public ConnectorType getConnectorType() {
         return ConnectorType.LOCAL;
     }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -63,7 +63,7 @@
                 throw new IllegalArgumentException("Type is not supported for registration");
             }
 
-            DirectoryNodeService directoryNode = connection.getDirectoryNode();
+            DirectoryNodeService directoryNode = connection.getDirectoryNode().get(DirectoryNodeService.class);
             try {
                 System.out.println("!!!!!!!!>>>>>>>>>>Registering in DirectoryNode the session = "+identifier);
                 directoryNode.register(identifier, client.getId());
@@ -107,7 +107,7 @@
             String commandId = "client.lookup" + messageSession.getNextId();
             String kresultsId = "kresults_" + messageSession.getSessionId();
             Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new LookupCommand(identifier, commandId), null, null, null, kresultsId));
-            DirectoryNodeService directoryNode = connection.getDirectoryNode();
+            DirectoryNodeService directoryNode = connection.getDirectoryNode().get(DirectoryNodeService.class);
             String connectorString = "";
             try {
                 connectorString = directoryNode.lookupId(identifier);
@@ -156,7 +156,7 @@
     public Map<String, String> getDirectoryMap() {
         Map<String, String> directory = null;
         try {
-            DirectoryNodeService directoryNode = connection.getDirectoryNode();
+            DirectoryNodeService directoryNode = connection.getDirectoryNode().get(DirectoryNodeService.class);
             directory = directoryNode.getExecutorsMap();
         } catch (RemoteException ex) {
             Logger.getLogger(DirectoryLookupProviderRemoteClient.class.getName()).log(Level.SEVERE, null, ex);

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/GenericConnectorFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/GenericConnectorFactory.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/GenericConnectorFactory.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -25,7 +25,6 @@
 import org.drools.SystemEventListenerFactory;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.ExecutionNodeService;
-import org.drools.grid.GenericDirectoryConnector;
 import org.drools.grid.GenericNodeConnector;
 
 /**
@@ -140,7 +139,7 @@
         return null;
     }
 
-    public static GenericDirectoryConnector newDirectoryConnector(String connectorString) {
+    public static GenericNodeConnector newDirectoryConnector(String connectorString) {
         String[] connectorDetails = connectorString.split(":");
         String connectorType = connectorDetails[0];
 
@@ -151,11 +150,11 @@
             String connectorName = connectorDetails[1];
             String connectorAddress = connectorDetails[2];
             String connectorPort = connectorDetails[3];
-            GenericDirectoryConnector connector = null;
+            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 = (GenericDirectoryConnector) constructor.newInstance(connectorName, connectorAddress,
+                connector = (GenericNodeConnector) constructor.newInstance(connectorName, connectorAddress,
                         Integer.valueOf(connectorPort), SystemEventListenerFactory.getSystemEventListener());
 
                 //return new MinaRemoteNodeConnector(connectorName, connectorAddress,
@@ -180,12 +179,12 @@
         }
 
         if (connectorType.equals("Local")) {
-            GenericDirectoryConnector connector = null;
+            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 = (GenericDirectoryConnector) constructor.newInstance(
+                connector = (GenericNodeConnector) constructor.newInstance(
                         (DirectoryNodeService) clazzDirectoryNodeServiceImpl.newInstance());
 
             } catch (InstantiationException ex) {
@@ -205,7 +204,7 @@
             }
 
             return connector;
-            //return new LocalDirectoryConnector(new DirectoryNodeLocalImpl());
+            
         }
 
         return null;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -99,7 +99,7 @@
                                                            localId,
                                                            new NewKnowledgeBaseCommand( null ) ) );
         try {
-            DirectoryNodeService directory = client.getConnection().getDirectoryNode();
+            DirectoryNodeService directory = client.getConnection().getDirectoryNode().get(DirectoryNodeService.class);
             
             directory.registerKBase(kbaseId, client.getId());
             directory.dispose();

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -21,12 +21,16 @@
 import java.util.ArrayList;
 import java.util.List;
 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.grid.ConnectorException;
 import org.drools.grid.ConnectorType;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.GenericConnection;
 import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.NodeConnectionType;
 import org.drools.grid.internal.Message;
 import org.drools.grid.internal.MessageResponseHandler;
 import org.drools.grid.internal.commands.SimpleCommand;
@@ -41,9 +45,9 @@
  * @author salaboy
  */
 public class DirectoryNodeRemoteClient implements DirectoryNodeService { 
-    private RemoteMinaDirectoryConnector connector;
+    private GenericNodeConnector connector;
 
-    DirectoryNodeRemoteClient(RemoteMinaDirectoryConnector connector) {
+    DirectoryNodeRemoteClient(GenericNodeConnector connector) {
         this.connector = connector;
     }
 
@@ -51,8 +55,8 @@
         List<Object> args = new ArrayList<Object>(2);
         args.add(executorId);
         args.add(resourceId);
-        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RegisterExecutor, args);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RegisterExecutor, args);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
         write(msg, handler);
         
@@ -66,8 +70,8 @@
         System.out.println(">>>>>>>>>>>>>>>>Looking for resource = "+resourceId);
         List<Object> args = new ArrayList<Object>(1);
         args.add(resourceId);
-        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestLookupSessionId, args);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestLookupSessionId, args);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
         SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
@@ -78,8 +82,8 @@
         List<Object> args = new ArrayList<Object>(2);
         args.add(kbaseId);
         args.add(resourceId);
-        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RegisterKBase, args);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RegisterKBase, args);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
         write(msg, handler);
     }
@@ -94,8 +98,8 @@
 
     public Map<String, String> getExecutorsMap() throws ConnectorException {
 
-        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestExecutorsMap, null);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestExecutorsMap, null);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
         SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
@@ -105,29 +109,29 @@
 
     
 
-    public void dispose() throws ConnectorException {
+    public void dispose() throws ConnectorException, RemoteException {
         this.connector.disconnect();
     }
 
     public String lookupId(String resourceId) throws ConnectorException {
         List<Object> args = new ArrayList<Object>(1);
         args.add(resourceId);
-        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestLookupSessionId, args);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestLookupSessionId, args);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
         SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
         return (String)resultcmd.getArguments().get(0);
     }
 
-     private Message write(Message msg) throws ConnectorException{
+     public Message write(Message msg) throws ConnectorException, RemoteException{
         BlockingMessageResponseHandler responseHandler = new BlockingMessageResponseHandler();
 
         if (responseHandler != null) {
             addResponseHandler(msg.getResponseId(),
                     responseHandler);
         }
-        this.connector.getSession().write(msg);
+        ((RemoteMinaDirectoryConnector)this.connector).getSession().write(msg);
 
         Message returnMessage = responseHandler.getMessage();
         if (responseHandler.getError() != null) {
@@ -137,17 +141,20 @@
         return returnMessage;
     }
 
-    private void write(Message msg, MessageResponseHandler responseHandler) {
+    public void write(Message msg, MessageResponseHandler responseHandler)  {
         if (responseHandler != null) {
             addResponseHandler(msg.getResponseId(),
                     responseHandler);
         }
-        this.connector.getSession().write(msg);
+       
+        ((RemoteMinaDirectoryConnector)this.connector).getSession().write(msg);
+        
+
     }
 
     private void addResponseHandler(int id,
             MessageResponseHandler responseHandler) {
-        ((MinaIoHandler) this.connector.getSession().getHandler()).addResponseHandler(id,
+        ((MinaIoHandler) ((RemoteMinaDirectoryConnector)this.connector).getSession().getHandler()).addResponseHandler(id,
                 responseHandler);
 
     }
@@ -179,15 +186,15 @@
     public void unregister(String executorId) throws ConnectorException, RemoteException {
         List<Object> args = new ArrayList<Object>(2);
         args.add(executorId);
-        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.UnRegisterExecutor, args);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.UnRegisterExecutor, args);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
         write(msg, handler);
     }
 
     public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException {
-       SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.RequestKBasesMap, null);
-        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+       SimpleCommand cmd = new SimpleCommand(connector.getCounter().getAndIncrement(), SimpleCommandName.RequestKBasesMap, null);
+        Message msg = new Message(connector.getSessionId(), connector.getCounter().incrementAndGet(), false, cmd);
         BlockingMessageDirectoryMapRequestResponseHandler handler = new BlockingMessageDirectoryMapRequestResponseHandler();
         write(msg, handler);
         SimpleCommand resultcmd = (SimpleCommand)handler.getMessage().getPayload();
@@ -198,4 +205,20 @@
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
+    public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
 }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaConnectionDirectory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaConnectionDirectory.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaConnectionDirectory.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -0,0 +1,63 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+package org.drools.grid.remote.directory;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import org.drools.grid.ConnectorType;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.NodeConnectionType;
+
+/**
+ *
+ * @author salaboy
+ */
+class RemoteMinaConnectionDirectory implements NodeConnectionType {
+
+    private final Map<Class<?>, Object> services = new ConcurrentHashMap<Class<?>, Object>();
+    private GenericNodeConnector connector;
+    private GenericConnection connection;
+    public RemoteMinaConnectionDirectory() {
+    }
+
+    public Set<Class<?>> getServicesKeys() {
+        return services.keySet();
+    }
+
+    public <T> T getServiceImpl(Class<T> clazz) {
+        return (T) services.get(clazz);
+    }
+
+    public void setConnector(GenericNodeConnector connector) {
+        this.connector = connector;
+    }
+
+    public void setConnection(GenericConnection connection) {
+        this.connection = connection;
+    }
+
+    public void init() {
+        services.put(DirectoryNodeService.class, new DirectoryNodeRemoteClient(connector));
+    }
+
+    public ConnectorType getConnectorType() {
+        return ConnectorType.LOCAL;
+    }
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/RemoteMinaDirectoryConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -34,24 +34,26 @@
 import org.drools.SystemEventListenerFactory;
 import org.drools.grid.ConnectorException;
 import org.drools.grid.ConnectorType;
-import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.GenericConnection;
-import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.GridConnection;
+import org.drools.grid.NodeConnectionType;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
 import org.drools.grid.remote.mina.MinaIoHandler;
 
 /**
  *
  * @author salaboy
  */
-public class RemoteMinaDirectoryConnector implements GenericDirectoryConnector{
+public class RemoteMinaDirectoryConnector implements GenericNodeConnector{
     private GridConnection connection;
     private String providerName;
     private SystemEventListener eventListener;
     protected IoSession session;
-    protected AtomicInteger counter;
-    protected SocketConnector connector;
-    protected SocketAddress address;
+    private AtomicInteger counter;
+    private SocketConnector connector;
+    private SocketAddress address;
 
     
 
@@ -71,9 +73,9 @@
 
     }
 
-    public DirectoryNodeService getDirectoryNodeService() {
-        return new DirectoryNodeRemoteClient(this);
-    }
+//    public DirectoryNodeService getDirectoryNodeService() {
+//        return new DirectoryNodeRemoteClient(this);
+//    }
 
     public void connect() throws ConnectorException {
         if (session != null && session.isConnected()) {
@@ -128,6 +130,24 @@
         return ConnectorType.REMOTE;
     }
 
+    public Message write(Message msg) throws ConnectorException, RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
+        return new RemoteMinaConnectionDirectory();
+        
+    }
+
+    public void write(Message msg, MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        return counter;
+    }
+
+    
 }
 
 

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/RemoteMinaNodeConnector.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -136,4 +136,12 @@
     public ConnectorType getConnectorType() {
         return ConnectorType.REMOTE;
     }
+
+    public int getSessionId() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public AtomicInteger getCounter() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -71,7 +71,7 @@
 
         //Client configuration
         connection = new GridConnection();
-        GenericDirectoryConnector localDirectory = new LocalDirectoryConnector(new DirectoryNodeLocalImpl());
+        GenericNodeConnector localDirectory = new LocalDirectoryConnector(new DirectoryNodeLocalImpl());
         connection.addDirectoryNode(localDirectory);
 
         // setup Client

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/DirectoryInstance.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/DirectoryInstance.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/DirectoryInstance.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -3,9 +3,9 @@
 import java.util.List;
 
 import org.drools.grid.ConnectorException;
-import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.DirectoryNode;
 import org.drools.grid.GenericConnection;
-import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.strategies.DirectorySelectionStrategy;
 
 /**
@@ -13,29 +13,29 @@
  */
 public class DirectoryInstance {
     private String name;
-    private GenericDirectoryConnector connector;
+    private GenericNodeConnector connector;
 
-    public DirectoryInstance(String name, GenericDirectoryConnector connector) {
+    public DirectoryInstance(String name, GenericNodeConnector connector) {
         this.name = name;
         this.connector = connector;
     }
 
-    public DirectoryNodeService getDirectoryService() throws ConnectorException {
+    public DirectoryNode getDirectoryService() throws ConnectorException {
         GenericConnection connection = getConnector().getConnection();
         return connection.getDirectoryNode();
     }
 
-    public DirectoryNodeService getDirectoryService(DirectorySelectionStrategy strategy) throws ConnectorException {
+    public DirectoryNode getDirectoryService(DirectorySelectionStrategy strategy) throws ConnectorException {
         GenericConnection connection = getConnector().getConnection();
         return connection.getDirectoryNode(strategy);
     }
 
-    public List<DirectoryNodeService> getDirectoryServices() throws ConnectorException {
+    public List<DirectoryNode> getDirectoryServices() throws ConnectorException {
         GenericConnection connection = getConnector().getConnection();
         return connection.getDirectoryNodes();
     }
 
-     public GenericDirectoryConnector getConnector(){
+     public GenericNodeConnector getConnector(){
         return this.connector;
     }
 

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GenericDirectoryProvider.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -2,7 +2,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
-import org.drools.grid.GenericDirectoryConnector;
+import org.drools.grid.GenericNodeConnector;
 
 /**
  * @author salaboy
@@ -11,8 +11,8 @@
     protected Map<String, Object> parameters = new HashMap<String, Object>();
 
 
-    public abstract GenericDirectoryConnector getDirectoryConnector();
-
+    public abstract GenericNodeConnector getDirectoryConnector();
+ 
     
     
     public void setParameter(String name, Object value){

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -9,7 +9,6 @@
 import org.drools.grid.ConnectorException;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.GenericConnection;
-import org.drools.grid.GenericDirectoryConnector;
 import org.drools.grid.GenericHumanTaskConnector;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.services.configuration.GenericProvider;
@@ -119,7 +118,7 @@
 
         DirectoryInstance directory = DirectoryInstanceFactory.newDirectoryInstance(name, provider);
 
-        GenericDirectoryConnector connector = directory.getConnector();
+        GenericNodeConnector connector = directory.getConnector();
         GenericConnection connection = connector.getConnection();
 
 
@@ -219,7 +218,7 @@
         for (DirectoryInstance directory : directories.values()) {
 
             try {
-                DirectoryNodeService directoryNode = directory.getDirectoryService();
+                DirectoryNodeService directoryNode = directory.getDirectoryService().get(DirectoryNodeService.class);
                 if (directoryNode != null) {
                     try {
                         directoryNode.register(name, resourceId);
@@ -242,7 +241,7 @@
         for (DirectoryInstance directory : directories.values()) {
 
             try {
-                DirectoryNodeService directoryNode = directory.getDirectoryService();
+                DirectoryNodeService directoryNode = directory.getDirectoryService().get(DirectoryNodeService.class);
                 if (directoryNode != null) {
                     try {
                         directoryNode.unregister(name);

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -83,7 +83,7 @@
         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull("Directory Instance null", directory);
 
-        DirectoryNodeService dir = directory.getDirectoryService();
+        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);;
         Assert.assertNotNull("Dir Null", dir);
 
         Assert.assertEquals(2, dir.getExecutorsMap().size());
@@ -111,7 +111,7 @@
         DirectoryInstance directory = grid.getDirectoryInstance("MyLocalDir");
         Assert.assertNotNull("DirInstance is null!",directory);
 
-        DirectoryNodeService dir = directory.getDirectoryService();
+        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);;
         Assert.assertNotNull("Dir is null!",dir);
         //This assertion is not deterministic
         //Assert.assertEquals(4, dir.getExecutorsMap().size());
@@ -119,7 +119,7 @@
         DirectoryInstance directory2 = grid.getDirectoryInstance("MyLocalDir2");
         Assert.assertNotNull("DirInstance 2 is null!",directory2);
 
-        DirectoryNodeService dir2 = directory2.getDirectoryService();
+        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());
@@ -189,7 +189,7 @@
          DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull("Directory Instance null", directory);
 
-       DirectoryNodeService dirService = directory.getDirectoryService();
+       DirectoryNodeService dirService = directory.getDirectoryService().get(DirectoryNodeService.class);;
        kbase = dirService.lookupKBase("DoctorsKBase");
        Assert.assertNotNull(kbase);
 

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java	2010-07-16 21:44:22 UTC (rev 33962)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterMinaDirectoryTest.java	2010-07-16 21:47:33 UTC (rev 33963)
@@ -145,7 +145,7 @@
         DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
         Assert.assertNotNull(directory);
 
-        DirectoryNodeService dir = directory.getDirectoryService();
+        DirectoryNodeService dir = directory.getDirectoryService().get(DirectoryNodeService.class);
         Assert.assertNotNull(dir);
 
         Assert.assertNotNull("Dir Null", dir.getExecutorsMap());
@@ -290,7 +290,7 @@
 
         node.get(DirectoryLookupFactoryService.class).register("sessionName", ksession);
         DirectoryInstance directoryInstance = grid.getDirectoryInstance();
-        DirectoryNodeService directory = directoryInstance.getDirectoryService();
+        DirectoryNodeService directory = directoryInstance.getDirectoryService().get(DirectoryNodeService.class);
         GenericNodeConnector connector = directory.lookup("sessionName");
         
         directoryInstance.getConnector().disconnect();



More information about the jboss-svn-commits mailing list