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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat May 29 12:27:53 EDT 2010


Author: salaboy21
Date: 2010-05-29 12:27:52 -0400 (Sat, 29 May 2010)
New Revision: 33155

Added:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/DirectoryInstanceByPrioritySelectionStrategy.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-local/src/main/java/org/drools/grid/local/LocalConnection.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-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/ExecutionEnvironment.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalDirectoryProvider.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/GridResourceSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java
Log:
Adding directory Local Implementation to the ServiceLayer

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-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -23,8 +23,6 @@
 import java.util.Map;
 import java.util.UUID;
 import org.drools.KnowledgeBase;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.GenericNodeConnector;
 
 /**
  *
@@ -44,9 +42,9 @@
         return this.id;
     }
 
-    public void register(String executorId, String sessionServiceId) throws RemoteException {
-        System.out.println("Registering: " + executorId + " -- " + sessionServiceId);
-        directoryMap.put(executorId, sessionServiceId);
+    public void register(String executorId, String resourceId) throws RemoteException {
+        System.out.println("Registering: " + executorId + " -- " + resourceId);
+        directoryMap.put(executorId, resourceId);
     }
 
     public GenericNodeConnector lookup(String executorId) throws RemoteException {

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-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -16,9 +16,9 @@
  */
 
 public interface DirectoryNodeService {
-    public void register(String executorId, String nodeServiceId) throws RemoteException;
-    public GenericNodeConnector lookup(String executorId) throws RemoteException;
-    public void registerKBase(String kbaseId, String nodeServiceId) throws RemoteException;
+    public void register(String executorId, String resourceId) throws RemoteException;
+    public GenericNodeConnector lookup(String resourceId) throws RemoteException;
+    public void registerKBase(String kbaseId, String resourceId) throws RemoteException;
     public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException;
     public void addService(GenericNodeConnector service);
     public Map<String, String> getDirectoryMap() throws RemoteException;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnection.java	2010-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalConnection.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -21,6 +21,7 @@
 import org.drools.KnowledgeBaseFactoryService;
 import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.DirectoryNodeLocalImpl;
 import org.drools.grid.DirectoryNodeService;
 import org.drools.grid.ExecutionNode;
 import org.drools.grid.GenericConnection;
@@ -36,10 +37,11 @@
 
     //Cached NodeConnectors
     private List<GenericNodeConnector> nodeConnectors;
-
+    private List<DirectoryNodeService> directories;
     public LocalConnection() {
         this.nodeConnectors = new ArrayList<GenericNodeConnector>();
-
+        this.directories = new ArrayList<DirectoryNodeService>();
+        this.directories.add(new DirectoryNodeLocalImpl());
     }
 
     public void addNodeConnector(GenericNodeConnector nodeConnector) {
@@ -47,7 +49,7 @@
     }
 
     public void addDirectoryNode(DirectoryNodeService directory) {
-        throw new UnsupportedOperationException("Not supported yet.");
+        this.directories.add(directory);
     }
 
     public List<GenericNodeConnector> getNodeConnectors() {
@@ -64,7 +66,7 @@
     }
 
     public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) {
-        throw new UnsupportedOperationException("Not supported yet.");
+        return this.directories.get(0);
     }
 
     public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {

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-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -18,6 +18,7 @@
 package org.drools.grid.local;
 
 import java.rmi.RemoteException;
+import java.util.UUID;
 import org.drools.grid.GenericConnection;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.internal.Message;
@@ -29,6 +30,13 @@
  */
 public class LocalNodeConnector implements GenericNodeConnector {
 
+    private String id;
+    private LocalConnection connection;
+    public LocalNodeConnector() {
+        this.id = UUID.randomUUID().toString();
+        this.connection = new LocalConnection();
+    }
+
     public boolean connect() throws RemoteException {
         throw new UnsupportedOperationException("Not supported yet.");
     }
@@ -42,13 +50,13 @@
     }
 
     public String getId() throws RemoteException {
-        throw new UnsupportedOperationException("Not supported yet.");
+        return this.id;
     }
 
     public void write(Message msg, MessageResponseHandler responseHandler) {
         throw new UnsupportedOperationException("Not supported yet.");
     }
     public GenericConnection getConnection(){
-        return new LocalConnection();
+        return this.connection;
     }
 }

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-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/DirectoryInstance.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -1,5 +1,8 @@
 package org.drools.grid.services;
 
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericConnection;
+
 /**
  * @author salaboy
  */
@@ -9,6 +12,13 @@
         super(name, provider);
     }
 
+    public DirectoryNodeService getDirectoryService() {
+        GenericConnection connection = getConnector().getConnection();
+        return connection.getDirectoryNode(null);
+    }
 
+    
 
+
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java	2010-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -17,6 +17,10 @@
 
 package org.drools.grid.services;
 
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.strategies.ReturnAlwaysTheFirstSelectionStrategy;
+
 /**
  *
  * @author salaboy
@@ -26,6 +30,10 @@
     public ExecutionEnvironment(String name, GenericProvider provider) {
         super(name, provider);
     }
-    
 
+    public ExecutionNode getExecutionNode() {
+        GenericConnection connection = getConnector().getConnection();
+        return connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy(connection));
+    }
+
 }

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-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -1,5 +1,7 @@
 package org.drools.grid.services;
 
+import java.rmi.RemoteException;
+import org.drools.grid.services.strategies.DirectoryInstanceByPrioritySelectionStrategy;
 import java.util.HashMap;
 import java.util.Map;
 import org.drools.grid.ExecutionNode;
@@ -28,17 +30,26 @@
 
     }
 
-    public void registerGridResource(String name, GenericProvider provider) {
+    public void registerGridResource(String name, GenericProvider provider) throws RemoteException {
 
         GridResource resource = provider.getGridResource(name);
         GenericNodeConnector connector = resource.getConnector();
         GenericConnection connection = connector.getConnection();
         connection.addNodeConnector(connector);
         connections.put(name, connection);
+        registerGridResourceInCurrentDirectories(name, connector.getId());
         resources.put(name, resource);
 
     }
 
+    private void registerGridResourceInCurrentDirectories(String name, String resourceId) throws RemoteException{
+        for(GridResource resource : resources.values()){
+            if(resource instanceof DirectoryInstance){
+                System.out.println("DirectoryInstance = "+resource + " --> name ="+name + "-> resourceId = "+resourceId);
+                ((DirectoryInstance)resource).getDirectoryService().register(name, resourceId);
+            }
+        }
+    }
     
 
     public static GridResource lookup(String name) {
@@ -48,10 +59,6 @@
 
    
 
-//    public Map<String, GenericConnection> getConnections() {
-//        return this.connections;
-//    }
-
     public GridResource getExecutionEnvironment(String name) {
         return this.resources.get(name);
     }
@@ -78,6 +85,10 @@
         return name;
     }
 
+    public DirectoryInstance getBestDirectoryInstance(DirectoryInstanceByPrioritySelectionStrategy strategy) {
+        return (DirectoryInstance) strategy.getBestGridResource(resources);
+    }
+
     
     
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalDirectoryProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalDirectoryProvider.java	2010-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalDirectoryProvider.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -18,6 +18,7 @@
 package org.drools.grid.services.local;
 
 import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.local.LocalNodeConnector;
 import org.drools.grid.services.DirectoryInstance;
 import org.drools.grid.services.GenericProvider;
 import org.drools.grid.services.GridResource;
@@ -28,12 +29,15 @@
  */
 public class LocalDirectoryProvider extends GenericProvider{
 
+    private GenericNodeConnector connector;
+
     public LocalDirectoryProvider() {
+        this.connector = new LocalNodeConnector();
     }
 
     @Override
     public GenericNodeConnector getNodeConnector() {
-        throw new UnsupportedOperationException("Not supported yet.");
+        return this.connector;
     }
 
     @Override

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/DirectoryInstanceByPrioritySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/DirectoryInstanceByPrioritySelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/DirectoryInstanceByPrioritySelectionStrategy.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -0,0 +1,81 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid.services.strategies;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.grid.services.DirectoryInstance;
+import org.drools.grid.services.GenericProvider;
+import org.drools.grid.services.GridResource;
+import org.drools.grid.services.local.LocalDirectoryProvider;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryInstanceByPrioritySelectionStrategy implements GridResourceSelectionStrategy {
+
+    private List<GridResource> resources;
+
+    public GridResource getBestGridResource() {
+
+
+
+        Collections.sort(resources, new Comparator<GridResource>() {
+
+            private Map<Class<? extends GenericProvider> , Integer> priorities
+                        = new HashMap<Class<? extends GenericProvider>, Integer>() {
+                {
+                    put(LocalDirectoryProvider.class, 1);
+                   // put("RioEnvironmentProvider", 2);
+                   // put("HornetQEnvironmentProvider", 3);
+                   // put(MinaDirectoryProvider.class, 4);
+                }
+            };
+
+            public int compare(GridResource o1, GridResource o2) {
+                return priorities.get(o1.getProvider().getClass())
+                        .compareTo(priorities.get(o2.getProvider().getClass()));
+            }
+        });
+
+
+
+        return resources.get(0);
+    }
+
+    public void setResources(Map<String, GridResource> resources) {
+        List<GridResource> onlyExecutionEnvironments = new ArrayList<GridResource>();
+        for(GridResource resource : resources.values()){
+            if(resource instanceof DirectoryInstance ){
+                onlyExecutionEnvironments.add(resource);
+            }
+        }
+        this.resources = onlyExecutionEnvironments;
+    }
+
+    public GridResource getBestGridResource(Map<String, GridResource> resources) {
+        setResources(resources);
+        return getBestGridResource();
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/GridResourceSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/GridResourceSelectionStrategy.java	2010-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/GridResourceSelectionStrategy.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -27,5 +27,5 @@
 public interface GridResourceSelectionStrategy {
     public GridResource getBestGridResource();
     public void setResources(Map<String, GridResource> resources);
-    public GridResource getBestGridResource(Map<String, GridResource> environments);
+    public GridResource getBestGridResource(Map<String, GridResource> resources);
 }

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-05-29 02:34:50 UTC (rev 33154)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/RegisterDirectoryTest.java	2010-05-29 16:27:52 UTC (rev 33155)
@@ -17,15 +17,20 @@
 
 package org.drools.services;
 
+import java.rmi.RemoteException;
 import org.drools.grid.services.local.LocalDirectoryProvider;
 import java.util.HashMap;
 import java.util.Map;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.services.DirectoryInstance;
 import org.drools.grid.services.GenericProvider;
 import org.drools.grid.services.GridTopology;
 import org.drools.grid.services.local.LocalEnvironmentProvider;
 import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.services.strategies.DirectoryInstanceByPrioritySelectionStrategy;
 import org.junit.After;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -57,15 +62,24 @@
 
     
      @Test
-     public void hello() {
-        GridTopology eet = new GridTopology("MyBusinessUnit");
+     public void directoryLocalTest() throws RemoteException {
+        GridTopology grid = new GridTopology("MyBusinessUnit");
         GenericProvider localDirProvider = new LocalDirectoryProvider();
         GenericProvider localEnvProvider = new LocalEnvironmentProvider();
 
-        eet.registerGridResource("MyLocalEnv", localEnvProvider);
-       // eet.registerGridResource("MyLocalDir", localDirProvider);
+        grid.registerGridResource("MyLocalDir", localDirProvider);
+        grid.registerGridResource("MyLocalEnv", localEnvProvider);
+        
+        
 
+        DirectoryInstance directory = grid.getBestDirectoryInstance(new DirectoryInstanceByPrioritySelectionStrategy());
+        Assert.assertNotNull(directory);
 
+        DirectoryNodeService dir = directory.getDirectoryService();
+
+        System.out.println("Directory ="+dir.getDirectoryMap());
+
+
      }
 
 }
\ No newline at end of file



More information about the jboss-svn-commits mailing list