[jboss-svn-commits] JBL Code SVN: r29307 - in labs/jbossrules/trunk: drools-vsm/src/main/java/org/drools/command and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Sep 11 01:32:50 EDT 2009
Author: mark.proctor at jboss.com
Date: 2009-09-11 01:32:50 -0400 (Fri, 11 Sep 2009)
New Revision: 29307
Added:
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/
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/test/java/org/drools/vsm/
labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java
Removed:
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/distributed/
labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/KnowledgeCommandContext.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
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerClient.java
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServer.java
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServerResponseHandler.java
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/StatefulKnowledgeSessionClient.java
Log:
JBRULES-2269 Virtual Service Manager
-registration/lookup now works
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/KnowledgeCommandContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/KnowledgeCommandContext.java 2009-09-10 23:21:47 UTC (rev 29306)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/KnowledgeCommandContext.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -7,6 +7,7 @@
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.vsm.ServiceManager;
public class KnowledgeCommandContext
implements
Copied: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm (from rev 29199, labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/distributed)
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/LookupCommand.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -0,0 +1,48 @@
+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;
+
+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) {
+ 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 );
+ }
+ return instanceId;
+ }
+
+}
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/RegisterCommand.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -0,0 +1,43 @@
+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;
+
+public class RegisterCommand
+ implements
+ GenericCommand<Void> {
+
+ private String identifier;
+ private String instanceId;
+ private int type;
+
+ public RegisterCommand(String identifier,
+ String instanceId,
+ int type) {
+ this.identifier = identifier;
+ this.instanceId = instanceId;
+ this.type = type;
+ }
+
+ public Void execute(Context context) {
+ ServiceManagerServer server = (ServiceManagerServer) context.get( ServiceManagerServer.SERVICE_MANAGER );
+
+ server.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/distributed/ServiceManagerClientConnectCommand.java 2009-09-06 05:17:01 UTC (rev 29199)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerClientConnectCommand.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -1,4 +1,4 @@
-package org.drools.command.distributed;
+package org.drools.command.vsm;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderErrors;
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/distributed/ServiceManagerServerContext.java 2009-09-06 05:17:01 UTC (rev 29199)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/command/vsm/ServiceManagerServerContext.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -1,4 +1,4 @@
-package org.drools.command.distributed;
+package org.drools.command.vsm;
import org.drools.command.Context;
import org.drools.command.ContextManager;
Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerClient.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerClient.java 2009-09-10 23:21:47 UTC (rev 29306)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerClient.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -18,31 +18,42 @@
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderProvider;
import org.drools.command.Command;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
import org.drools.command.builder.KnowledgeBuilderHasErrorsCommand;
-import org.drools.command.distributed.ServiceManagerClientConnectCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+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.ServiceManager;
import org.drools.vsm.responsehandlers.BlockingMessageResponseHandler;
-public class ServiceManagerClient implements ServiceManager {
- public BaseMinaClient client;
-
- public AtomicInteger counter;
-
+public class ServiceManagerClient
+ implements
+ ServiceManager {
+ public BaseMinaClient client;
+
+ public AtomicInteger counter;
+
public ServiceManagerClient(String name,
BaseMinaHandler handler) {
- this.client = new BaseMinaClient( name, handler );
+ this.client = new BaseMinaClient( name,
+ handler );
this.counter = new AtomicInteger();
}
private int sessionId;
-
+
public boolean connect(SocketConnector connector,
- SocketAddress address) {
- boolean connected = this.client.connect(connector, address);
-
+ SocketAddress address) {
+ boolean connected = this.client.connect( connector,
+ address );
+
if ( connected ) {
Message msg = new Message( -1,
counter.incrementAndGet(),
@@ -53,34 +64,33 @@
BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
this.client.handler.addResponseHandler( msg.getResponseId(),
- handler );
+ handler );
this.client.session.write( msg );
this.sessionId = (Integer) handler.getMessage().getPayload();
}
-
+
return connected;
}
-
+
public void disconnect() {
- this.client.disconnect();
+ this.client.disconnect();
}
-
public KnowledgeBuilderProvider getKnowledgeBuilderFactory() {
return new KnowledgeBuilderProviderClient( this );
}
-
+
public KnowledgeBaseProvider getKnowledgeBaseFactory() {
return new KnowledgeBaseProviderClient( this );
- }
-
+ }
+
public KnowledgeAgentProvider getKnowledgeAgentFactory() {
// TODO Auto-generated method stub
return null;
- }
-
+ }
+
public JPAKnowledgeServiceProvider JPAKnowledgeService() {
// TODO Auto-generated method stub
return null;
@@ -96,29 +106,114 @@
return null;
}
- public CommandExecutor lookup(String identifer) {
- // TODO Auto-generated method stub
- return null;
- }
-
public void register(String identifier,
CommandExecutor executor) {
- // TODO Auto-generated method stub
+ 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,
+ null,
+ new KnowledgeContextResolveFromContextCommand( new RegisterCommand( identifier,
+ ((StatefulKnowledgeSessionClient) executor).getInstanceId(),
+ type ),
+ null,
+ null,
+ null,
+ null ) );
+
+ BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+ try {
+ client.handler.addResponseHandler( msg.getResponseId(),
+ handler );
+
+ client.session.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,
+ null,
+ new KnowledgeContextResolveFromContextCommand( new LookupCommand( identifier,
+ commandId ),
+ null,
+ null,
+ null,
+ kresultsId ) );
+
+ BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+
+ try {
+ client.handler.addResponseHandler( msg.getResponseId(),
+ handler );
+
+ client.session.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 StatefulKnowledgeSessionClient( 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 static class RemoveKnowledgeBuilderProvider
+ implements
+ KnowledgeBuilderProvider {
+
public DecisionTableConfiguration newDecisionTableConfiguration() {
// TODO Auto-generated method stub
return null;
@@ -154,9 +249,9 @@
ClassLoader classLoader) {
// TODO Auto-generated method stub
return null;
- }
+ }
}
-
+
public void send(Command command) {
this.client.session.write( command );
}
@@ -164,11 +259,9 @@
public int getSessionId() {
return sessionId;
}
-
+
public int getNextId() {
return this.counter.incrementAndGet();
}
-
-
}
Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServer.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServer.java 2009-09-10 23:21:47 UTC (rev 29306)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServer.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -1,6 +1,8 @@
package org.drools.vsm;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
@@ -13,25 +15,62 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderConfiguration;
import org.drools.builder.KnowledgeBuilderProvider;
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.command.impl.ContextImpl;
import org.drools.persistence.jpa.JPAKnowledgeServiceProvider;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.Environment;
+import org.drools.vsm.ServiceManagerServerResponseHandler.ContextManagerImpl;
public class ServiceManagerServer extends BaseMinaServer
implements
Runnable {
- private AtomicInteger sessionIdCounter = new AtomicInteger();
-
+ private AtomicInteger sessionIdCounter = new AtomicInteger();
+
+ private ContextManager contextManager;
+
+ private Context root;
+ private Context temp;
+
+ public static String ROOT = "ROOT";
+ public static String TEMP = "__TEMP__";
+ public static String SERVICE_MANAGER = "__ServiceManager__";
+
public AtomicInteger getSessionIdCounter() {
return sessionIdCounter;
}
-
+
public ServiceManagerServer() {
super( new ServiceManagerServerResponseHandler( SystemEventListenerFactory.getSystemEventListener() ),
9123 );
- ((ServiceManagerServerResponseHandler)this.handler).setServiceManagerService( this );
+ this.contextManager = new ContextManagerImpl();
+
+ this.root = new ContextImpl( ROOT,
+ this.contextManager );
+ ((ContextManagerImpl) this.contextManager).addContext( this.root );
+
+ this.temp = new ContextImpl( TEMP,
+ this.contextManager,
+ this.root );
+ ((ContextManagerImpl) this.contextManager).addContext( this.temp );
+
+ ((ServiceManagerServerResponseHandler) this.handler).setServiceManagerService( this );
+
+ this.temp.set( "__ServiceManager__",
+ this );
}
-
+ public ContextManager getContextManager() {
+ return contextManager;
+ }
+ public Context getRoot() {
+ return root;
+ }
+
+ public Context getTemp() {
+ return temp;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServerResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServerResponseHandler.java 2009-09-10 23:21:47 UTC (rev 29306)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/ServiceManagerServerResponseHandler.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -24,11 +24,12 @@
import org.drools.command.Context;
import org.drools.command.ContextManager;
import org.drools.command.FinishedCommand;
-import org.drools.command.distributed.ServiceManagerClientConnectCommand;
-import org.drools.command.distributed.ServiceManagerServerContext;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
import org.drools.command.impl.ContextImpl;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.command.vsm.ServiceManagerClientConnectCommand;
+import org.drools.command.vsm.ServiceManagerServerContext;
import org.drools.persistence.jpa.JPAKnowledgeServiceProvider;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.Environment;
@@ -38,16 +39,8 @@
public class ServiceManagerServerResponseHandler extends IoHandlerAdapter {
private ServiceManagerServer server;
- private Map<String, Object> registeredObjects;
- private ContextManager contextManager;
- private Context root;
- private Context temp;
-
- private String ROOT = "ROOT";
- private String TEMP = "__TEMP__";
-
public static class ContextManagerImpl
implements
ContextManager {
@@ -75,14 +68,7 @@
public ServiceManagerServerResponseHandler(SystemEventListener systemEventListener) {
this.systemEventListener = systemEventListener;
- this.contextManager = new ContextManagerImpl();
- this.root = new ContextImpl( ROOT,
- this.contextManager );
- ((ContextManagerImpl) this.contextManager).addContext( this.root );
-
- this.temp = new ContextImpl( TEMP, this.contextManager, this.root );
- ((ContextManagerImpl) this.contextManager).addContext( this.temp );
}
public void setServiceManagerService(ServiceManagerServer server) {
@@ -128,7 +114,7 @@
} finally {
}
-
+
List<GenericCommand> commands;
if ( msg.getPayload() instanceof List ) {
commands = (List<GenericCommand>) msg.getPayload();
@@ -138,7 +124,7 @@
}
//KnowledgeCommandContext ktcx = new KnowledgeCommandContext(this.temp);
- ContextImpl localSessionContext = new ContextImpl( "sesseion_" + msg.getSessionId(), this.contextManager, this.temp );
+ ContextImpl localSessionContext = new ContextImpl( "sesseion_" + msg.getSessionId(), this.server.getContextManager(), this.server.getTemp() );
ExecutionResultImpl localKresults = new ExecutionResultImpl();
localSessionContext.set( "kresults_" + msg.getSessionId(), localKresults );
for ( GenericCommand cmd : commands ) {
Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/StatefulKnowledgeSessionClient.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/StatefulKnowledgeSessionClient.java 2009-09-10 23:21:47 UTC (rev 29306)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/StatefulKnowledgeSessionClient.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -42,6 +42,10 @@
this.instanceId = instanceId;
this.serviceManager = serviceManager;
}
+
+ public String getInstanceId() {
+ return this.instanceId;
+ }
public void dispose() {
// TODO Auto-generated method stub
@@ -56,7 +60,7 @@
public int fireAllRules() {
String commandId = "ksession.fireAllRules" + serviceManager.getNextId();
String kresultsId = "kresults_" + serviceManager.getSessionId();
-
+
Message msg = new Message( serviceManager.getSessionId(),
serviceManager.counter.incrementAndGet(),
false,
@@ -64,7 +68,8 @@
new KnowledgeContextResolveFromContextCommand( new FireAllRulesCommand( commandId ),
null,
null,
- instanceId, kresultsId ) );
+ instanceId,
+ kresultsId ) );
BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
@@ -78,7 +83,7 @@
if ( object == null ) {
throw new RuntimeException( "Response was not correctly received" );
- }
+ }
return (Integer) ((ExecutionResults) object).getValue( commandId );
} catch ( Exception e ) {
@@ -110,15 +115,17 @@
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,
null,
- new KnowledgeContextResolveFromContextCommand( new ExecuteCommand( commandId, command ),
+ new KnowledgeContextResolveFromContextCommand( new ExecuteCommand( commandId,
+ command ),
null,
null,
- instanceId, kresultsId ) );
+ instanceId,
+ kresultsId ) );
BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
@@ -133,9 +140,9 @@
if ( object == null ) {
throw new RuntimeException( "Response was not correctly received" );
}
-
- System.out.println( "object" + object);
+ System.out.println( "object" + object );
+
return (ExecutionResults) ((ExecutionResults) object).getValue( commandId );
} catch ( Exception e ) {
throw new RuntimeException( "Unable to execute message",
Copied: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm (from rev 29199, labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/distributed)
Deleted: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/distributed/ServiceManagerTest.java 2009-09-06 05:17:01 UTC (rev 29199)
+++ labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -1,97 +0,0 @@
-package org.drools.distributed;
-
-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.io.ResourceFactory;
-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 );
-
-// super.setUp();
-// server = new MinaTaskServer( taskService );
-// Thread thread = new Thread( server );
-// thread.start();
-// Thread.sleep( 500 );
-//
-// client = new MinaTaskClient( "client 1",
-// new TaskClientHandler(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 test1() 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 );
- }
-
-}
Copied: labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java (from rev 29215, labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/distributed/ServiceManagerTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-vsm/src/test/java/org/drools/vsm/ServiceManagerTest.java 2009-09-11 05:32:50 UTC (rev 29307)
@@ -0,0 +1,199 @@
+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" ) );
+ }
+}
More information about the jboss-svn-commits
mailing list