[jboss-svn-commits] JBL Code SVN: r32162 - in labs/jbossrules/branches/salaboy_ServiceAPIs: drools-services-grid/src/main/java/org/drools/services/grid and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Mar 21 00:18:30 EDT 2010


Author: salaboy21
Date: 2010-03-21 00:18:29 -0400 (Sun, 21 Mar 2010)
New Revision: 32162

Added:
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java
Modified:
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java
Log:
heavy refactoring, tomorrow need to add some tests and do a little modifications

Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/generic/MessageSession.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,57 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.services.generic;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MessageSession {
+
+    public AtomicInteger    counter;
+    private int sessionId = -1;
+
+    public MessageSession() {
+        counter = new AtomicInteger();
+    }
+
+
+
+    public AtomicInteger getCounter() {
+        return counter;
+    }
+
+    public void setCounter(AtomicInteger counter) {
+        this.counter = counter;
+    }
+
+    public int getSessionId() {
+        return sessionId;
+    }
+
+    public void setSessionId(int sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public int getNextId() {
+        return this.counter.incrementAndGet();
+    }
+
+}

Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,29 @@
+/*
+ *  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.services.grid;
+
+import org.drools.runtime.CommandExecutor;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface DirectoryLookupFactoryService {
+    public void register(String key, CommandExecutor value);
+    public CommandExecutor lookup(String key);
+}

Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,146 @@
+/*
+ *  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.services.grid;
+
+import java.rmi.RemoteException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.command.LookupCommand;
+import org.drools.services.command.RegisterCommand;
+import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryLookupProviderGridClient implements DirectoryLookupFactoryService {
+
+    private ExecutionGridConnection gridClient;
+    private GridNodeExecutionService currentService;
+    private MessageSession messageSession;
+
+  
+
+    public DirectoryLookupProviderGridClient(GridNodeExecutionService currentService, ExecutionGridConnection gridClient) {
+        this.currentService = currentService;
+        this.gridClient = gridClient;
+        this.messageSession = new MessageSession();
+    }
+
+    public void register(String identifier,
+                         CommandExecutor executor) {
+        try {
+            String commandId = "client.lookup" + messageSession.getNextId();
+            String kresultsId = "kresults_" + messageSession.getSessionId();
+            int type;
+
+
+            if ( executor instanceof StatefulKnowledgeSession ) {
+                type = 0;
+            } else {
+                throw new IllegalArgumentException("Type is not supported for registration");
+            }
+            Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionGridClient) executor).getInstanceId(), type), null, null, null, null));
+            System.out.println("Registering " + identifier + " - - " + currentService.getId());
+            try {
+                DirectoryService directory = (DirectoryService) gridClient.getDirectories().iterator().next();
+                if (directory != null) {
+                    directory.register(identifier, currentService.getId());
+                } else {
+                    System.out.println("Directory == NULL!!!!!!!!");
+                }
+            } catch (RemoteException ex) {
+                Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            try {
+                Object object = currentService.write(msg).getPayload();
+                if (!(object instanceof FinishedCommand)) {
+                    throw new RuntimeException("Response was not correctly ended");
+                }
+            } catch (Exception e) {
+                throw new RuntimeException("Unable to execute message", e);
+            }
+        } catch ( RemoteException ex ) {
+            Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public CommandExecutor lookup(String identifier) {
+        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 ) );
+        System.out.println("Looking up the session with identifier = "+identifier);
+            try {
+            //First I need to get the correct client GridNodeExecutionService with the identifier
+            DirectoryService directory = (DirectoryService) gridClient.getDirectories().iterator().next();
+            if(directory != null){
+                System.out.println("Setting session for identifier = "+identifier +"   - client ="+currentService);
+                //HMMMMMMM?? is this correct?
+                
+                currentService = directory.lookup(identifier);
+            }else{
+                System.out.println("Directory == NULL!!!!!!!!");
+            }
+        } catch (RemoteException ex) {
+            Logger.getLogger(DirectoryLookupProviderGridClient.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        try {
+            Object object = currentService.write( msg ).getPayload();
+
+            if ( object == null ) {
+                throw new RuntimeException( "Response was not correctly received" );
+            }
+            String value = (String) ((ExecutionResults) object).getValue( commandId );
+            String type = String.valueOf( value.charAt( 0 ) );
+            String instanceId = value.substring( 2 );
+
+            CommandExecutor executor = null;
+            switch ( Integer.parseInt( type ) ) {
+                case 0 : {
+                    executor = new StatefulKnowledgeSessionGridClient( instanceId, currentService, messageSession );
+                    break;
+                }
+                default : {
+
+                }
+
+            }
+
+            return executor;
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -14,71 +14,104 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.services.grid;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.services.ExecutionNode;
+import org.drools.services.grid.strategies.RandomSelectionStrategy;
 
 /**
  *
  * @author salaboy
  */
+//Should I rename this class to something like GridClient?
 public class ExecutionGridConnection {
-    private List<ExecutionNode> nodes;
-   // private DirectoryService directory;
-    private String url;
 
+    //Cached Services
+    private List<GridNodeExecutionService> services;
+
+
+    //Cached Directories
+    private List<DirectoryService> directories;
+
+    //Clients
+    //private List<>
+
+ 
     public ExecutionGridConnection() {
-        this.nodes = new ArrayList<ExecutionNode>();
+        this.services = new ArrayList<GridNodeExecutionService>();
+        this.directories = new ArrayList<DirectoryService>();
     }
 
-    public void addNode(ExecutionNode node) {
 
-       this.nodes.add(node);
 
+    public void addService(GridNodeExecutionService service) {
+
+        this.services.add(service);
+
     }
 
-    public ExecutionGridConnection(String url) {
-        this.url = url;
+    public void addDirectory(DirectoryService directory) {
+        this.directories.add(directory);
     }
 
-    public List<ExecutionNode> connect(){
-        return this.nodes;
+
+
+
+    //This will use the default/random strategy
+    public ExecutionNode getExecutionNode() {
+        GridNodeExecutionService currentService = getBestService(
+                                                    new RandomSelectionStrategy(this));
+        ExecutionNode node = new ExecutionNode();
+        node.set(KnowledgeBuilderFactoryService.class,
+                new KnowledgeBuilderProviderGridClient( currentService, this ));
+        
+        node.set(KnowledgeBaseFactoryService.class,
+                new KnowledgeBaseProviderGridClient( currentService, this ));
+
+
+        node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentService,this));
+
+//                            new GridExecutionNodeConnection
+//                            ((GridNodeExecutionService)currentService).getId(),
+//
+//
+//                                new RioConnector("client1",SystemEventListenerFactory.getSystemEventListener(),
+//                                    (GridNodeExecutionService)currentService)
+//                                    ,env)
+                           
+        return node;
     }
 
-    public List<ExecutionNode> getNodes() {
-        return nodes;
+    //This will use the strategy to return a new Execution Node
+    public ExecutionNode getExecutionNode(GridSelectionStrategy strategy){
+        return new ExecutionNode();
     }
 
-    public void setNodes(List<ExecutionNode> nodes) {
-        this.nodes = nodes;
+    private GridNodeExecutionService getBestService(GridSelectionStrategy gridSelectionStrategy) {
+        return gridSelectionStrategy.getBestNode();
     }
 
-    public String getUrl() {
-        return url;
+
+
+    public List<DirectoryService> getDirectories() {
+        return directories;
     }
 
-    public void setUrl(String url) {
-        this.url = url;
+    public void setDirectories(List<DirectoryService> directories) {
+        this.directories = directories;
     }
 
-//    public DirectoryService getDirectory() {
-//        return directory;
-//    }
-//
-//    public void setDirectory(DirectoryService directory) {
-//        this.directory = directory;
-//    }
-    //dummy impls
-    public ExecutionNode getPreferedExecutionNode() {
-        return nodes.get(0);
+    public List<GridNodeExecutionService> getServices() {
+        return services;
     }
-    public ExecutionNode getAnotherExecutionNode(){
-        return nodes.get(1);
+
+    public void setServices(List<GridNodeExecutionService> services) {
+        this.services = services;
     }
 
     
-    
 }

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridExecutionNodeConnection.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -1,12 +1,9 @@
 package org.drools.services.grid;
 
-import java.rmi.RemoteException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactoryService;
@@ -16,20 +13,17 @@
 import org.drools.builder.KnowledgeBuilderConfiguration;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.command.Command;
-import org.drools.command.FinishedCommand;
 import org.drools.command.KnowledgeContextResolveFromContextCommand;
 
 import org.drools.persistence.jpa.JPAKnowledgeServiceProvider;
 import org.drools.runtime.CommandExecutor;
 import org.drools.runtime.Environment;
 import org.drools.runtime.ExecutionResults;
-import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.services.ServiceManager;
 import org.drools.services.command.ExecutionNodeClientConnectCommand;
-import org.drools.services.command.LookupCommand;
-import org.drools.services.command.RegisterCommand;
 import org.drools.services.generic.GenericConnector;
 import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
 
 
 
@@ -37,27 +31,22 @@
 public class GridExecutionNodeConnection
     implements
     ServiceManager {
-	private String name;
 
-    public GenericConnector client;
+    private MessageSession messageSession;
 
-    private List<GenericConnector> services;
 
-    public AtomicInteger    counter;
 
-    private int sessionId = -1;
+    public GenericConnector client;
+    private ExecutionGridConnection gridClient;
+    
 
-    //@TODO: i need to refactor this to a service in the list of services???
-    //private DirectoryService directoryService;
-
-    private Environment env;
-
-    public GridExecutionNodeConnection(String name, GenericConnector client, Environment env) {
-    	this.name = name;
+    public GridExecutionNodeConnection(GenericConnector client, MessageSession messageSession, ExecutionGridConnection gridClient) {
+    
     	this.client = client;
-    	this.counter = new AtomicInteger();
-        this.services = null;
-        this.env = env;
+    	this.messageSession =  messageSession;
+        
+        this.gridClient = gridClient;
+        
     }
     
   
@@ -68,11 +57,11 @@
         boolean connected = this.client.connect();
 
         if ( connected ) {
-            String commandId = "serviceManager.connected" + getNextId();
-            String kresultsId = "kresults_" + getSessionId();
+            String commandId = "serviceManager.connected" + messageSession.getNextId();
+            String kresultsId = "kresults_" + messageSession.getSessionId();
 
             Message msg = new Message( -1,
-                                       counter.incrementAndGet(),
+                                       messageSession.counter.incrementAndGet(),
                                        false,
                                        new KnowledgeContextResolveFromContextCommand( new ExecutionNodeClientConnectCommand( commandId ),
                                                                                       null,
@@ -87,7 +76,7 @@
                     throw new RuntimeException( "Response was not correctly received" );
                 }
 
-                sessionId = (Integer) ((ExecutionResults) object).getValue( commandId );
+                messageSession.setSessionId((Integer) ((ExecutionResults) object).getValue( commandId ));
 
                 connected = true;
             } catch ( Exception e ) {
@@ -96,25 +85,25 @@
             }
         }
         // Connecting with services
-        if (this.services != null) {
-        	for (GenericConnector connector : services){
-        		boolean serviceConnected = connector.connect();
-        		if ( serviceConnected ){
-        			System.out.println("Service Connected");
-                        }
-        	}
-        }
+//        if (this.services != null) {
+//        	for (GenericConnector connector : services){
+//        		boolean serviceConnected = connector.connect();
+//        		if ( serviceConnected ){
+//        			System.out.println("Service Connected");
+//                        }
+//        	}
+//        }
 
         return connected;
     }
 
 	public void disconnect() {
 		this.client.disconnect();
-		if (this.services != null){
-			for (GenericConnector connector : this.services){
-				connector.disconnect();
-                        }
-                }
+//		if (this.services != null){
+//			for (GenericConnector connector : this.services){
+//				connector.disconnect();
+//                        }
+//                }
 	}
 
    
@@ -139,119 +128,33 @@
         return null;
     }
 
-    public void register(String identifier,
-                         CommandExecutor executor) {
-        String commandId = "client.lookup" + getNextId();
-        String kresultsId = "kresults_" + getSessionId();
+   
+    public void release(Object object) {
+        // TODO Auto-generated method stub
+    }
 
-        int type;
-        if ( executor instanceof StatefulKnowledgeSession ) {
-            type = 0;
-        } else {
-            throw new IllegalArgumentException( "Type is not supported for registration" );
-        }
+    public void release(String identifier) {
+        // TODO Auto-generated method stub
+    }
 
-        Message msg = new Message( getSessionId(),
-                                   counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new RegisterCommand( identifier,
-                                                                                                       ((StatefulKnowledgeSessionGridClient) executor).getInstanceId(),
-                                                                                                       type ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  null,
-                                                                                  null ) );
-        System.out.println("Registering "+identifier + " - - "+client.getId());
-        try {
-            
-            DirectoryService directory = (DirectoryService) env.get("DIRECTORY_SERVICE");
-            if(directory != null){
-                
-                directory.register(identifier, client.getId());
-            }
-            else{
-                System.out.println("Directory == NULL!!!!!!!!");
-            }
-        } catch (RemoteException ex) {
-            Logger.getLogger(GridExecutionNodeConnection.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        try {
-
-
-            Object object = client.write( msg ).getPayload();
-            
-            
-            if ( !(object instanceof FinishedCommand) ) {
-                throw new RuntimeException( "Response was not correctly ended" );
-            }
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
-        }
+    @Override
+    public KnowledgeBuilderFactoryService getKnowledgeBuilderFactoryService() {
+        throw new UnsupportedOperationException("Not supported yet.");
     }
 
-    public CommandExecutor lookup(String identifier) {
-        String commandId = "client.lookup" + getNextId();
-        String kresultsId = "kresults_" + getSessionId();
-
-        Message msg = new Message( getSessionId(),
-                                   counter.incrementAndGet(),
-                                   false,
-                                   new KnowledgeContextResolveFromContextCommand( new LookupCommand( identifier,
-                                                                                                     commandId ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  null,
-                                                                                  kresultsId ) );
-        System.out.println("Looking up the session with identifier = "+identifier);
-            try {
-            //First I need to get the correct client GridNodeExecutionService with the identifier
-            DirectoryService directory = (DirectoryService) env.get("DIRECTORY_SERVICE");
-            if(directory != null){
-                System.out.println("Setting session for identifier = "+identifier +"   - client ="+client);
-                client.setSession(directory.lookup(identifier));
-            }else{
-                System.out.println("Directory == NULL!!!!!!!!");
-            }
-        } catch (RemoteException ex) {
-            Logger.getLogger(GridExecutionNodeConnection.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        try {
-            Object object = client.write( msg ).getPayload();
-
-            if ( object == null ) {
-                throw new RuntimeException( "Response was not correctly received" );
-            }
-            String value = (String) ((ExecutionResults) object).getValue( commandId );
-            String type = String.valueOf( value.charAt( 0 ) );
-            String instanceId = value.substring( 2 );
-
-            CommandExecutor executor = null;
-            switch ( Integer.parseInt( type ) ) {
-                case 0 : {
-                    executor = new StatefulKnowledgeSessionGridClient( instanceId,
-                                                                         this , env);
-                    break;
-                }
-                default : {
-
-                }
-
-            }
-
-            return executor;
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
-        }
+    @Override
+    public KnowledgeBaseFactoryService getKnowledgeBaseFactoryService() {
+        throw new UnsupportedOperationException("Not supported yet.");
     }
 
-    public void release(Object object) {
-        // TODO Auto-generated method stub
+    @Override
+    public void register(String identifier, CommandExecutor executor) {
+        throw new UnsupportedOperationException("Not supported yet.");
     }
 
-    public void release(String identifier) {
-        // TODO Auto-generated method stub
+    @Override
+    public CommandExecutor lookup(String identifer) {
+        throw new UnsupportedOperationException("Not supported yet.");
     }
 
 //    public HumanTaskServiceProvider getHumanTaskService() {
@@ -260,16 +163,16 @@
 //        return null;
 //    }
 
-    @Override
-    public KnowledgeBuilderFactoryService getKnowledgeBuilderFactoryService() {
-        return new KnowledgeBuilderProviderGridClient( this, env );
-    }
+//    @Override
+//    public KnowledgeBuilderFactoryService getKnowledgeBuilderFactoryService() {
+//        return new KnowledgeBuilderProviderGridClient( this, gridClient );
+//    }
+//
+//    @Override
+//    public KnowledgeBaseFactoryService getKnowledgeBaseFactoryService() {
+//        return new KnowledgeBaseProviderGridClient( this, gridClient );
+//    }
 
-    @Override
-    public KnowledgeBaseFactoryService getKnowledgeBaseFactoryService() {
-        return new KnowledgeBaseProviderGridClient( this, env );
-    }
-
     public static class RemoveKnowledgeBuilderProvider implements KnowledgeBuilderFactoryService {
 
         public DecisionTableConfiguration newDecisionTableConfiguration() {
@@ -310,26 +213,26 @@
         }
     }
 
-    public int getSessionId() {
-        return sessionId;
-    }
+//    public int getSessionId() {
+//        return sessionId;
+//    }
+//
+//    public int getNextId() {
+//        return this.counter.incrementAndGet();
+//    }
 
-    public int getNextId() {
-        return this.counter.incrementAndGet();
-    }
-
     public ExecutionResults execute(Command command) {
         // TODO Auto-generated method stub
         return null;
     }
 
-	public List<GenericConnector> getServices() {
-		return services;
-	}
-	
-	public String getName() {
-		return this.name;
-	}
+//	public List<GenericConnector> getServices() {
+//		return services;
+//	}
+//
+//	public String getName() {
+//		return this.name;
+//	}
 
 //    public DirectoryService getRegistryService() {
 //        return directoryService;
@@ -342,6 +245,14 @@
     public void setCurrentSessionService(GridNodeExecutionService sessionService){
         this.client.setSession(sessionService);
     }
+
+    public MessageSession getMessageSession() {
+        return messageSession;
+    }
+
+    public void setMessageSession(MessageSession messageSession) {
+        this.messageSession = messageSession;
+    }
     
 //    public List<GridNodeExecutionService> getSessionServices(){
 ////        List<GridNodeExecutionService> sessionServices =
@@ -358,4 +269,6 @@
 //        return ((RioConnector)this.client).getNodeServices();
 //    }
 //
+
+    
 }

Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/GridSelectionStrategy.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,29 @@
+/*
+ *  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.services.grid;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface GridSelectionStrategy {
+
+    public GridNodeExecutionService getBestNode();
+
+
+}

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -24,6 +24,7 @@
 import org.drools.services.generic.CollectionClient;
 import org.drools.services.generic.Message;
 import org.drools.services.grid.command.NewStatefulKnowledgeSessionGridCommand;
+import org.drools.services.grid.rio.RioConnector;
 
 
 public class KnowledgeBaseGridClient
@@ -32,20 +33,21 @@
 
     private GridExecutionNodeConnection nodeConnection;
     private String                      instanceId;
-    private Environment                 env;
+    private ExecutionGridConnection gridClient;
+    
     public KnowledgeBaseGridClient(String instanceId,
-                                     GridExecutionNodeConnection nodeConnection, Environment env) {
+                                     GridExecutionNodeConnection nodeConnection, ExecutionGridConnection gridClient) {
         this.instanceId = instanceId;
         this.nodeConnection = nodeConnection;
-        this.env = env;
+        this.gridClient = gridClient;
     }
 
     public void addKnowledgePackages(Collection<KnowledgePackage> kpackages) {
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
 
         String kuilderInstanceId = ((CollectionClient<KnowledgePackage>) kpackages).getParentInstanceId();
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+                                   nodeConnection.getMessageSession().counter.incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new KnowledgeBaseAddKnowledgePackagesCommand(),
                                                                                   kuilderInstanceId,
@@ -54,7 +56,7 @@
                                                                                   kresultsId ) );
         try {
             //I should register the kbase ID??
-            DirectoryService directory = (DirectoryService)env.get("DIRECTORY_SERVICE");
+            DirectoryService directory = gridClient.getDirectories().iterator().next();
             if(directory != null){
                 directory.registerKBase(instanceId, nodeConnection.client.getId());
             }
@@ -110,12 +112,12 @@
 
     public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf,
                                                                 Environment environment) {
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
 
         String localId = UUID.randomUUID().toString();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+                                   nodeConnection.getMessageSession().counter.incrementAndGet(),
                                    false,
                                    new SetVariableCommand( "__TEMP__",
                                                            localId,
@@ -138,7 +140,7 @@
         }
 
         return new StatefulKnowledgeSessionGridClient( localId,
-                                                         nodeConnection, env );
+                                                         ((RioConnector)nodeConnection.client).getCurrentNodeService(),nodeConnection.getMessageSession() );
     }
 
     public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBaseProviderGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -7,6 +7,7 @@
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseConfiguration;
 import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
 
 import org.drools.command.FinishedCommand;
 import org.drools.command.NewKnowledgeBaseCommand;
@@ -14,17 +15,30 @@
 import org.drools.runtime.Environment;
 import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+import org.drools.services.grid.rio.RioConnector;
 
 
 public class KnowledgeBaseProviderGridClient
     implements
     KnowledgeBaseFactoryService {
-    private GridExecutionNodeConnection nodeConnection;
+    
+    private ExecutionGridConnection gridClient;
     private String localId = "";
-    private Environment env;
-    public KnowledgeBaseProviderGridClient(GridExecutionNodeConnection nodeConnection, Environment env) {
-        this.nodeConnection = nodeConnection;
-        this.env =  env;
+    private  GridExecutionNodeConnection nodeConnection;
+    private MessageSession messageSession;
+    
+    public KnowledgeBaseProviderGridClient(GridNodeExecutionService currentService, ExecutionGridConnection gridClient) {
+        
+        this.gridClient = gridClient;
+        this.messageSession = new MessageSession();
+            this.nodeConnection = new GridExecutionNodeConnection(
+
+                                            //I need to specialize this class for include the RIO Connector, and solve the name problem
+                                            new RioConnector("client 1", SystemEventListenerFactory.getSystemEventListener(), (GridNodeExecutionService) currentService),
+                                            this.messageSession,
+                                            gridClient
+                                  );
     }
 
    
@@ -43,8 +57,8 @@
             localId = UUID.randomUUID().toString();
         }
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( messageSession.getSessionId(),
+                                   messageSession.counter.incrementAndGet(),
                                    false,
                                    new SetVariableCommand( "__TEMP__",
                                                            localId,
@@ -62,7 +76,7 @@
         } 
 
         return new KnowledgeBaseGridClient( localId,
-                                              nodeConnection, env );
+                                              nodeConnection, gridClient);
 
     }
 

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -26,12 +26,12 @@
     KnowledgeBuilder {
     private GridExecutionNodeConnection nodeConnection;
     private String                      instanceId;
-    private Environment                 env;
+    
     public KnowledgeBuilderGridClient(String instanceId,
-                                        GridExecutionNodeConnection nodeConnection, Environment env) {
+                                        GridExecutionNodeConnection nodeConnection) {
         this.instanceId = instanceId;
         this.nodeConnection = nodeConnection;
-        this.env = env;
+        
     }
 
     public void add(Resource resource,
@@ -44,8 +44,8 @@
     public void add(Resource resource,
                     ResourceType resourceType,
                     ResourceConfiguration configuration) {
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+                                   nodeConnection.getMessageSession().counter.incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderAddCommand( resource,
                                                                                                                   resourceType,
@@ -70,11 +70,11 @@
     }
 
     public KnowledgeBuilderErrors getErrors() {
-        String commandId = "kbuilder.getErrors_" + nodeConnection.getNextId();
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String commandId = "kbuilder.getErrors_" + nodeConnection.getMessageSession().getNextId();
+        String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+                                   nodeConnection.getMessageSession().counter.incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderGetErrorsCommand( commandId ),
                                                                                   instanceId,
@@ -103,11 +103,11 @@
     }
 
     public boolean hasErrors() {
-        String commandId = "kbuilder.hasErrors_" + nodeConnection.getNextId();
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String commandId = "kbuilder.hasErrors_" + nodeConnection.getMessageSession().getNextId();
+        String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.getNextId(),
+        Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+                                   nodeConnection.getMessageSession().getNextId(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderHasErrorsCommand( commandId ),
                                                                                   instanceId,

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/KnowledgeBuilderProviderGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -4,10 +4,14 @@
 package org.drools.services.grid;
 
 
+import java.rmi.RemoteException;
 import java.util.Properties;
 import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.drools.KnowledgeBase;
+import org.drools.SystemEventListenerFactory;
 import org.drools.builder.DecisionTableConfiguration;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderConfiguration;
@@ -18,17 +22,32 @@
 import org.drools.command.builder.NewKnowledgeBuilderCommand;
 import org.drools.runtime.Environment;
 import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+import org.drools.services.grid.rio.RioConnector;
 
 
 public class KnowledgeBuilderProviderGridClient
     implements
     KnowledgeBuilderFactoryService {
     private GridExecutionNodeConnection nodeConnection;
-    private Environment env;
+    private MessageSession messageSession;
+    
 
-    public KnowledgeBuilderProviderGridClient(GridExecutionNodeConnection nodeConnection, Environment env) {
-        this.nodeConnection = nodeConnection;
-        this.env = env;
+//    public KnowledgeBuilderProviderGridClient(GridExecutionNodeConnection nodeConnection, Environment env) {
+//        this.nodeConnection = nodeConnection;
+//        this.env = env;
+//    }
+
+    public KnowledgeBuilderProviderGridClient(GridNodeExecutionService currentService, ExecutionGridConnection gridClient) {
+            this.messageSession = new MessageSession();
+            this.nodeConnection = new GridExecutionNodeConnection(
+                                            
+                                            //I need to specialize this class for include the RIO Connector, and solve the name problem
+                                            new RioConnector("client 1", SystemEventListenerFactory.getSystemEventListener(), (GridNodeExecutionService) currentService),
+                                            this.messageSession,
+                                            gridClient
+                                  );
+        
     }
 
     public DecisionTableConfiguration newDecisionTableConfiguration() {
@@ -39,8 +58,8 @@
     public KnowledgeBuilder newKnowledgeBuilder() {
         String localId = UUID.randomUUID().toString();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( messageSession.getSessionId(),
+                                   messageSession.counter.incrementAndGet(),
                                    false,
                                    new SetVariableCommand( "__TEMP__",
                                                            localId,
@@ -59,7 +78,7 @@
         }
 
         return new KnowledgeBuilderGridClient( localId,
-                                                 nodeConnection, env );
+                                                 nodeConnection );
     }
 
     public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/StatefulKnowledgeSessionGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -29,7 +29,9 @@
 import org.drools.services.command.GetWorkItemManagerCommand;
 import org.drools.services.command.RegisterRemoteWorkItemHandlerCommand;
 import org.drools.services.command.StartProcessRemoteCommand;
+import org.drools.services.generic.GenericConnector;
 import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
 import org.drools.time.SessionClock;
 
 
@@ -37,17 +39,24 @@
     implements
     StatefulKnowledgeSession {
 
-    private GridExecutionNodeConnection nodeConnection;
+    private GridNodeExecutionService nodeConnection;
     private String                      instanceId;
-    private Environment                 env;
+    private MessageSession              messageSession;
+    
 
-    public StatefulKnowledgeSessionGridClient(String instanceId,
-                                                GridExecutionNodeConnection nodeConnection, Environment env) {
+    
+
+    
+
+    StatefulKnowledgeSessionGridClient(String instanceId, GridNodeExecutionService currentService, MessageSession messageSession) {
         this.instanceId = instanceId;
-        this.nodeConnection = nodeConnection;
-        this.env = env;
+        this.nodeConnection = currentService;
+        this.messageSession = messageSession;
     }
 
+
+
+
     public String getInstanceId() {
         return this.instanceId;
     }
@@ -63,11 +72,11 @@
     }
 
     public int fireAllRules() {
-        String commandId = "ksession.fireAllRules" + nodeConnection.getNextId();
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String commandId = "ksession.fireAllRules" + messageSession.getNextId();
+        String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( messageSession.getSessionId(),
+                                  messageSession.getCounter().incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new FireAllRulesCommand( commandId ),
                                                                                   null,
@@ -75,7 +84,7 @@
                                                                                   instanceId,
                                                                                   kresultsId ) );
         try {
-            Object object = nodeConnection.client.write( msg ).getPayload();
+            Object object = nodeConnection.write( msg ).getPayload();
 
             if ( object == null ) {
                 throw new RuntimeException( "Response was not correctly received" );
@@ -109,11 +118,11 @@
     }
 
     public ExecutionResults execute(Command command) {
-        String commandId = "ksession.execute" + nodeConnection.getNextId();
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String commandId = "ksession.execute" + messageSession.getNextId();
+        String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( messageSession.getSessionId(),
+                                   messageSession.counter.incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new ExecuteCommand( commandId,
                                                                                                       command ),
@@ -123,7 +132,7 @@
                                                                                   kresultsId ) );
 
         try {
-            Object object = nodeConnection.client.write( msg ).getPayload();if ( object == null ) {
+            Object object = nodeConnection.write( msg ).getPayload();if ( object == null ) {
                 throw new RuntimeException( "Response was not correctly received" );
             }
 
@@ -269,9 +278,9 @@
     }
 
     public WorkItemManager getWorkItemManager() {
-    	 String kresultsId = "kresults_" + nodeConnection.getSessionId();
-         Message msg = new Message( nodeConnection.getSessionId(),
-                                    nodeConnection.counter.incrementAndGet(),
+    	 String kresultsId = "kresults_" + messageSession.getSessionId();
+         Message msg = new Message( messageSession.getSessionId(),
+                                    messageSession.counter.incrementAndGet(),
                                     true,
                                     new KnowledgeContextResolveFromContextCommand( new GetWorkItemManagerCommand(),
                                                                                    null,
@@ -279,9 +288,9 @@
                                                                                    instanceId,
                                                                                    kresultsId ) );
          try {
-             Object payload = nodeConnection.client.write( msg ).getPayload();
+             Object payload = nodeConnection.write( msg ).getPayload();
              WorkItemManager workItemManager = (WorkItemManager) ((ExecutionResults) payload).getValue( "workItemManager" );
-             ((WorkItemManagerGridClient)workItemManager).setServiceManager(nodeConnection);
+             //((WorkItemManagerGridClient)workItemManager).setServiceManager(nodeConnection);
              ((WorkItemManagerGridClient)workItemManager).setInstanceId(instanceId);
              return workItemManager;
          } catch ( Exception e ) {
@@ -291,10 +300,10 @@
     
     public void registerWorkItemHandler(String name, String workItemHandler){
         
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( messageSession.getSessionId(),
+                                   messageSession.counter.incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new RegisterRemoteWorkItemHandlerCommand(name, workItemHandler ),
                                                                                   null,
@@ -303,7 +312,7 @@
                                                                                   kresultsId ) );
 
         try {
-            nodeConnection.client.write( msg );
+            nodeConnection.write( msg );
             
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message",
@@ -320,11 +329,11 @@
     }
 
     public ProcessInstance startProcess(String processId) {
-        String commandId = "ksession.execute" + nodeConnection.getNextId();
-        String kresultsId = "kresults_" + nodeConnection.getSessionId();
+        String commandId = "ksession.execute" + messageSession.getNextId();
+        String kresultsId = "kresults_" + messageSession.getSessionId();
 
-        Message msg = new Message( nodeConnection.getSessionId(),
-                                   nodeConnection.counter.incrementAndGet(),
+        Message msg = new Message( messageSession.getSessionId(),
+                                   messageSession.counter.incrementAndGet(),
                                    false,
                                    new KnowledgeContextResolveFromContextCommand( new StartProcessRemoteCommand( processId ),
                                                                                   null,
@@ -333,7 +342,7 @@
                                                                                   kresultsId ) );
 
         try {
-            Object object = nodeConnection.client.write( msg ).getPayload();
+            Object object = nodeConnection.write( msg ).getPayload();
             if ( object == null ) {
                 throw new RuntimeException( "Response was not correctly received" );
             }

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/WorkItemManagerGridClient.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -19,7 +19,7 @@
 
 	private static final long serialVersionUID = 1L;
 	
-	private GridExecutionNodeConnection serviceManager;
+	private GridExecutionNodeConnection nodeConnection;
 	private String instanceId;
 
 	public void abortWorkItem(long id) {
@@ -27,9 +27,9 @@
 	}
 
 	public void completeWorkItem(long id, Map<String, Object> results) {
-		String kresultsId = "kresults_" + serviceManager.getSessionId();
-        Message msg = new Message( serviceManager.getSessionId(),
-                                   serviceManager.counter.incrementAndGet(),
+		String kresultsId = "kresults_" + nodeConnection.getMessageSession().getSessionId();
+        Message msg = new Message( nodeConnection.getMessageSession().getSessionId(),
+                                   nodeConnection.getMessageSession().counter.incrementAndGet(),
                                    true,
                                    new KnowledgeContextResolveFromContextCommand( new CompleteWorkItemCommand(id, results),
                                                                                   null,
@@ -37,7 +37,7 @@
                                                                                   instanceId,
                                                                                   kresultsId ) );
         try {
-            serviceManager.client.write( msg );
+            nodeConnection.client.write( msg );
         } catch ( Exception e ) {
             throw new RuntimeException( "Unable to execute message", e );
         }
@@ -48,7 +48,7 @@
 	}
 
 	public void setServiceManager(GridExecutionNodeConnection serviceManager) {
-		this.serviceManager = serviceManager;
+		this.nodeConnection = serviceManager;
 	}
 
 	public void setInstanceId(String instanceId) {

Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/strategies/RandomSelectionStrategy.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -0,0 +1,41 @@
+/*
+ *  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.services.grid.strategies;
+
+import org.drools.services.grid.ExecutionGridConnection;
+import org.drools.services.grid.GridNodeExecutionService;
+import org.drools.services.grid.GridSelectionStrategy;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RandomSelectionStrategy implements GridSelectionStrategy{
+
+    private ExecutionGridConnection connection;
+    public RandomSelectionStrategy(ExecutionGridConnection connection) {
+        this.connection = connection;
+    }
+
+
+    @Override
+    public GridNodeExecutionService getBestNode() {
+        return this.connection.getServices().iterator().next();
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -27,6 +27,7 @@
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.grid.DirectoryLookupFactoryService;
 import org.drools.services.grid.ExecutionGridConnection;
 import org.drools.services.grid.KnowledgeBaseProviderGridClient;
 import org.junit.Assert;
@@ -169,10 +170,9 @@
 
         StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
 
-        ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1",
-                              ksession );
+        node.get(DirectoryLookupFactoryService.class).register( "ksession1", ksession );
 
-        ExecutionResults results = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+        ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
 
         Assert.assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
     }
@@ -185,7 +185,7 @@
         str += "global java.util.List list \n";
         str += "rule rule1 \n";
         str += "    dialect \"java\" \n";
-        str += "when \n";
+        str += "when \n"; 
         str += "then \n";
         str += "    System.out.println( \"hello1!!!\" ); \n";
         str += "end \n";
@@ -213,94 +213,94 @@
 
         StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
         System.out.println("registering a session!!!!!!!");
-        ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1",
+        node.get(DirectoryLookupFactoryService.class).register( "ksession1",
                               ksession );
         System.out.println("Lookup ksession1!!!!!!!!!!!!!");
-        ExecutionResults results = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+        ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
 
         Assert.assertEquals( 2,
                      (int) (Integer) results.getValue( "fired" ) );
         System.out.println("TEst ENDED =========>");
     }
-   @Test
-    public void twoSessionsIntoDifferentSessionServices(){
+//   @Test
+//    public void twoSessionsIntoDifferentSessionServices(){
+//
+//        String str = "";
+//        str += "package org.drools \n";
+//        str += "global java.util.List list \n";
+//        str += "rule rule1 \n";
+//        str += "    dialect \"java\" \n";
+//        str += "when \n";
+//        str += "then \n";
+//        str += "    System.out.println( \"hello1!!!\" ); \n";
+//        str += "end \n";
+//        str += "rule rule2 \n";
+//        str += "    dialect \"java\" \n";
+//        str += "when \n";
+//        str += "then \n";
+//        str += "    System.out.println( \"hello2!!!\" ); \n";
+//        str += "end \n";
+//
+//        KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+//        Assert.assertNotNull(kbuilder);
+//
+//        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+//                      ResourceType.DRL );
+//
+//        if ( kbuilder.hasErrors() ) {
+//            System.out.println( "Errors: " + kbuilder.getErrors() );
+//        }
+//
+//        KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+//        Assert.assertNotNull(kbase);
+//
+//        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+//        StatefulKnowledgeSession ksession1 = kbase.newStatefulKnowledgeSession();
+//        System.out.println("registering ksession1!");
+//        ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1", ksession1 );
+//
+//        System.out.println("Let's go for the Second ksession");
+//
+//        //((ServiceManagerGridClient)this.client).setCurrentSessionService((SessionService)((ServiceManagerGridClient)this.client).getSessionServices().get(1));
+//        //If I do this here.. and I don't create a new Kbase. the context got nothing and cannot find the kbase in the new session service.. of course
+//        node = connection.getAnotherExecutionNode();
+//
+//        KnowledgeBuilder kbuilder2 = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+//        Assert.assertNotNull(kbuilder2);
+//
+//        kbuilder2.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+//                      ResourceType.DRL );
+//
+//        if ( kbuilder2.hasErrors() ) {
+//            System.out.println( "Errors: " + kbuilder2.getErrors() );
+//        }
+//
+//
+//        KnowledgeBase kbase2 = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+//        Assert.assertNotNull(kbase2);
+//
+//
+//        kbase2.addKnowledgePackages( kbuilder2.getKnowledgePackages() );
+//
+//        StatefulKnowledgeSession ksession2 = kbase2.newStatefulKnowledgeSession();
+//        System.out.println("registering ksession2!");
+//        ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession2", ksession2 );
+//
+//        System.out.println("Lookuping up ksession1 !");
+//        ExecutionResults results1 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+//
+//        Assert.assertEquals( 2,
+//                     (int) (Integer) results1.getValue( "fired" ) );
+//
+//        System.out.println("Lookuping up ksession2 !");
+//        ExecutionResults results2 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession2" ).execute( new FireAllRulesCommand( "fired" ) );
+//
+//        Assert.assertEquals( 2,
+//                     (int) (Integer) results2.getValue( "fired" ) );
+//
+//    }
 
-        String str = "";
-        str += "package org.drools \n";
-        str += "global java.util.List list \n";
-        str += "rule rule1 \n";
-        str += "    dialect \"java\" \n";
-        str += "when \n";
-        str += "then \n";
-        str += "    System.out.println( \"hello1!!!\" ); \n";
-        str += "end \n";
-        str += "rule rule2 \n";
-        str += "    dialect \"java\" \n";
-        str += "when \n";
-        str += "then \n";
-        str += "    System.out.println( \"hello2!!!\" ); \n";
-        str += "end \n";
 
-        KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
-        Assert.assertNotNull(kbuilder);
 
-        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
-                      ResourceType.DRL );
-
-        if ( kbuilder.hasErrors() ) {
-            System.out.println( "Errors: " + kbuilder.getErrors() );
-        }
-
-        KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
-        Assert.assertNotNull(kbase);
-
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession1 = kbase.newStatefulKnowledgeSession();
-        System.out.println("registering ksession1!");
-        ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession1", ksession1 );
-
-        System.out.println("Let's go for the Second ksession");
-
-        //((ServiceManagerGridClient)this.client).setCurrentSessionService((SessionService)((ServiceManagerGridClient)this.client).getSessionServices().get(1));
-        //If I do this here.. and I don't create a new Kbase. the context got nothing and cannot find the kbase in the new session service.. of course
-        node = connection.getAnotherExecutionNode();
-        
-        KnowledgeBuilder kbuilder2 = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
-        Assert.assertNotNull(kbuilder2);
-
-        kbuilder2.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
-                      ResourceType.DRL );
-
-        if ( kbuilder2.hasErrors() ) {
-            System.out.println( "Errors: " + kbuilder2.getErrors() );
-        }
-
-
-        KnowledgeBase kbase2 = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
-        Assert.assertNotNull(kbase2);
-
-
-        kbase2.addKnowledgePackages( kbuilder2.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession2 = kbase2.newStatefulKnowledgeSession();
-        System.out.println("registering ksession2!");
-        ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().register( "ksession2", ksession2 );
-
-        System.out.println("Lookuping up ksession1 !");
-        ExecutionResults results1 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
-
-        Assert.assertEquals( 2,
-                     (int) (Integer) results1.getValue( "fired" ) );
-
-        System.out.println("Lookuping up ksession2 !");
-        ExecutionResults results2 = ((KnowledgeBaseProviderGridClient)node.get(KnowledgeBaseFactoryService.class)).getNodeConnection().lookup( "ksession2" ).execute( new FireAllRulesCommand( "fired" ) );
-
-        Assert.assertEquals( 2,
-                     (int) (Integer) results2.getValue( "fired" ) );
-
-    }
-
-
-
 }

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java	2010-03-20 19:45:28 UTC (rev 32161)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ITGridExecutionTest.java	2010-03-21 04:18:29 UTC (rev 32162)
@@ -45,35 +45,38 @@
         DirectoryService directoryService = (DirectoryService) testManager.waitForService(DirectoryService.class);
         Assert.assertNotNull(directoryService);
 
-        Environment env = new EnvironmentImpl();
-        env.set("DIRECTORY_SERVICE", directoryService);
+        connection.addDirectory(directoryService);
+//        Environment env = new EnvironmentImpl();
+//        env.set("DIRECTORY_SERVICE", directoryService);
 
         
         for (int i = 0; i < nodeServiceItems.length; i++) {
             if (nodeServiceItems[i].service instanceof GridNodeExecutionService) {
 
-                //sessionServices.add((GridNodeExecutionService) sessionServiceItems[i].service);
-                System.out.println("Service Item = "+nodeServiceItems[i].service);
-                ExecutionNode node = new ExecutionNode();
-                node.set(KnowledgeBuilderFactoryService.class, 
-                        new KnowledgeBuilderProviderGridClient(
-                            new GridExecutionNodeConnection(
-                            ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
-                            new RioConnector("client1",SystemEventListenerFactory.getSystemEventListener(),
-                                (GridNodeExecutionService)nodeServiceItems[i].service)
-                                ,env),
-                            env
-                            ));
-                node.set(KnowledgeBaseFactoryService.class,
-                            new KnowledgeBaseProviderGridClient(
-                                new GridExecutionNodeConnection(
-                                ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
-                                new RioConnector("client2",SystemEventListenerFactory.getSystemEventListener(),
-                                    (GridNodeExecutionService)nodeServiceItems[i].service),
-                                env),
-                            env
-                            ));
-                connection.addNode(node);
+                
+//                System.out.println("Service Item = "+nodeServiceItems[i].service);
+//                ExecutionNode node = new ExecutionNode();
+//                node.set(KnowledgeBuilderFactoryService.class,
+//                        new KnowledgeBuilderProviderGridClient(
+//                            new GridExecutionNodeConnection(
+//                            ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
+//                            new RioConnector("client1",SystemEventListenerFactory.getSystemEventListener(),
+//                                (GridNodeExecutionService)nodeServiceItems[i].service)
+//                                ,env),
+//                            env
+//                            ));
+//                node.set(KnowledgeBaseFactoryService.class,
+//                            new KnowledgeBaseProviderGridClient(
+//                                new GridExecutionNodeConnection(
+//                                ((GridNodeExecutionService)nodeServiceItems[i].service).getId(),
+//                                new RioConnector("client2",SystemEventListenerFactory.getSystemEventListener(),
+//                                    (GridNodeExecutionService)nodeServiceItems[i].service),
+//                                env),
+//                            env
+//                            ));
+//                connection.addNode(node);
+
+                connection.addService((GridNodeExecutionService) nodeServiceItems[i].service);
             }
         }
 
@@ -83,7 +86,7 @@
 //        connection.setDirectory(directoryService);
 
 
-        node = connection.getPreferedExecutionNode();
+        node = connection.getExecutionNode();
         System.out.println("Node = "+ node);
 
 



More information about the jboss-svn-commits mailing list