[jboss-svn-commits] JBL Code SVN: r29599 - in labs/jbossrules/trunk/drools-vsm/src: main/java/org/drools/vsm and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 13 21:21:58 EDT 2009


Author: mark.proctor at jboss.com
Date: 2009-10-13 21:21:57 -0400 (Tue, 13 Oct 2009)
New Revision: 29599

Added:
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBaseProviderLocalClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBuilderProviderLocalClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseProviderRemoteClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseRemoteClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderProviderRemoteClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderRemoteClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/StatefulKnowledgeSessionRemoteClient.java
   labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerLocalTest.java
   labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerMinaRemoteTest.java
   labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java
Removed:
   labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java
Modified:
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/LookupCommand.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/RegisterCommand.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerClientConnectCommand.java
   labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerServerContext.java
Log:
JBRULES-2269 Virtual Service Manager
-now works for xstream
-split into remote/local

Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/LookupCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/LookupCommand.java	2009-10-14 01:13:50 UTC (rev 29598)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/LookupCommand.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -1,43 +1,34 @@
 package org.drools.command.vsm;
 
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderErrors;
-import org.drools.builder.ResourceConfiguration;
-import org.drools.builder.ResourceType;
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.io.Resource;
 import org.drools.runtime.impl.ExecutionResultImpl;
-import org.drools.vsm.ServiceManager;
-import org.drools.vsm.ServiceManagerServer;
-import org.drools.vsm.ServiceManagerServerResponseHandler;
+import org.drools.vsm.ServiceManagerData;
 
 public class LookupCommand
     implements
     GenericCommand<String> {
-    
+
     private String identifier;
-    
+
     private String outIdentifier;
 
     public LookupCommand(String identfier) {
         this.identifier = identfier;
     }
-    
+
     public LookupCommand(String identfier,
                          String outIdentifier) {
         this.identifier = identfier;
         this.outIdentifier = outIdentifier;
     }
 
+    public String execute(Context context) {
+        ServiceManagerData data = (ServiceManagerData) context.get( ServiceManagerData.SERVICE_MANAGER_DATA );
 
+        String instanceId = (String) data.getRoot().get( identifier );
 
-    public String execute(Context context) {
-        ServiceManagerServer server = (ServiceManagerServer) context.get( ServiceManagerServer.SERVICE_MANAGER );
-        
-        String instanceId = (String ) server.getRoot().get( identifier );        
-        
         if ( this.outIdentifier != null ) {
             ((ExecutionResultImpl) ((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier,
                                                                                                                 instanceId );

Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/RegisterCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/RegisterCommand.java	2009-10-14 01:13:50 UTC (rev 29598)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/RegisterCommand.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -1,19 +1,8 @@
 package org.drools.command.vsm;
 
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderErrors;
-import org.drools.builder.ResourceConfiguration;
-import org.drools.builder.ResourceType;
 import org.drools.command.Context;
-import org.drools.command.ExecuteCommand;
 import org.drools.command.impl.GenericCommand;
-import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.concurrent.CommandExecutor;
-import org.drools.io.Resource;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.vsm.ServiceManager;
-import org.drools.vsm.ServiceManagerClient;
-import org.drools.vsm.ServiceManagerServer;
+import org.drools.vsm.ServiceManagerData;
 
 public class RegisterCommand
     implements
@@ -32,10 +21,10 @@
     }
 
     public Void execute(Context context) {
-        ServiceManagerServer server = (ServiceManagerServer) context.get( ServiceManagerServer.SERVICE_MANAGER );
+        ServiceManagerData data = (ServiceManagerData) context.get( ServiceManagerData.SERVICE_MANAGER_DATA );
 
-        server.getRoot().set( identifier,
-                              type + ":" + instanceId );
+        data.getRoot().set( identifier,
+                            type + ":" + instanceId );
 
         return null;
     }

Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerClientConnectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerClientConnectCommand.java	2009-10-14 01:13:50 UTC (rev 29598)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerClientConnectCommand.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -1,27 +1,34 @@
 package org.drools.command.vsm;
 
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderErrors;
-import org.drools.builder.ResourceConfiguration;
-import org.drools.builder.ResourceType;
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.io.Resource;
-import org.drools.vsm.ServiceManager;
-import org.drools.vsm.ServiceManagerServer;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.vsm.ServiceManagerData;
 
 public class ServiceManagerClientConnectCommand
     implements
     GenericCommand<Integer> {
+    
+    private String outIdentifier;
 
-    public ServiceManagerClientConnectCommand() {
+    
+
+    public ServiceManagerClientConnectCommand(String outIdentifier) {
+        this.outIdentifier = outIdentifier;
     }
- 
-    
+
+
+
     public Integer execute(Context context) {
-        ServiceManagerServer server = ( ServiceManagerServer ) ((ServiceManagerServerContext)context).getServiceManager();
-        return server.getSessionIdCounter().getAndIncrement();
+        ServiceManagerData data = (ServiceManagerData) context.get( ServiceManagerData.SERVICE_MANAGER_DATA );
+        
+        Integer sessionId = data.getSessionIdCounter().getAndIncrement();
+        if ( this.outIdentifier != null ) {
+            ((ExecutionResultImpl)((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier, sessionId );
+        } 
+        
+        return sessionId;
     }
 
 }

Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerServerContext.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerServerContext.java	2009-10-14 01:13:50 UTC (rev 29598)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerServerContext.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -2,21 +2,21 @@
 
 import org.drools.command.Context;
 import org.drools.command.ContextManager;
-import org.drools.vsm.ServiceManagerServer;
+import org.drools.vsm.ServiceManagerData;
 
 public class ServiceManagerServerContext
     implements
     Context {
-    private Context              context;
-    private ServiceManagerServer server;
+    private Context            context;
+    private ServiceManagerData data;
 
     public ServiceManagerServerContext(Context context,
-                                       ServiceManagerServer server) {
-        this.server = server;
+                                       ServiceManagerData data) {
+        this.data = data;
     }
 
-    public ServiceManagerServer getServiceManager() {
-        return server;
+    public ServiceManagerData getServiceManagerData() {
+        return this.data;
     }
 
     public ContextManager getContextManager() {

Added: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBaseProviderLocalClient.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBaseProviderLocalClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBaseProviderLocalClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,48 @@
+package org.drools.vsm.local;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+
+public class KnowledgeBaseProviderLocalClient
+    implements
+    KnowledgeBaseProvider {
+
+    public Environment newEnvironment() {
+        return KnowledgeBaseFactory.newEnvironment();
+    }
+
+    public KnowledgeBase newKnowledgeBase() {
+        return newKnowledgeBase( null );
+    }
+
+    public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+        return KnowledgeBaseFactory.newKnowledgeBase( conf );
+    }
+
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+        return KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+    }
+
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties,
+                                                                    ClassLoader classLoader) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration(Properties properties) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBuilderProviderLocalClient.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBuilderProviderLocalClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/KnowledgeBuilderProviderLocalClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,51 @@
+/**
+ * 
+ */
+package org.drools.vsm.local;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeBuilderProvider;
+
+public class KnowledgeBuilderProviderLocalClient
+    implements
+    KnowledgeBuilderProvider {
+
+    public DecisionTableConfiguration newDecisionTableConfiguration() {
+        return KnowledgeBuilderFactory.newDecisionTableConfiguration();
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder() {
+        return KnowledgeBuilderFactory.newKnowledgeBuilder();
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+        return KnowledgeBuilderFactory.newKnowledgeBuilder( conf );
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase) {
+        return KnowledgeBuilderFactory.newKnowledgeBuilder( kbase );
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase,
+                                                KnowledgeBuilderConfiguration conf) {
+        return KnowledgeBuilderFactory.newKnowledgeBuilder( kbase,
+                                                            conf );
+    }
+
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
+        return KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
+    }
+
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties,
+                                                                          ClassLoader classLoader) {
+        return KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration( properties,
+                                                                         classLoader );
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/local/ServiceManagerLocalClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,132 @@
+package org.drools.vsm.local;
+
+import java.util.Collection;
+import java.util.Properties;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.agent.KnowledgeAgentProvider;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderProvider;
+import org.drools.command.Command;
+import org.drools.persistence.jpa.JPAKnowledgeServiceProvider;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.Environment;
+import org.drools.runtime.ExecutionResults;
+import org.drools.vsm.ServiceManager;
+import org.drools.vsm.ServiceManagerData;
+
+public class ServiceManagerLocalClient
+    implements
+    ServiceManager {
+
+    private ServiceManagerData data;
+
+    public ServiceManagerLocalClient() {
+        this( new ServiceManagerData() );
+    }
+
+    public ServiceManagerLocalClient(ServiceManagerData data) {
+        this.data = data;
+    }
+
+    public void disconnect() {
+
+    }
+
+    public KnowledgeBuilderProvider getKnowledgeBuilderFactory() {
+        return new KnowledgeBuilderProviderLocalClient();
+    }
+
+    public KnowledgeBaseProvider getKnowledgeBaseFactory() {
+        return new KnowledgeBaseProviderLocalClient();
+    }
+
+    public KnowledgeAgentProvider getKnowledgeAgentFactory() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public JPAKnowledgeServiceProvider JPAKnowledgeService() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Environment getEnvironment() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<String> list() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void register(String identifier,
+                         CommandExecutor executor) {
+        this.data.getRoot().set( identifier,
+                                 executor );
+    }
+
+    public CommandExecutor lookup(String identifier) {
+        return (CommandExecutor) this.data.getRoot().get( identifier );
+    }
+
+    public void release(Object object) {
+        // TODO Auto-generated method stub
+    }
+
+    public void release(String identifier) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public static class RemoveKnowledgeBuilderProvider
+        implements
+        KnowledgeBuilderProvider {
+
+        public DecisionTableConfiguration newDecisionTableConfiguration() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase,
+                                                    KnowledgeBuilderConfiguration conf) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties,
+                                                                              ClassLoader classLoader) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+    }
+
+    public ExecutionResults execute(Command command) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+}

Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseProviderRemoteClient.java (from rev 29306, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/KnowledgeBaseProviderClient.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseProviderRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseProviderRemoteClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,92 @@
+package org.drools.vsm.remote;
+
+import java.util.Properties;
+import java.util.UUID;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.command.FinishedCommand;
+import org.drools.command.NewKnowledgeBaseCommand;
+import org.drools.command.SetVariableCommand;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.vsm.Message;
+import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
+
+public class KnowledgeBaseProviderRemoteClient
+    implements
+    KnowledgeBaseProvider {
+    private ServiceManagerRemoteClient serviceManager;
+
+    public KnowledgeBaseProviderRemoteClient(ServiceManagerRemoteClient serviceManager) {
+        this.serviceManager = serviceManager;
+    }
+
+    public Environment newEnvironment() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBase newKnowledgeBase() {
+        return newKnowledgeBase( null );
+    }
+
+    public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+        //return new NewKnowledgeBaseCommand(null);
+
+        String localId = UUID.randomUUID().toString();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new SetVariableCommand( "__TEMP__",
+                                                           localId,
+                                                           new NewKnowledgeBaseCommand( null ) ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( !(object instanceof FinishedCommand) ) {
+                throw new RuntimeException( "Response was not correctly ended" );
+            }
+
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+
+        return new KnowledgeBaseRemoteClient( localId,
+                                              serviceManager );
+
+    }
+
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties,
+                                                                    ClassLoader classLoader) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration(Properties properties) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseRemoteClient.java (from rev 29306, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/KnowledgeBaseClient.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBaseRemoteClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,184 @@
+package org.drools.vsm.remote;
+
+import java.util.Collection;
+import java.util.UUID;
+
+import org.drools.KnowledgeBase;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeBaseAddKnowledgePackagesCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.command.NewStatefulKnowledgeSessionCommand;
+import org.drools.command.SetVariableCommand;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definition.process.Process;
+import org.drools.definition.rule.Rule;
+import org.drools.definition.type.FactType;
+import org.drools.event.knowledgebase.KnowledgeBaseEventListener;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.vsm.CollectionClient;
+import org.drools.vsm.Message;
+import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
+
+public class KnowledgeBaseRemoteClient
+    implements
+    KnowledgeBase {
+
+    private ServiceManagerRemoteClient serviceManager;
+    private String                     instanceId;
+
+    public KnowledgeBaseRemoteClient(String instanceId,
+                                     ServiceManagerRemoteClient serviceManager) {
+        this.instanceId = instanceId;
+        this.serviceManager = serviceManager;
+    }
+
+    public void addKnowledgePackages(Collection<KnowledgePackage> kpackages) {
+        String kresultsId = "kresults_" + serviceManager.getSessionId();
+
+        String kuilderInstanceId = ((CollectionClient<KnowledgePackage>) kpackages).getParentInstanceId();
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new KnowledgeBaseAddKnowledgePackagesCommand(),
+                                                                                  kuilderInstanceId,
+                                                                                  instanceId,
+                                                                                  null,
+                                                                                  kresultsId ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().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 FactType getFactType(String packageName,
+                                String typeName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgePackage getKnowledgePackage(String packageName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<KnowledgePackage> getKnowledgePackages() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Process getProcess(String processId) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Rule getRule(String packageName,
+                        String ruleName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public StatefulKnowledgeSession newStatefulKnowledgeSession() {
+        return newStatefulKnowledgeSession( null,
+                                            null );
+    }
+
+    public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf,
+                                                                Environment environment) {
+        String kresultsId = "kresults_" + serviceManager.getSessionId();
+
+        String localId = UUID.randomUUID().toString();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new SetVariableCommand( "__TEMP__",
+                                                           localId,
+                                                           new KnowledgeContextResolveFromContextCommand( new NewStatefulKnowledgeSessionCommand( null ),
+                                                                                                          null,
+                                                                                                          instanceId,
+                                                                                                          null,
+                                                                                                          kresultsId ) ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( !(object instanceof FinishedCommand) ) {
+                throw new RuntimeException( "Response was not correctly ended" );
+            }
+
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+
+        return new StatefulKnowledgeSessionRemoteClient( localId,
+                                                         serviceManager );
+    }
+
+    public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public StatelessKnowledgeSession newStatelessKnowledgeSession() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void removeKnowledgePackage(String packageName) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void removeProcess(String processId) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void removeRule(String packageName,
+                           String ruleName) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void addEventListener(KnowledgeBaseEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public Collection<KnowledgeBaseEventListener> getKnowledgeBaseEventListeners() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void removeEventListener(KnowledgeBaseEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderProviderRemoteClient.java (from rev 29306, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/KnowledgeBuilderProviderClient.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderProviderRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderProviderRemoteClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,94 @@
+/**
+ * 
+ */
+package org.drools.vsm.remote;
+
+import java.util.Properties;
+import java.util.UUID;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderProvider;
+import org.drools.command.FinishedCommand;
+import org.drools.command.SetVariableCommand;
+import org.drools.command.builder.NewKnowledgeBuilderCommand;
+import org.drools.vsm.Message;
+import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
+
+public class KnowledgeBuilderProviderRemoteClient
+    implements
+    KnowledgeBuilderProvider {
+    private ServiceManagerRemoteClient serviceManager;
+
+    public KnowledgeBuilderProviderRemoteClient(ServiceManagerRemoteClient serviceManager) {
+        this.serviceManager = serviceManager;
+    }
+
+    public DecisionTableConfiguration newDecisionTableConfiguration() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder() {
+        String localId = UUID.randomUUID().toString();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new SetVariableCommand( "__TEMP__",
+                                                           localId,
+                                                           new NewKnowledgeBuilderCommand( null ) ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( !(object instanceof FinishedCommand) ) {
+                throw new RuntimeException( "Response was not correctly ended" );
+            }
+
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+
+        return new KnowledgeBuilderRemoteClient( localId,
+                                                 serviceManager );
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase,
+                                                KnowledgeBuilderConfiguration conf) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties,
+                                                                          ClassLoader classLoader) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderRemoteClient.java (from rev 29306, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/KnowledgeBuilderClient.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/KnowledgeBuilderRemoteClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,149 @@
+package org.drools.vsm.remote;
+
+import java.util.Collection;
+
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.ResourceConfiguration;
+import org.drools.builder.ResourceType;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.command.builder.KnowledgeBuilderAddCommand;
+import org.drools.command.builder.KnowledgeBuilderGetErrorsCommand;
+import org.drools.command.builder.KnowledgeBuilderHasErrorsCommand;
+import org.drools.definition.KnowledgePackage;
+import org.drools.io.Resource;
+import org.drools.runtime.ExecutionResults;
+import org.drools.vsm.CollectionClient;
+import org.drools.vsm.Message;
+import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
+
+public class KnowledgeBuilderRemoteClient
+    implements
+    KnowledgeBuilder {
+    private ServiceManagerRemoteClient serviceManager;
+    private String                     instanceId;
+
+    public KnowledgeBuilderRemoteClient(String instanceId,
+                                        ServiceManagerRemoteClient serviceManager) {
+        this.instanceId = instanceId;
+        this.serviceManager = serviceManager;
+    }
+
+    public void add(Resource resource,
+                    ResourceType resourceType) {
+        add( resource,
+             resourceType,
+             null );
+    }
+
+    public void add(Resource resource,
+                    ResourceType resourceType,
+                    ResourceConfiguration configuration) {
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderAddCommand( resource,
+                                                                                                                  resourceType,
+                                                                                                                  configuration ),
+                                                                                  instanceId,
+                                                                                  null,
+                                                                                  null,
+                                                                                  null ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().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 KnowledgeBuilderErrors getErrors() {
+        String commandId = "kbuilder.getErrors_" + serviceManager.getNextId();
+        String kresultsId = "kresults_" + serviceManager.getSessionId();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderGetErrorsCommand( commandId ),
+                                                                                  instanceId,
+                                                                                  null,
+                                                                                  null,
+                                                                                  kresultsId ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( object == null ) {
+                throw new RuntimeException( "Response was not correctly received" );
+            }
+
+            return (KnowledgeBuilderErrors) ((ExecutionResults) object).getValue( commandId );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+    public Collection<KnowledgePackage> getKnowledgePackages() {
+        return new CollectionClient<KnowledgePackage>( this.instanceId );
+    }
+
+    public boolean hasErrors() {
+        String commandId = "kbuilder.hasErrors_" + serviceManager.getNextId();
+        String kresultsId = "kresults_" + serviceManager.getSessionId();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.getNextId(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderHasErrorsCommand( commandId ),
+                                                                                  instanceId,
+                                                                                  null,
+                                                                                  null,
+                                                                                  kresultsId ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( object == null ) {
+                throw new RuntimeException( "Response was not correctly received" );
+            }
+
+            System.out.println( "object" + object );
+
+            return (Boolean) ((ExecutionResults) object).getValue( commandId );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+}

Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java (from rev 29307, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerClient.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/ServiceManagerRemoteClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,276 @@
+package org.drools.vsm.remote;
+
+import java.util.Collection;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.agent.KnowledgeAgentProvider;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderProvider;
+import org.drools.command.Command;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.command.vsm.LookupCommand;
+import org.drools.command.vsm.RegisterCommand;
+import org.drools.command.vsm.ServiceManagerClientConnectCommand;
+import org.drools.persistence.jpa.JPAKnowledgeServiceProvider;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.Environment;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.vsm.GenericConnector;
+import org.drools.vsm.Message;
+import org.drools.vsm.ServiceManager;
+import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
+
+public class ServiceManagerRemoteClient
+    implements
+    ServiceManager {
+    public GenericConnector client;
+
+    public AtomicInteger    counter;
+
+    public ServiceManagerRemoteClient(String name,
+                                      GenericConnector client) {
+        this.client = client;
+        this.counter = new AtomicInteger();
+    }
+
+    private int sessionId = -1;
+
+    public boolean connect() {
+        boolean connected = this.client.connect();
+
+        if ( connected ) {
+            String commandId = "serviceManager.connected" + getNextId();
+            String kresultsId = "kresults_" + getSessionId();
+
+            Message msg = new Message( -1,
+                                       counter.incrementAndGet(),
+                                       false,
+                                       new KnowledgeContextResolveFromContextCommand( new ServiceManagerClientConnectCommand( commandId ),
+                                                                                      null,
+                                                                                      null,
+                                                                                      null,
+                                                                                      kresultsId ) );
+
+            BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+            try {
+                client.addResponseHandler( msg.getResponseId(),
+                                           handler );
+
+                client.write( msg );
+
+                Object object = handler.getMessage().getPayload();
+
+                if ( object == null ) {
+                    throw new RuntimeException( "Response was not correctly received" );
+                }
+
+                sessionId = (Integer) ((ExecutionResults) object).getValue( commandId );
+
+                connected = true;
+            } catch ( Exception e ) {
+                throw new RuntimeException( "Unable to execute message",
+                                            e );
+            }
+        }
+
+        return connected;
+    }
+
+    public void disconnect() {
+        this.client.disconnect();
+    }
+
+    public KnowledgeBuilderProvider getKnowledgeBuilderFactory() {
+        return new KnowledgeBuilderProviderRemoteClient( this );
+    }
+
+    public KnowledgeBaseProvider getKnowledgeBaseFactory() {
+        return new KnowledgeBaseProviderRemoteClient( this );
+    }
+
+    public KnowledgeAgentProvider getKnowledgeAgentFactory() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public JPAKnowledgeServiceProvider JPAKnowledgeService() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Environment getEnvironment() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<String> list() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void register(String identifier,
+                         CommandExecutor executor) {
+        String commandId = "client.lookup" + getNextId();
+        String kresultsId = "kresults_" + getSessionId();
+
+        int type;
+        if ( executor instanceof StatefulKnowledgeSession ) {
+            type = 0;
+        } else {
+            throw new IllegalArgumentException( "Type is not supported for registration" );
+        }
+
+        Message msg = new Message( getSessionId(),
+                                   counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new RegisterCommand( identifier,
+                                                                                                       ((StatefulKnowledgeSessionRemoteClient) executor).getInstanceId(),
+                                                                                                       type ),
+                                                                                  null,
+                                                                                  null,
+                                                                                  null,
+                                                                                  null ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            client.addResponseHandler( msg.getResponseId(),
+                                       handler );
+
+            client.write( msg );
+
+            Object object = handler.getMessage().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" + getNextId();
+        String kresultsId = "kresults_" + getSessionId();
+
+        Message msg = new Message( getSessionId(),
+                                   counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new LookupCommand( identifier,
+                                                                                                     commandId ),
+                                                                                  null,
+                                                                                  null,
+                                                                                  null,
+                                                                                  kresultsId ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            client.addResponseHandler( msg.getResponseId(),
+                                       handler );
+
+            client.write( msg );
+
+            Object object = handler.getMessage().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,
+                                                                         this );
+                    break;
+                }
+                default : {
+
+                }
+
+            }
+
+            return executor;
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+    public void release(Object object) {
+        // TODO Auto-generated method stub
+    }
+
+    public void release(String identifier) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public static class RemoveKnowledgeBuilderProvider
+        implements
+        KnowledgeBuilderProvider {
+
+        public DecisionTableConfiguration newDecisionTableConfiguration() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase,
+                                                    KnowledgeBuilderConfiguration conf) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties,
+                                                                              ClassLoader classLoader) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+    }
+
+    public int getSessionId() {
+        return sessionId;
+    }
+
+    public int getNextId() {
+        return this.counter.incrementAndGet();
+    }
+
+    public ExecutionResults execute(Command command) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/StatefulKnowledgeSessionRemoteClient.java (from rev 29307, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/StatefulKnowledgeSessionClient.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/StatefulKnowledgeSessionRemoteClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/remote/StatefulKnowledgeSessionRemoteClient.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,350 @@
+package org.drools.vsm.remote;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.drools.KnowledgeBase;
+import org.drools.command.Command;
+import org.drools.command.ExecuteCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.event.process.ProcessEventListener;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.WorkingMemoryEventListener;
+import org.drools.runtime.Environment;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.ExitPoint;
+import org.drools.runtime.Globals;
+import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.rule.Agenda;
+import org.drools.runtime.rule.AgendaFilter;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+import org.drools.time.SessionClock;
+import org.drools.vsm.Message;
+import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
+
+public class StatefulKnowledgeSessionRemoteClient
+    implements
+    StatefulKnowledgeSession {
+
+    private ServiceManagerRemoteClient serviceManager;
+    private String                     instanceId;
+
+    public StatefulKnowledgeSessionRemoteClient(String instanceId,
+                                                ServiceManagerRemoteClient serviceManager) {
+        this.instanceId = instanceId;
+        this.serviceManager = serviceManager;
+    }
+
+    public String getInstanceId() {
+        return this.instanceId;
+    }
+
+    public void dispose() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public int getId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public int fireAllRules() {
+        String commandId = "ksession.fireAllRules" + serviceManager.getNextId();
+        String kresultsId = "kresults_" + serviceManager.getSessionId();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new FireAllRulesCommand( commandId ),
+                                                                                  null,
+                                                                                  null,
+                                                                                  instanceId,
+                                                                                  kresultsId ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( object == null ) {
+                throw new RuntimeException( "Response was not correctly received" );
+            }
+
+            return (Integer) ((ExecutionResults) object).getValue( commandId );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+    public int fireAllRules(int max) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public int fireAllRules(AgendaFilter agendaFilter) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public void fireUntilHalt() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void fireUntilHalt(AgendaFilter agendaFilter) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public ExecutionResults execute(Command command) {
+        String commandId = "ksession.execute" + serviceManager.getNextId();
+        String kresultsId = "kresults_" + serviceManager.getSessionId();
+
+        Message msg = new Message( serviceManager.getSessionId(),
+                                   serviceManager.counter.incrementAndGet(),
+                                   false,
+                                   new KnowledgeContextResolveFromContextCommand( new ExecuteCommand( commandId,
+                                                                                                      command ),
+                                                                                  null,
+                                                                                  null,
+                                                                                  instanceId,
+                                                                                  kresultsId ) );
+
+        BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+        try {
+            serviceManager.client.addResponseHandler( msg.getResponseId(),
+                                                      handler );
+
+            serviceManager.client.write( msg );
+
+            Object object = handler.getMessage().getPayload();
+
+            if ( object == null ) {
+                throw new RuntimeException( "Response was not correctly received" );
+            }
+
+            System.out.println( "object" + object );
+
+            return (ExecutionResults) ((ExecutionResults) object).getValue( commandId );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+    public Environment getEnvironment() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Object getGlobal(String identifier) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Globals getGlobals() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public KnowledgeBase getKnowledgeBase() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public <T extends SessionClock> T getSessionClock() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void registerExitPoint(String name,
+                                  ExitPoint exitPoint) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void setGlobal(String identifier,
+                          Object object) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void unregisterExitPoint(String name) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public Agenda getAgenda() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public QueryResults getQueryResults(String query) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public QueryResults getQueryResults(String query,
+                                        Object[] arguments) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection< ? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void halt() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public FactHandle getFactHandle(Object object) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public <T extends FactHandle> Collection<T> getFactHandles() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public <T extends FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Object getObject(FactHandle factHandle) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<Object> getObjects() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<Object> getObjects(ObjectFilter filter) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public FactHandle insert(Object object) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void retract(FactHandle handle) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void update(FactHandle handle,
+                       Object object) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void abortProcessInstance(long id) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public ProcessInstance getProcessInstance(long id) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<ProcessInstance> getProcessInstances() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public WorkItemManager getWorkItemManager() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void signalEvent(String type,
+                            Object event) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public ProcessInstance startProcess(String processId) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public ProcessInstance startProcess(String processId,
+                                        Map<String, Object> parameters) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void addEventListener(WorkingMemoryEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void addEventListener(AgendaEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public Collection<AgendaEventListener> getAgendaEventListeners() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Collection<WorkingMemoryEventListener> getWorkingMemoryEventListeners() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void removeEventListener(WorkingMemoryEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void removeEventListener(AgendaEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void addEventListener(ProcessEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public Collection<ProcessEventListener> getProcessEventListeners() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void removeEventListener(ProcessEventListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Added: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerLocalTest.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerLocalTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerLocalTest.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,14 @@
+package org.drools.vsm;
+
+import org.drools.vsm.local.ServiceManagerLocalClient;
+
+public class ServiceManagerLocalTest extends ServiceManagerTestBase {
+
+    protected void setUp() throws Exception {
+        this.client = new ServiceManagerLocalClient();
+    }
+
+    protected void tearDown() throws Exception {
+    }
+
+}

Added: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerMinaRemoteTest.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerMinaRemoteTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerMinaRemoteTest.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,51 @@
+package org.drools.vsm;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
+import org.drools.vsm.mina.MinaAcceptor;
+import org.drools.vsm.mina.MinaConnector;
+import org.drools.vsm.mina.MinaIoHandler;
+import org.drools.vsm.remote.ServiceManagerRemoteClient;
+
+public class ServiceManagerMinaRemoteTest extends ServiceManagerTestBase {
+    AcceptorService server;
+
+    protected void setUp() throws Exception {
+        SocketAddress address = new InetSocketAddress( "127.0.0.1",
+                                                       9123 );
+
+        ServiceManagerData serverData = new ServiceManagerData();
+        // setup Server
+        SocketAcceptor acceptor = new NioSocketAcceptor();
+        acceptor.setHandler( new MinaIoHandler( SystemEventListenerFactory.getSystemEventListener(),
+                                                new GenericMessageHandlerImpl( serverData,
+                                                                           SystemEventListenerFactory.getSystemEventListener() ) ) );
+        this.server = new MinaAcceptor( acceptor,
+                                        address );
+        this.server.start();
+
+        // setup Client
+        NioSocketConnector clientConnector = new NioSocketConnector();
+        clientConnector.setHandler( new MinaIoHandler( SystemEventListenerFactory.getSystemEventListener() ) );
+        GenericConnector minaClient = new MinaConnector( "client 1",
+                                                         clientConnector,
+                                                         address,
+                                                         SystemEventListenerFactory.getSystemEventListener() );
+        this.client = new ServiceManagerRemoteClient( "client 1",
+                                                      minaClient );
+
+        ((ServiceManagerRemoteClient) client).connect();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        ((ServiceManagerRemoteClient) client).disconnect();
+        this.server.stop();
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java	2009-10-14 01:13:50 UTC (rev 29598)
+++ labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -1,199 +0,0 @@
-package org.drools.vsm;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-import junit.framework.TestCase;
-
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseProvider;
-import org.drools.SystemEventListenerFactory;
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderProvider;
-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.drools.vsm.MessageHandler;
-import org.drools.vsm.ServiceManagerClient;
-import org.drools.vsm.ServiceManagerServer;
-
-public class ServiceManagerTest extends TestCase {
-	ServiceManagerServer server;
-    ServiceManagerClient client;
-
-    @Override
-    protected void setUp() throws Exception {
-    	this.server = new ServiceManagerServer();
-	    Thread thread = new Thread( server );
-	    thread.start();
-	    Thread.sleep( 500 );  
-	    	
-    	this.client = new ServiceManagerClient( "client 1",
-    			     							new MessageHandler(SystemEventListenerFactory.getSystemEventListener()) );
-    	
-      NioSocketConnector connector = new NioSocketConnector();
-      SocketAddress address = new InetSocketAddress( "127.0.0.1",
-                                                     9123 );
-      client.connect( connector,
-                      address );
-    }
-    
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        client.disconnect();
-        server.stop();
-    }
-    
-    public void testFireAllRules() 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"  ;      
-        
-    	KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
-    	KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
-    	kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-    	
-    	if ( kbuilder.hasErrors() ) {
-    	    System.out.println( "Errors: " + kbuilder.getErrors() );
-    	}
-    	
-    	KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
-    	KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
-    	
-    	kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-    	
-    	StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-    	int fired = ksession.fireAllRules();
-    	assertEquals( 2, fired );
-    }
-    
-    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"  ;      
-        
-        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
-        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
-        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-        
-        if ( kbuilder.hasErrors() ) {
-            System.out.println( "Errors: " + kbuilder.getErrors() );
-        }
-        
-        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
-        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
-        
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-        
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        
-        ExecutionResults results = ksession.execute( new FireAllRulesCommand( "fired" ) );
-       
-        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"  ;      
-        
-        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
-        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
-        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-        
-        if ( kbuilder.hasErrors() ) {
-            System.out.println( "Errors: " + kbuilder.getErrors() );
-        }
-        
-        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
-        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
-        
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-        
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        
-        this.client.register( "ksession1", ksession );
-        
-        ExecutionResults results = this.client.lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
-       
-        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"  ;      
-        
-        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
-        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
-        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-        
-        if ( kbuilder.hasErrors() ) {
-            System.out.println( "Errors: " + kbuilder.getErrors() );
-        }
-        
-        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
-        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
-        
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-        
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        
-        this.client.register( "ksession1", ksession );
-        
-//        ExecutionResults results = this.client.lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
-//       
-//        assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
-    } 
-}

Copied: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java (from rev 29307, labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTestBase.java	2009-10-14 01:21:57 UTC (rev 29599)
@@ -0,0 +1,177 @@
+package org.drools.vsm;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseProvider;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderProvider;
+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;
+
+public class ServiceManagerTestBase extends TestCase {
+
+    protected ServiceManager client;
+
+    public void testFireAllRules() 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";
+
+        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
+        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( "Errors: " + kbuilder.getErrors() );
+        }
+
+        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
+        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
+
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        int fired = ksession.fireAllRules();
+        assertEquals( 2,
+                      fired );
+    }
+
+    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";
+
+        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
+        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( "Errors: " + kbuilder.getErrors() );
+        }
+
+        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
+        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
+
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        ExecutionResults results = ksession.execute( new FireAllRulesCommand( "fired" ) );
+
+        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";
+
+        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
+        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( "Errors: " + kbuilder.getErrors() );
+        }
+
+        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
+        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
+
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        this.client.register( "ksession1",
+                              ksession );
+
+        ExecutionResults results = this.client.lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+
+        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";
+
+        KnowledgeBuilderProvider kbuilderFactory = this.client.getKnowledgeBuilderFactory();
+        KnowledgeBuilder kbuilder = kbuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( "Errors: " + kbuilder.getErrors() );
+        }
+
+        KnowledgeBaseProvider kbaseFactory = this.client.getKnowledgeBaseFactory();
+        KnowledgeBase kbase = kbaseFactory.newKnowledgeBase();
+
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        this.client.register( "ksession1",
+                              ksession );
+
+        //        ExecutionResults results = this.client.lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+        //       
+        //        assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
+    }
+}



More information about the jboss-svn-commits mailing list