[jboss-svn-commits] JBL Code SVN: r33132 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 27 15:23:30 EDT 2010


Author: salaboy21
Date: 2010-05-27 15:23:29 -0400 (Thu, 27 May 2010)
New Revision: 33132

Added:
   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/local/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
Log:
remove deps in MinaEnvironmentProvider

Added: 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	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,51 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.grid.local;
+
+import java.rmi.RemoteException;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class LocalNodeConnector implements GenericNodeConnector {
+
+    public boolean connect() throws RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void disconnect() throws RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public Message write(Message msg) throws RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public String getId() throws RemoteException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void write(Message msg, MessageResponseHandler responseHandler) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java	2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -1,5 +1,6 @@
 package org.drools.grid.remote.mina;
 
+import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -18,25 +19,23 @@
 import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
 
 public class MinaNodeConnector
-    implements
-    GenericNodeConnector,
-    GenericIoWriter {
+        implements
+        GenericNodeConnector,
+        GenericIoWriter {
 
-
-    protected IoSession           session;
-
-    protected final String        name;
-    protected AtomicInteger       counter;
-    protected SocketConnector     connector;
-    protected SocketAddress       address;
+    protected IoSession session;
+    protected final String name;
+    protected AtomicInteger counter;
+    protected SocketConnector connector;
+    protected SocketAddress address;
     protected SystemEventListener eventListener;
 
     public MinaNodeConnector(String name,
-                         SocketConnector connector,
-                         SocketAddress address,
-                         SystemEventListener eventListener) {
-        if ( name == null ) {
-            throw new IllegalArgumentException( "Name can not be null" );
+            SocketConnector connector,
+            SocketAddress address,
+            SystemEventListener eventListener) {
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
         }
         this.name = name;
         this.counter = new AtomicInteger();
@@ -46,18 +45,19 @@
 
     }
 
-       public MinaNodeConnector(String name,
-                         SocketAddress address,
-                         SystemEventListener eventListener) {
+    public MinaNodeConnector(String name,
+            String providerAddress, int providerPort,
+            SystemEventListener eventListener) {
 
+        
         SocketConnector minaconnector = new NioSocketConnector();
         minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
-        if ( name == null ) {
-            throw new IllegalArgumentException( "Name can not be null" );
+        if (name == null) {
+            throw new IllegalArgumentException("Name can not be null");
         }
         this.name = name;
         this.counter = new AtomicInteger();
-        this.address = address;
+        this.address = new InetSocketAddress(providerAddress, providerPort);
         this.connector = minaconnector;
         this.eventListener = eventListener;
     }
@@ -67,24 +67,24 @@
      * @see org.drools.vsm.mina.Messenger#connect()
      */
     public boolean connect() {
-        if ( session != null && session.isConnected() ) {
-            throw new IllegalStateException( "Already connected. Disconnect first." );
+        if (session != null && session.isConnected()) {
+            throw new IllegalStateException("Already connected. Disconnect first.");
         }
 
         try {
-            this.connector.getFilterChain().addLast( "codec",
-                                                     new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) );
+            this.connector.getFilterChain().addLast("codec",
+                    new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
 
-            ConnectFuture future1 = this.connector.connect( this.address );
-            future1.await( 2000 );
-            if ( !future1.isConnected() ) {
-                eventListener.info( "unable to connect : " + address + " : " + future1.getException() );
+            ConnectFuture future1 = this.connector.connect(this.address);
+            future1.await(2000);
+            if (!future1.isConnected()) {
+                eventListener.info("unable to connect : " + address + " : " + future1.getException());
                 return false;
             }
-            eventListener.info( "connected : " + address );
+            eventListener.info("connected : " + address);
             this.session = future1.getSession();
             return true;
-        } catch ( Exception e ) {
+        } catch (Exception e) {
             e.printStackTrace();
             return false;
         }
@@ -94,38 +94,38 @@
      * @see org.drools.vsm.mina.Messenger#disconnect()
      */
     public void disconnect() {
-        if ( session != null && session.isConnected() ) {
+        if (session != null && session.isConnected()) {
             session.close();
             session.getCloseFuture().join();
         }
     }
 
     private void addResponseHandler(int id,
-                                    MessageResponseHandler responseHandler) {
-        ((MinaIoHandler) this.connector.getHandler()).addResponseHandler( id,
-                                                                          responseHandler );
+            MessageResponseHandler responseHandler) {
+        ((MinaIoHandler) this.connector.getHandler()).addResponseHandler(id,
+                responseHandler);
     }
 
     public void write(Message msg,
-                      MessageResponseHandler responseHandler) {
-        if ( responseHandler != null ) {
-            addResponseHandler( msg.getResponseId(),
-                                responseHandler );
+            MessageResponseHandler responseHandler) {
+        if (responseHandler != null) {
+            addResponseHandler(msg.getResponseId(),
+                    responseHandler);
         }
-        this.session.write( msg );
+        this.session.write(msg);
     }
 
     public Message write(Message msg) {
         BlockingMessageResponseHandler responseHandler = new BlockingMessageResponseHandler();
 
-        if ( responseHandler != null ) {
-            addResponseHandler( msg.getResponseId(),
-                                responseHandler );
+        if (responseHandler != null) {
+            addResponseHandler(msg.getResponseId(),
+                    responseHandler);
         }
-        this.session.write( msg );
+        this.session.write(msg);
 
         Message returnMessage = responseHandler.getMessage();
-        if ( responseHandler.getError() != null ) {
+        if (responseHandler.getError() != null) {
             throw responseHandler.getError();
         }
 

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml	2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml	2010-05-27 19:23:29 UTC (rev 33132)
@@ -22,28 +22,24 @@
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-api</artifactId>
-            <version>5.1.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-local</artifactId>
-            <version>5.1.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-remote-api</artifactId>
-            <version>5.1.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-remote-mina</artifactId>
-            <version>5.1.0.SNAPSHOT</version>
             <type>jar</type>
         </dependency>
 
@@ -51,7 +47,6 @@
             <groupId>org.apache.mina</groupId>
             <artifactId>mina-core</artifactId>
             <version>2.0.0-M6</version>
-
         </dependency>
         <!-- Test deps -->
         

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java	2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -4,17 +4,12 @@
 import org.drools.grid.GenericNodeConnector;
 
 /**
- * Created by IntelliJ IDEA.
- * User: salaboy
- * Date: May 17, 2010
- * Time: 11:10:44 AM
- * To change this template use File | Settings | File Templates.
+ * @author salaboy
  */
 public interface EnvironmentProvider {
-
+    
     public GenericNodeConnector getNodeConnector();
     public void setParameter(String name, Object value);
     public Object getParameter(String name);
     public Map<String, Object> getParameters();
-
 }

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java	2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -1,11 +1,14 @@
 package org.drools.grid.services;
 
+import java.util.HashMap;
+import java.util.Map;
 import org.drools.grid.ExecutionNode;
 import org.drools.grid.remote.RemoteConnection;
 import org.drools.grid.GenericConnection;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.remote.mina.MinaNodeConnector;
-import java.util.*;
+import org.drools.grid.local.LocalConnection;
+import org.drools.grid.local.LocalNodeConnector;
 import org.drools.grid.services.directory.DirectoryInstance;
 import org.drools.grid.services.strategies.ExecutionEnvironmentSelectionStrategy; 
 import org.drools.grid.strategies.ReturnAlwaysTheFirstSelectionStrategy;
@@ -20,14 +23,13 @@
  */
 public class ExecutionEnvironmentTopology {
 
-    private String id;
+    
     private String name;
     private Map<String, ExecutionEnvironment> environments = new HashMap<String, ExecutionEnvironment>();
     private Map<String, DirectoryInstance> directories = new HashMap<String, DirectoryInstance>();
     private Map<String, GenericConnection> connections = new HashMap<String, GenericConnection>();
 
     public ExecutionEnvironmentTopology(String name) {
-        this.id = UUID.randomUUID().toString();
         this.name = name;
 
     }
@@ -39,10 +41,13 @@
         if (connector instanceof MinaNodeConnector) {
             RemoteConnection connection = new RemoteConnection();
             connection.addNodeConnector(connector);
-
             connections.put(name, connection);
-
         }
+        if (connector instanceof LocalNodeConnector){
+            LocalConnection connection = new LocalConnection();
+            connection.addNodeConnector(connector);
+            connections.put(name, connection);
+        }
         environments.put(name, executionEnvironment);
 
 
@@ -63,9 +68,9 @@
         return new DirectoryInstance();
     }
 
-    public Map<String, GenericConnection> getConnections() {
-        return this.connections;
-    }
+//    public Map<String, GenericConnection> getConnections() {
+//        return this.connections;
+//    }
 
     public ExecutionEnvironment getExecutionEnvironment(String name) {
         return this.environments.get(name);
@@ -92,4 +97,11 @@
         return connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy(connection));
 
     }
+
+    public String getName() {
+        return name;
+    }
+
+    
+    
 }

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,65 @@
+/*
+ *  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.local;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.local.LocalNodeConnector;
+import org.drools.grid.services.EnvironmentProvider;
+
+/**
+ *
+ * @author salaboy
+ */
+public class LocalEnvironmentProvider implements EnvironmentProvider{
+    private Map<String, Object> parameters = new HashMap<String, Object>();
+    private transient GenericNodeConnector connector;
+
+    public LocalEnvironmentProvider() {
+        init();
+    }
+
+    public LocalEnvironmentProvider(Map<String, Object> parameters) {
+        this.parameters = parameters;
+        init();
+    }
+
+
+
+    public GenericNodeConnector getNodeConnector() {
+        return this.connector;
+    }
+
+    public void setParameter(String name, Object value) {
+        this.parameters.put(name, value);
+    }
+
+    public Object getParameter(String name) {
+        return this.parameters.get(name);
+    }
+
+    public Map<String, Object> getParameters() {
+        return this.parameters;
+    }
+
+    private void init() {
+        connector = new LocalNodeConnector();
+    }
+
+}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java	2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -1,16 +1,11 @@
 package org.drools.grid.services.remote;
 
 
+import java.util.HashMap;
+import java.util.Map;
 import org.drools.SystemEventListenerFactory;
 import org.drools.grid.GenericNodeConnector;
 import org.drools.grid.remote.mina.MinaNodeConnector;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.mina.transport.socket.SocketConnector;
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.drools.grid.remote.mina.MinaIoHandler;
 import org.drools.grid.services.EnvironmentProvider;
 
 /**
@@ -21,26 +16,19 @@
     private transient GenericNodeConnector connector;
 
     public MinaEnvironmentProvider() {
-        init();
-        
+
     }
 
-    
-
     public MinaEnvironmentProvider(Map<String, Object> parameters) {
         this.parameters = parameters;
-        init();
-    }
-
-    private void init() {
-        String providerName = (String) parameters.get("providerName");
+         String providerName = (String) parameters.get("providerName");
         String providerAddress = (String) parameters.get("providerAddress");
         int providerPort = (Integer) parameters.get("providerPort");
-        SocketAddress address = new InetSocketAddress(providerAddress, providerPort);
-        SocketConnector minaconnector = new NioSocketConnector();
-        minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
-        connector = new MinaNodeConnector(providerName, address, SystemEventListenerFactory.getSystemEventListener());
+        connector = new MinaNodeConnector(providerName,providerAddress, providerPort,
+                                    SystemEventListenerFactory.getSystemEventListener());
     }
+
+   
     
 
     public void setParameter(String name, Object value) {

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,72 @@
+/*
+ *  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.EnvironmentProvider;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.local.LocalEnvironmentProvider;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+
+/**
+ *
+ * @author salaboy
+ */
+public class TopologyPrioritySelectionStrategy implements ExecutionEnvironmentSelectionStrategy {
+
+    private Map<String, ExecutionEnvironment> environments;
+
+    public ExecutionEnvironment getBestExecutionEnvironment() {
+        List<EnvironmentProvider> providers =  new ArrayList<EnvironmentProvider>();
+        for(ExecutionEnvironment ee : environments.values()){
+            providers.add(ee.getProvider());
+        }
+
+        Collections.sort(providers, new Comparator<EnvironmentProvider>() {
+
+            private Map<Class<? extends EnvironmentProvider> , Integer> priorities
+                        = new HashMap<Class<? extends EnvironmentProvider>, Integer>() {
+                {
+                    put(LocalEnvironmentProvider.class, 1);
+                   // put("RioEnvironmentProvider", 2);
+                   // put("HornetQEnvironmentProvider", 3);
+                    put(MinaEnvironmentProvider.class, 4);
+                }
+            };
+
+            public int compare(EnvironmentProvider o1, EnvironmentProvider o2) {
+                return priorities.get(o2.getClass()).compareTo(priorities.get(o1.getClass()));
+            }
+        });
+
+        return environments.values().iterator().next();
+    }
+
+    public void setEnvironments(Map<String, ExecutionEnvironment> environments) {
+        this.environments = environments;
+    }
+
+    public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments) {
+        this.environments = environments;
+        return getBestExecutionEnvironment();
+    }
+}

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java (from rev 33122, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,341 @@
+package org.drools.services;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.ExecutionEnvironmentTopology;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.ExecutionNode;
+import org.junit.Test;
+
+import java.util.Map;
+import junit.framework.Assert;
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.strategies.RandomEnvironmentSelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.Before;
+
+/**
+ * @author: salaboy
+ */
+public class BasicAPITestWithMina {
+
+    private MinaAcceptor server1;
+    private MinaAcceptor server2;
+    private ExecutionEnvironmentTopology eet;
+
+    @Before
+    public void setUp() throws IOException {
+
+        System.out.println("Server 1 Starting!");
+        // the servers should be started in a different machine (jvm or physical) or in another thread
+        SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+        NodeData nodeData = new NodeData();
+        // setup Server
+        SocketAcceptor acceptor = new NioSocketAcceptor();
+        acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new GenericMessageHandlerImpl(nodeData,
+                SystemEventListenerFactory.getSystemEventListener())));
+        server1 = new MinaAcceptor(acceptor, address);
+        server1.start();
+        System.out.println("Server 1 Started! at = " + address.toString());
+
+
+        System.out.println("Server 2 Starting!");
+        // the servers should be started in a different machine (jvm or physical) or in another thread
+        address = new InetSocketAddress("127.0.0.1", 9124);
+        nodeData = new NodeData();
+        // setup Server
+        acceptor = new NioSocketAcceptor();
+        acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new GenericMessageHandlerImpl(nodeData,
+                SystemEventListenerFactory.getSystemEventListener())));
+        server2 = new MinaAcceptor(acceptor, address);
+        server2.start();
+        System.out.println("Server 2 Started! at = " + address.toString());
+
+
+    }
+
+    @After
+    public void stop() {
+        for (String key : eet.getExecutionEnvironments().keySet()) {
+            try {
+                eet.getExecutionEnvironment(key).getConnector().disconnect();
+            } catch (RemoteException ex) {
+                Logger.getLogger(BasicAPITestWithMina.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        }
+        
+        server1.stop();
+        System.out.println("Server 1 Stopped!");
+
+        server2.stop();
+        System.out.println("Server 2 Stopped!");
+
+
+
+
+    }
+
+    @Test
+    public void singleMinaProvider() {
+
+        //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+        //will be used for a specific situation/use case.
+
+        //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the
+        //topology in case of failure or restarting
+        eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+        //Specific paramters for this specific provider
+        Map<String, Object> parameters = new HashMap<String, Object>();
+        parameters.put("providerName", "Mina1");
+        parameters.put("providerAddress", "127.0.0.1");
+        parameters.put("providerPort", 9123);
+        //Create the provider
+        MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+        //Register the provider into the topology
+        eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
+
+        //Then we can get the registered Execution Environments by Name
+
+        ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+        Assert.assertNotNull(ee);
+
+        // Give me an ExecutionNode in the selected environment
+        // For the Mina we have just one Execution Node per server instance
+        ExecutionNode node = eet.getExecutionNode(ee);
+
+        Assert.assertNotNull(node);
+
+
+        // Do a basic Runtime Test that register a ksession and fire some rules.
+        String str = "";
+        str += "package org.drools \n";
+        str += "global java.util.List list \n";
+        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();
+        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 ksession = kbase.newStatefulKnowledgeSession();
+        Assert.assertNotNull(ksession);
+
+        int fired = ksession.fireAllRules();
+        Assert.assertEquals(2, fired);
+
+
+
+    }
+
+    @Test
+    public void multiMinaProvider() {
+
+        //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+        //will be used for a specific situation/use case.
+
+        //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the 
+        //topology in case of failure or restarting
+
+        
+        eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+        //Specific paramters for this specific provider
+        Map<String, Object> parameters1 = new HashMap<String, Object>();
+        parameters1.put("providerName", "Mina1");
+        parameters1.put("providerAddress", "127.0.0.1");
+        parameters1.put("providerPort", 9123);
+        //Create the provider
+        MinaEnvironmentProvider provider1 = new MinaEnvironmentProvider(parameters1);
+        //Register the provider into the topology
+        eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider1);
+
+        //Specific paramters for this specific provider
+        Map<String, Object> parameters2 = new HashMap<String, Object>();
+        parameters2.put("providerName", "Mina1");
+        parameters2.put("providerAddress", "127.0.0.1");
+        parameters2.put("providerPort", 9124);
+        //Create the provider
+        MinaEnvironmentProvider provider2 = new MinaEnvironmentProvider(parameters2);
+        //Register the provider into the topology
+        eet.registerExecutionEnvironment("MyMinaExecutionEnv2", provider2);
+
+        //Then we can get the registered Execution Environments by Name
+        ExecutionEnvironment ee = eet.getBestExecutionEnvironment(new RandomEnvironmentSelectionStrategy());
+
+        Assert.assertNotNull(ee);
+        System.out.println("Selected Environment = " + ee.getName());
+
+        // Give me an ExecutionNode in the selected environment
+        // For the Mina we have just one Execution Node per server instance
+        ExecutionNode node = eet.getExecutionNode(ee);
+        Assert.assertNotNull(node);
+
+
+        // Do a basic Runtime Test that register a ksession and fire some rules.
+        String str = "";
+        str += "package org.drools \n";
+        str += "global java.util.List list \n";
+        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();
+        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 ksession = kbase.newStatefulKnowledgeSession();
+        Assert.assertNotNull(ksession);
+
+        int fired = ksession.fireAllRules();
+        Assert.assertEquals(2, fired);
+
+    }
+//
+//    @Test
+//    public void basicMinaProviderTestOLD(){
+//
+//        //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+//        //will be used for a specific situation/use case.
+//
+//        //Runtime state, persistent
+//        ExecutionEnvironmentTopology eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+//        //Logical state and content of each execution environment
+//      // DirectoryInstance directory = eet.registerDirectoryInstance("MyMainDirectory",new ZooKeeperDirectoryProvider());
+//
+//          Map<String, Object> parameters = new HashMap<String,Object>();
+//          parameters.put("providerName", "Mina1");
+//          parameters.put("providerAddress", "127.0.0.1");
+//          parameters.put("providerPort", 9123);
+//
+//         MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+//
+//            eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider );
+//
+//
+//       //eet = ExecutionEnvironmentTopology.lookup("MyCompanyTopology");
+//
+//      // directory = eem.getDirectoryInstance("MyMainDirectory");
+//
+//      // List<DirectoryInstance> directories = eem.getAllDirectoryInstances();
+//      // this should return the active list of Envs, then we can query for the status of each of them
+////       Map<String, ExecutionEnvironment> ees = eet.getExecutionEnvironments();
+////       ees.get("MyMinaExecutionEnv1").getInfo();
+////       ees.get("MyMinaExecutionEnv1").getStatus();
+////
+//       ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+//       Assert.assertNotNull(ee);
+//        //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+////       ExecutionNode en = eet.getExecutionNode();
+//
+//        //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+//       ExecutionNode node = eet.getExecutionNode(ee); // give me an ExecutionNode in that environment..
+//
+//       Assert.assertNotNull(node);
+//
+//       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();
+//        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 ksession = kbase.newStatefulKnowledgeSession();
+//        Assert.assertNotNull(ksession);
+//
+//        int fired = ksession.fireAllRules();
+//        Assert.assertEquals( 2, fired );
+//
+//
+//
+//    }
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java	2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,160 @@
+/*
+ *  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;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import org.junit.Assert;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.local.LocalEnvironmentProvider;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.EnvironmentProvider;
+import org.drools.grid.services.ExecutionEnvironmentTopology;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.services.strategies.TopologyPrioritySelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ServiceAPITest {
+
+    private MinaAcceptor server1;
+    
+    public ServiceAPITest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    @Before
+    public void setUp() throws IOException {
+         System.out.println("Server 1 Starting!");
+        // the servers should be started in a different machine (jvm or physical) or in another thread
+        SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+        NodeData nodeData = new NodeData();
+        // setup Server
+        SocketAcceptor acceptor = new NioSocketAcceptor();
+        acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+                new GenericMessageHandlerImpl(nodeData,
+                SystemEventListenerFactory.getSystemEventListener())));
+        server1 = new MinaAcceptor(acceptor, address);
+        server1.start();
+        System.out.println("Server 1 Started! at = " + address.toString());
+
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    
+     @Test
+     public void mixedTopologyMinaAndLocal() {
+        ExecutionEnvironmentTopology eet = new ExecutionEnvironmentTopology("MyBusinessUnit");
+        Map<String, Object> parameters = new HashMap<String, Object>();
+        parameters.put("providerName", "Mina1");
+        parameters.put("providerAddress", "127.0.0.1");
+        parameters.put("providerPort", 9123);
+        EnvironmentProvider minaProvider = new MinaEnvironmentProvider(parameters);
+        EnvironmentProvider localProvider = new LocalEnvironmentProvider(null);
+
+        eet.registerExecutionEnvironment("MyMinaEnv", minaProvider);
+
+        eet.registerExecutionEnvironment("MyLocalEnv", localProvider);
+
+        ExecutionEnvironment ee = eet.getBestExecutionEnvironment(new TopologyPrioritySelectionStrategy());
+        Assert.assertNotNull(ee);
+        System.out.println("EE Name = "+ee.getName());
+
+        ExecutionNode node = eet.getExecutionNode(ee);
+        Assert.assertNotNull(node);
+
+         // Do a basic Runtime Test that register a ksession and fire some rules.
+        String str = "";
+        str += "package org.drools \n";
+        str += "global java.util.List list \n";
+        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();
+        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 ksession = kbase.newStatefulKnowledgeSession();
+        Assert.assertNotNull(ksession);
+
+        int fired = ksession.fireAllRules();
+        Assert.assertEquals(2, fired);
+
+
+
+
+
+     }
+
+}
\ No newline at end of file



More information about the jboss-svn-commits mailing list