[jboss-svn-commits] JBL Code SVN: r32165 - in labs/jbossrules/branches/salaboy_ServiceAPIs: drools-services and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Mar 21 11:23:38 EDT 2010


Author: salaboy21
Date: 2010-03-21 11:23:37 -0400 (Sun, 21 Mar 2010)
New Revision: 32165

Added:
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/builder/DirectoryLookupFactoryService.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java
Removed:
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
Modified:
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java
   labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java
Log:
JBRULES-2446: Drools Services API
	- drools-services more tests, add support for directory in remote env, move diretorylookupfactoryservice to api
            

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

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml	2010-03-21 15:23:37 UTC (rev 32165)
@@ -26,6 +26,7 @@
             <artifactId>drools-api</artifactId>
             
             <type>jar</type>
+            <version>5.1.0.SNAPSHOT</version>
         </dependency>
 
         <dependency>

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -14,14 +14,15 @@
  *  limitations under the License.
  *  under the License.
  */
-
 package org.drools.services;
 
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.services.generic.GenericConnector;
+import org.drools.services.remote.DirectoryLookupProviderRemoteClient;
 import org.drools.services.remote.KnowledgeBaseProviderRemoteClient;
 import org.drools.services.remote.KnowledgeBuilderProviderRemoteClient;
 
@@ -32,18 +33,10 @@
 public class RemoteExecutionNodeConnection implements ExecutionNodeConnection {
 
     private String name;
-
     public GenericConnector client;
-
-    private List<GenericConnector> services;
-
-    public AtomicInteger    counter;
-
+    public AtomicInteger counter;
     private int sessionId = -1;
 
-
-    
-
     public RemoteExecutionNodeConnection(String name, GenericConnector connector) {
         this.name = name;
         this.client = connector;
@@ -52,19 +45,21 @@
 
     public ExecutionNode connect() {
 
-        if(client.connect()){
+        if (client.connect()) {
 
             ExecutionNode node = new ExecutionNode();
-            node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(this) );
-            node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(this) );
+            node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(this));
+            node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(this));
+            node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderRemoteClient(this));
             return node;
         }
         return null;
     }
 
-    public void disconnect(){
+    public void disconnect() {
         client.disconnect();
     }
+
     public GenericConnector getClient() {
         return client;
     }
@@ -81,9 +76,6 @@
         this.name = name;
     }
 
-   
-
-    
     public int getSessionId() {
         return sessionId;
     }
@@ -91,5 +83,4 @@
     public int getNextId() {
         return this.counter.incrementAndGet();
     }
-
 }

Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -0,0 +1,117 @@
+/*
+ *  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.remote;
+
+import java.rmi.RemoteException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.RemoteExecutionNodeConnection;
+import org.drools.services.command.LookupCommand;
+import org.drools.services.command.RegisterCommand;
+import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryLookupProviderRemoteClient implements DirectoryLookupFactoryService {
+
+    private RemoteExecutionNodeConnection nodeConnection;
+    private MessageSession messageSession;
+
+    public DirectoryLookupProviderRemoteClient(RemoteExecutionNodeConnection nodeConnection) {
+        this.nodeConnection = nodeConnection;
+        this.messageSession = new MessageSession();
+    }
+
+    public void register(String identifier,
+            CommandExecutor executor) {
+
+        String commandId = "client.lookup" + messageSession.getNextId();
+        String kresultsId = "kresults_" + messageSession.getSessionId();
+        int type;
+
+
+        if (executor instanceof StatefulKnowledgeSession) {
+            type = 0;
+        } else {
+            throw new IllegalArgumentException("Type is not supported for registration");
+        }
+        Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionRemoteClient) executor).getInstanceId(), type), null, null, null, null));
+        System.out.println("Registering " + identifier + " - - " + nodeConnection.client.getId());
+
+        try {
+            Object object = nodeConnection.client.write(msg).getPayload();
+            if (!(object instanceof FinishedCommand)) {
+                throw new RuntimeException("Response was not correctly ended");
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message", e);
+        }
+
+    }
+
+    public CommandExecutor lookup(String identifier) {
+        String commandId = "client.lookup" + messageSession.getNextId();
+        String kresultsId = "kresults_" + messageSession.getSessionId();
+
+        Message msg = new Message(messageSession.getSessionId(),
+                messageSession.getCounter().incrementAndGet(),
+                false,
+                new KnowledgeContextResolveFromContextCommand(new LookupCommand(identifier,
+                commandId),
+                null,
+                null,
+                null,
+                kresultsId));
+        System.out.println("Looking up the session with identifier = " + identifier);
+
+        try {
+            Object object = nodeConnection.client.write(msg).getPayload();
+
+            if (object == null) {
+                throw new RuntimeException("Response was not correctly received");
+            }
+            String value = (String) ((ExecutionResults) object).getValue(commandId);
+            String type = String.valueOf(value.charAt(0));
+            String instanceId = value.substring(2);
+
+            CommandExecutor executor = null;
+            switch (Integer.parseInt(type)) {
+                case 0: {
+                    executor = new StatefulKnowledgeSessionRemoteClient(instanceId, nodeConnection);
+                    break;
+                }
+                default: {
+                }
+
+            }
+
+            return executor;
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to execute message",
+                    e);
+        }
+    }
+}

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -21,10 +21,13 @@
 import org.drools.KnowledgeBase;
 import org.drools.services.ExecutionNode;
 import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.builder.ResourceType;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
 import org.drools.io.ResourceFactory;
+import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.junit.Assert;
 import org.junit.Before;
@@ -87,6 +90,127 @@
 
 
     }
+    public void testExecute() throws Exception {
+        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();
+
+        ExecutionResults results = ksession.execute( new FireAllRulesCommand( "fired" ) );
+
+        Assert.assertEquals( 2,
+                      (int) (Integer) results.getValue( "fired" ) );
+    }
+
+    public void testNamedService() throws Exception {
+        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();
+
+        node.get(DirectoryLookupFactoryService.class).register( "ksession1",
+                              ksession );
+
+        ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+
+        Assert.assertEquals( 2,
+                      (int) (Integer) results.getValue( "fired" ) );
+    }
+
+    public void testVsmPipeline() throws Exception {
+        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();
+
+        node.get(DirectoryLookupFactoryService.class).register( "ksession1",
+                              ksession );
+
+        ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+
+        Assert.assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
+    }
   
 
 }

Deleted: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -1,29 +0,0 @@
-/*
- *  Copyright 2010 salaboy.
- * 
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- * 
- *       http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *  under the License.
- */
-
-package org.drools.services.grid;
-
-import org.drools.runtime.CommandExecutor;
-
-/**
- *
- * @author salaboy
- */
-public interface DirectoryLookupFactoryService {
-    public void register(String key, CommandExecutor value);
-    public CommandExecutor lookup(String key);
-}

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -20,6 +20,7 @@
 import java.rmi.RemoteException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.command.FinishedCommand;
 import org.drools.command.KnowledgeContextResolveFromContextCommand;
 import org.drools.runtime.CommandExecutor;

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -16,6 +16,7 @@
  */
 package org.drools.services.grid;
 
+import org.drools.builder.DirectoryLookupFactoryService;
 import java.util.ArrayList;
 import java.util.List;
 import org.drools.KnowledgeBaseFactoryService;
@@ -73,7 +74,7 @@
                 new KnowledgeBaseProviderGridClient( currentService, this ));
 
 
-        node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentService,this));
+        node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentService,this)); 
 
 //                            new GridExecutionNodeConnection
 //                            ((GridNodeExecutionService)currentService).getId(),

Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java	2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java	2010-03-21 15:23:37 UTC (rev 32165)
@@ -27,7 +27,7 @@
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.services.grid.DirectoryLookupFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
 import org.drools.services.grid.ExecutionGridConnection;
 import org.drools.services.grid.KnowledgeBaseProviderGridClient;
 import org.drools.services.grid.strategies.StaticIncrementalSelectionStrategy;



More information about the jboss-svn-commits mailing list