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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jul 4 20:32:26 EDT 2010


Author: salaboy21
Date: 2010-07-04 20:32:25 -0400 (Sun, 04 Jul 2010)
New Revision: 33739

Added:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceSelectionStrategy.java
Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericHumanTaskConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.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/strategies/ReturnFirstHumanTaskServiceSelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java
Log:
adding unregister methods to Grid Topology and Directory Service

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -117,6 +117,10 @@
         return ConnectorType.LOCAL;
     }
 
+    public void unregister(String executorId) throws ConnectorException, RemoteException {
+        directoryMap.remove(executorId);
+    }
 
 
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeService.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -19,6 +19,7 @@
 public interface DirectoryNodeService extends GenericDirectoryConnector {
 
     public void register(String executorId, String resourceId) throws ConnectorException, RemoteException;
+    public void unregister(String executorId) throws ConnectorException, RemoteException;
     public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException;
     public GenericNodeConnector lookup(String resourceId) throws ConnectorException, RemoteException;
     public String lookupId(String resourceId) throws ConnectorException, RemoteException;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericHumanTaskConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericHumanTaskConnector.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericHumanTaskConnector.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -16,7 +16,6 @@
  */
 package org.drools.grid;
 
-import java.rmi.RemoteException;
 import org.drools.grid.internal.GenericIoWriter;
 import org.drools.grid.internal.Message;
 
@@ -38,6 +37,6 @@
 
     Message write(Message msg) throws ConnectorException;
 
-    public ConnectorType getConnectorType()  throws ConnectorException, RemoteException ;
+    public ConnectorType getConnectorType();
 
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/SimpleCommandName.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -78,6 +78,7 @@
     RegisterClient,
 
     RegisterExecutor,
+    UnRegisterExecutor,
     RequestDirectoryMap,
     ResponseDirectoryMap,
     RequestLookupSessionId,

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -164,5 +164,10 @@
         return ConnectorType.DISTRIBUTED;
     }
 
+    @Override
+    public void unregister(String executorId) throws ConnectorException, RemoteException {
+        directoryMap.remove(executorId);
+    }
 
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryNodeRemoteClient.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -161,4 +161,13 @@
         return ConnectorType.REMOTE;
     }
 
+    public void unregister(String executorId) throws ConnectorException, RemoteException {
+        List<Object> args = new ArrayList<Object>(2);
+        args.add(executorId);
+        SimpleCommand cmd = new SimpleCommand(connector.counter.getAndIncrement(), SimpleCommandName.UnRegisterExecutor, args);
+        Message msg = new Message(connector.getSessionId(), connector.counter.incrementAndGet(), false, cmd);
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+        write(msg, handler);
+    }
+
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-dir-mina/src/main/java/org/drools/grid/remote/directory/DirectoryServerMessageHandlerImpl.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -56,6 +56,22 @@
 
                     break;
                 }
+
+                 case UnRegisterExecutor: {
+                    systemEventListener.debug("Command receieved on server was operation of type: UnRegisterExecutor");
+                    String executorId = (String) cmd.getArguments().get(0);
+
+                    directory.unregister(executorId);
+                    System.out.println("UnRegistered in Remote Directory => ExecutorId "+executorId);
+
+                    SimpleCommand resultsCmnd = new SimpleCommand(cmd.getId(), SimpleCommandName.OperationResponse, null);
+                    session.write(new Message( msg.getSessionId(),
+                                        msg.getResponseId(),
+                                        msg.isAsync(),
+                                        resultsCmnd ), null);
+
+                    break;
+                }
                 case RequestDirectoryMap: {
 
                     Map<String, String> directoryMap = directory.getDirectoryMap();

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/GridTopology.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -20,6 +20,8 @@
 import org.drools.grid.services.strategies.DirectoryInstanceSelectionStrategy;
 import org.drools.grid.services.strategies.ExecutionEnvByPrioritySelectionStrategy;
 import org.drools.grid.services.strategies.ExecutionEnvironmentSelectionStrategy;
+import org.drools.grid.services.strategies.TaskServerInstanceByPrioritySelectionStrategy;
+import org.drools.grid.services.strategies.TaskServerInstanceSelectionStrategy;
 
 /**
  * @author salaboy  
@@ -32,18 +34,22 @@
     private Map<String, TaskServerInstance> taskServerInstance = new HashMap<String, TaskServerInstance>();
     private final ExecutionEnvironmentSelectionStrategy DEFAULT_EXECTUTION_STRATEGY = new ExecutionEnvByPrioritySelectionStrategy();
     private final DirectoryInstanceSelectionStrategy DEFAULT_DIRECTORY_STRATEGY = new DirectoryInstanceByPrioritySelectionStrategy();
+    private final TaskServerInstanceSelectionStrategy DEFAULT_TASK_STRATEGY = new TaskServerInstanceByPrioritySelectionStrategy();
+   
 
-
-    private Map<String, GenericConnection> connections = new HashMap<String, GenericConnection>();
-
     public GridTopology(String topologyName) {
         this.topologyName = topologyName;
 
     }
 
+    public String getTopologyName() {
+        return topologyName;
+    }
+
+    //Execution Environments Methods
     public void registerExecutionEnvironment(String name, GenericProvider provider) {
         //Create the executionEnvironment using the provider
-        
+
         ExecutionEnvironment environment = ExecutionEnvironmentFactory.newExecutionEnvironment(name, provider);
         //Get the connector
         GenericNodeConnector connector = environment.getConnector();
@@ -59,18 +65,38 @@
         for (DirectoryInstance d : directories.values()) {
             connection.addDirectoryNode(d.getConnector());
         }
-
-        //Adding the connection to the Topology's list of connections
-        connections.put(name, connection);
         //Adding the env to the local cache
         executionEnvironments.put(name, environment);
         //Register all the Execution Environments into the current directories
-        registerGridResourceInCurrentDirectories(name, provider.getId());
+        registerResourceInCurrentDirectories(name, provider.getId());
 
     }
 
+    public void unregisterExecutionEnvironment(String name) {
+        //Remove Execution Environment
+        executionEnvironments.remove(name);
+        //UnRegister EE from current Directories
+        unregisterResourceInCurrentDirectories(name);
+
+
+    }
+
+    public ExecutionEnvironment getExecutionEnvironment(String name) {
+        return executionEnvironments.get(name);
+    }
+
+    public ExecutionEnvironment getBestExecutionEnvironment(ExecutionEnvironmentSelectionStrategy strategy) {
+        System.out.println("Current Exec used in the strategy = " + executionEnvironments);
+        return strategy.getBestExecutionEnvironment(executionEnvironments);
+    }
+
+    public ExecutionEnvironment getExecutionEnvironment() {
+        return DEFAULT_EXECTUTION_STRATEGY.getBestExecutionEnvironment(executionEnvironments);
+    }
+
+    // DirectoryInstances Methods
     public void registerDirectoryInstance(String name, GenericProvider provider) {
-        
+
         DirectoryInstance directory = DirectoryInstanceFactory.newDirectoryInstance(name, provider);
 
         GenericDirectoryConnector connector = directory.getConnector();
@@ -86,68 +112,74 @@
             connection.addDirectoryNode(d.getConnector());
         }
 
-        connections.put(name, connection);
+        
         directories.put(name, directory);
-        registerGridResourceInCurrentDirectories(name, provider.getId());
+        registerResourceInCurrentDirectories(name, provider.getId());
 
     }
 
+    public DirectoryInstance getBestDirectoryInstance(DirectoryInstanceSelectionStrategy strategy) {
+        return (DirectoryInstance) strategy.getBestDirectoryInstance(directories);
+    }
+
+    public DirectoryInstance getBestDirectoryInstance() {
+        return DEFAULT_DIRECTORY_STRATEGY.getBestDirectoryInstance(directories);
+    }
+
+    public DirectoryInstance getDirectoryInstance(String name) {
+        return directories.get(name);
+    }
+
+     public void unregisterDirectoryInstance(String name) {
+        //Remove Directory Instance
+        directories.remove(name);
+        //UnRegister Directory from current Directories
+        unregisterResourceInCurrentDirectories(name);
+
+
+    }
+
+
+    // Task Server Instance Methods
+
     public void registerTaskServerInstance(String name, GenericProvider provider) {
-        
+
         TaskServerInstance taskServer = TaskServerInstanceFactory.newTaskServerInstance(name, provider);
         GenericHumanTaskConnector connector = taskServer.getConnector();
         GenericConnection connection = connector.getConnection();
         connection.addHumanTaskNode(connector);
-        connections.put(name, connection);
+        
         taskServerInstance.put(name, taskServer);
-        registerGridResourceInCurrentDirectories(name, provider.getId());
+        registerResourceInCurrentDirectories(name, provider.getId());
 
     }
 
-    private void registerGridResourceInCurrentDirectories(String name, String resourceId) {
-        for (DirectoryInstance directory : directories.values()) {
+    
+   
 
-            try {
-				DirectoryNodeService directoryNode = directory.getDirectoryService();
-				if (directoryNode != null) {
-				    try {
-				        directoryNode.register(name, resourceId);
-				    } catch (RemoteException ex) {
-				        Logger.getLogger(GridTopology.class.getName()).log(Level.SEVERE, null, ex);
-				    }
-				}
-				directory.getConnector().disconnect();
-			} catch (ConnectorException e) {
-		        Logger.getLogger(GridTopology.class.getName()).log(Level.SEVERE, null, e);
-			}
-        }
+    public TaskServerInstance getTaskServerInstance(String name) {
+        return taskServerInstance.get(name);
     }
 
-    public ExecutionEnvironment getBestExecutionEnvironment(ExecutionEnvironmentSelectionStrategy strategy) {
-        System.out.println("Current Exec used in the strategy = " + executionEnvironments);
-        return strategy.getBestExecutionEnvironment(executionEnvironments);
+    public TaskServerInstance getBestTaskServerInstance(TaskServerInstanceSelectionStrategy strategy) {
+        return (TaskServerInstance) strategy.getBestTaskServerInstance(taskServerInstance);
     }
 
-    public ExecutionEnvironment getExecutionEnvironment(){
-        return DEFAULT_EXECTUTION_STRATEGY.getBestExecutionEnvironment(executionEnvironments);
+    public TaskServerInstance getBestTaskServerInstance() {
+        return DEFAULT_TASK_STRATEGY.getBestTaskServerInstance(taskServerInstance);
     }
 
-  
+    public void unregisterTaskServerInstance(String name) {
+        //Remove Task Server Instance
+        taskServerInstance.remove(name);
+        //UnRegister task Server instance from current Directories
+        unregisterResourceInCurrentDirectories(name);
 
-    public String getTopologyName() {
-        return topologyName;
-    }
 
-    public DirectoryInstance getBestDirectoryInstance(DirectoryInstanceSelectionStrategy strategy) {
-        return (DirectoryInstance) strategy.getBestDirectoryInstance(directories);
     }
 
-    public DirectoryInstance getBestDirectoryInstance() {
-        return DEFAULT_DIRECTORY_STRATEGY.getBestDirectoryInstance(directories);
-    }
+    
 
-
-
     public void disconectAllClients() throws ConnectorException, RemoteException {
         for (String key : executionEnvironments.keySet()) {
             executionEnvironments.get(key).getConnector().disconnect();
@@ -163,15 +195,41 @@
         }
     }
 
-    public ExecutionEnvironment getExecutionEnvironment(String name) {
-        return executionEnvironments.get(name);
-    }
+    private void registerResourceInCurrentDirectories(String name, String resourceId) {
+        for (DirectoryInstance directory : directories.values()) {
 
-    public DirectoryInstance getDirectoryInstance(String name) {
-        return directories.get(name);
+            try {
+                DirectoryNodeService directoryNode = directory.getDirectoryService();
+                if (directoryNode != null) {
+                    try {
+                        directoryNode.register(name, resourceId);
+                    } catch (RemoteException ex) {
+                        Logger.getLogger(GridTopology.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+                }
+                directory.getConnector().disconnect();
+            } catch (ConnectorException e) {
+                Logger.getLogger(GridTopology.class.getName()).log(Level.SEVERE, null, e);
+            }
+        }
     }
 
-    public TaskServerInstance getTaskServerInstance(String name) {
-        return taskServerInstance.get(name);
+    private void unregisterResourceInCurrentDirectories(String name) {
+        for (DirectoryInstance directory : directories.values()) {
+
+            try {
+                DirectoryNodeService directoryNode = directory.getDirectoryService();
+                if (directoryNode != null) {
+                    try {
+                        directoryNode.unregister(name);
+                    } catch (RemoteException ex) {
+                        Logger.getLogger(GridTopology.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+                }
+                directory.getConnector().disconnect();
+            } catch (ConnectorException e) {
+                Logger.getLogger(GridTopology.class.getName()).log(Level.SEVERE, null, e);
+            }
+        }
     }
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ReturnFirstHumanTaskServiceSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ReturnFirstHumanTaskServiceSelectionStrategy.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ReturnFirstHumanTaskServiceSelectionStrategy.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -19,9 +19,7 @@
 
 import java.util.List;
 import org.drools.grid.GenericHumanTaskConnector;
-import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.HumanTaskNodeService;
-
 import org.drools.grid.strategies.HumanTaskSelectionStrategy;
 import org.drools.grid.task.HumanTaskServiceImpl;
 
@@ -30,7 +28,7 @@
  * @author salaboy
  */
 public class ReturnFirstHumanTaskServiceSelectionStrategy implements HumanTaskSelectionStrategy{
-    private final int sessionId;
+    private final int sessionId; 
     private final GenericHumanTaskConnector connector;
 
 

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceByPrioritySelectionStrategy.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -0,0 +1,89 @@
+/*
+ *  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.rmi.RemoteException;
+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 java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.ConnectorException;
+
+import org.drools.grid.ConnectorType;
+import org.drools.grid.services.DirectoryInstance;
+import org.drools.grid.services.TaskServerInstance;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class TaskServerInstanceByPrioritySelectionStrategy implements TaskServerInstanceSelectionStrategy{
+
+    private List<TaskServerInstance> taskServers;
+
+    public TaskServerInstance getBestTaskServerInstance() {
+
+
+
+        Collections.sort(taskServers, new Comparator<TaskServerInstance>() {
+
+            private Map<ConnectorType , Integer> priorities
+                        = new HashMap<ConnectorType, Integer>() {
+                {
+                    put(ConnectorType.LOCAL, 1);
+                   // put("RioEnvironmentProvider", 2);
+                   // put("HornetQEnvironmentProvider", 3);
+                   put(ConnectorType.REMOTE, 4);
+                }
+            };
+
+            public int compare(TaskServerInstance o1, TaskServerInstance o2) {
+                    return priorities.get(o1.getConnector().getConnectorType()).compareTo(
+                            priorities.get(o2.getConnector().getConnectorType()));
+
+            }
+        });
+
+
+
+        return taskServers.get(0);
+    }
+
+    public void setTaskServerInstances(Map<String, TaskServerInstance> taskServerInstances) {
+        List<TaskServerInstance> serverList = new ArrayList<TaskServerInstance>();
+        for(TaskServerInstance taskServer : taskServerInstances.values()){
+            
+                serverList.add(taskServer);
+            
+        }
+        this.taskServers = serverList;
+    }
+
+    public TaskServerInstance getBestTaskServerInstance(Map<String, TaskServerInstance> taskServerInstances) {
+        setTaskServerInstances(taskServerInstances);
+        return getBestTaskServerInstance();
+    }
+
+   
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceSelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TaskServerInstanceSelectionStrategy.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -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.grid.services.strategies;
+
+import java.util.Map;
+import org.drools.grid.services.TaskServerInstance;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface TaskServerInstanceSelectionStrategy {
+    public TaskServerInstance getBestTaskServerInstance(Map<String, TaskServerInstance> taskServerInstances);
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java	2010-07-04 22:01:34 UTC (rev 33738)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-task/src/main/java/org/drools/grid/task/RemoteMinaHumanTaskConnector.java	2010-07-05 00:32:25 UTC (rev 33739)
@@ -136,7 +136,7 @@
         return new HumanTaskServiceImpl(this, (int) this.session.getId());
     }
 
-    public ConnectorType getConnectorType() throws ConnectorException, RemoteException {
+    public ConnectorType getConnectorType() {
         return ConnectorType.REMOTE;
     }
 }



More information about the jboss-svn-commits mailing list