[jboss-svn-commits] JBL Code SVN: r32165 - in labs/jbossrules/branches/salaboy_ServiceAPIs: drools-services and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Mar 21 11:23:38 EDT 2010
Author: salaboy21
Date: 2010-03-21 11:23:37 -0400 (Sun, 21 Mar 2010)
New Revision: 32165
Added:
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/builder/DirectoryLookupFactoryService.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java
Removed:
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
Modified:
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java
labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java
Log:
JBRULES-2446: Drools Services API
- drools-services more tests, add support for directory in remote env, move diretorylookupfactoryservice to api
Copied: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/builder/DirectoryLookupFactoryService.java (from rev 32162, labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java)
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/builder/DirectoryLookupFactoryService.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-api/src/main/java/org/drools/builder/DirectoryLookupFactoryService.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.builder;
+
+import org.drools.runtime.CommandExecutor;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface DirectoryLookupFactoryService {
+ public void register(String key, CommandExecutor value);
+ public CommandExecutor lookup(String key);
+}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/pom.xml 2010-03-21 15:23:37 UTC (rev 32165)
@@ -26,6 +26,7 @@
<artifactId>drools-api</artifactId>
<type>jar</type>
+ <version>5.1.0.SNAPSHOT</version>
</dependency>
<dependency>
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/RemoteExecutionNodeConnection.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -14,14 +14,15 @@
* limitations under the License.
* under the License.
*/
-
package org.drools.services;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.services.generic.GenericConnector;
+import org.drools.services.remote.DirectoryLookupProviderRemoteClient;
import org.drools.services.remote.KnowledgeBaseProviderRemoteClient;
import org.drools.services.remote.KnowledgeBuilderProviderRemoteClient;
@@ -32,18 +33,10 @@
public class RemoteExecutionNodeConnection implements ExecutionNodeConnection {
private String name;
-
public GenericConnector client;
-
- private List<GenericConnector> services;
-
- public AtomicInteger counter;
-
+ public AtomicInteger counter;
private int sessionId = -1;
-
-
-
public RemoteExecutionNodeConnection(String name, GenericConnector connector) {
this.name = name;
this.client = connector;
@@ -52,19 +45,21 @@
public ExecutionNode connect() {
- if(client.connect()){
+ if (client.connect()) {
ExecutionNode node = new ExecutionNode();
- node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(this) );
- node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(this) );
+ node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(this));
+ node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(this));
+ node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderRemoteClient(this));
return node;
}
return null;
}
- public void disconnect(){
+ public void disconnect() {
client.disconnect();
}
+
public GenericConnector getClient() {
return client;
}
@@ -81,9 +76,6 @@
this.name = name;
}
-
-
-
public int getSessionId() {
return sessionId;
}
@@ -91,5 +83,4 @@
public int getNextId() {
return this.counter.incrementAndGet();
}
-
}
Added: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java (rev 0)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/main/java/org/drools/services/remote/DirectoryLookupProviderRemoteClient.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+package org.drools.services.remote;
+
+import java.rmi.RemoteException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.command.FinishedCommand;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.services.RemoteExecutionNodeConnection;
+import org.drools.services.command.LookupCommand;
+import org.drools.services.command.RegisterCommand;
+import org.drools.services.generic.Message;
+import org.drools.services.generic.MessageSession;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryLookupProviderRemoteClient implements DirectoryLookupFactoryService {
+
+ private RemoteExecutionNodeConnection nodeConnection;
+ private MessageSession messageSession;
+
+ public DirectoryLookupProviderRemoteClient(RemoteExecutionNodeConnection nodeConnection) {
+ this.nodeConnection = nodeConnection;
+ this.messageSession = new MessageSession();
+ }
+
+ public void register(String identifier,
+ CommandExecutor executor) {
+
+ String commandId = "client.lookup" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
+ int type;
+
+
+ if (executor instanceof StatefulKnowledgeSession) {
+ type = 0;
+ } else {
+ throw new IllegalArgumentException("Type is not supported for registration");
+ }
+ Message msg = new Message(messageSession.getSessionId(), messageSession.getCounter().incrementAndGet(), false, new KnowledgeContextResolveFromContextCommand(new RegisterCommand(identifier, ((StatefulKnowledgeSessionRemoteClient) executor).getInstanceId(), type), null, null, null, null));
+ System.out.println("Registering " + identifier + " - - " + nodeConnection.client.getId());
+
+ try {
+ Object object = nodeConnection.client.write(msg).getPayload();
+ if (!(object instanceof FinishedCommand)) {
+ throw new RuntimeException("Response was not correctly ended");
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to execute message", e);
+ }
+
+ }
+
+ public CommandExecutor lookup(String identifier) {
+ String commandId = "client.lookup" + messageSession.getNextId();
+ String kresultsId = "kresults_" + messageSession.getSessionId();
+
+ Message msg = new Message(messageSession.getSessionId(),
+ messageSession.getCounter().incrementAndGet(),
+ false,
+ new KnowledgeContextResolveFromContextCommand(new LookupCommand(identifier,
+ commandId),
+ null,
+ null,
+ null,
+ kresultsId));
+ System.out.println("Looking up the session with identifier = " + identifier);
+
+ try {
+ Object object = nodeConnection.client.write(msg).getPayload();
+
+ if (object == null) {
+ throw new RuntimeException("Response was not correctly received");
+ }
+ String value = (String) ((ExecutionResults) object).getValue(commandId);
+ String type = String.valueOf(value.charAt(0));
+ String instanceId = value.substring(2);
+
+ CommandExecutor executor = null;
+ switch (Integer.parseInt(type)) {
+ case 0: {
+ executor = new StatefulKnowledgeSessionRemoteClient(instanceId, nodeConnection);
+ break;
+ }
+ default: {
+ }
+
+ }
+
+ return executor;
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to execute message",
+ e);
+ }
+ }
+}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services/src/test/java/org/drools/service/ExecutionNodeBaseTest.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -21,10 +21,13 @@
import org.drools.KnowledgeBase;
import org.drools.services.ExecutionNode;
import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.builder.ResourceType;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
import org.drools.io.ResourceFactory;
+import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
import org.junit.Assert;
import org.junit.Before;
@@ -87,6 +90,127 @@
}
+ public void testExecute() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+ KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( "Errors: " + kbuilder.getErrors() );
+ }
+
+ KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ExecutionResults results = ksession.execute( new FireAllRulesCommand( "fired" ) );
+
+ Assert.assertEquals( 2,
+ (int) (Integer) results.getValue( "fired" ) );
+ }
+
+ public void testNamedService() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+ KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( "Errors: " + kbuilder.getErrors() );
+ }
+
+ KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ node.get(DirectoryLookupFactoryService.class).register( "ksession1",
+ ksession );
+
+ ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+
+ Assert.assertEquals( 2,
+ (int) (Integer) results.getValue( "fired" ) );
+ }
+
+ public void testVsmPipeline() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+ KnowledgeBuilder kbuilder = node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( "Errors: " + kbuilder.getErrors() );
+ }
+
+ KnowledgeBase kbase = node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ node.get(DirectoryLookupFactoryService.class).register( "ksession1",
+ ksession );
+
+ ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
+
+ Assert.assertEquals( 2, (int ) ( Integer) results.getValue( "fired" ) );
+ }
}
Deleted: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupFactoryService.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -1,29 +0,0 @@
-/*
- * Copyright 2010 salaboy.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * under the License.
- */
-
-package org.drools.services.grid;
-
-import org.drools.runtime.CommandExecutor;
-
-/**
- *
- * @author salaboy
- */
-public interface DirectoryLookupFactoryService {
- public void register(String key, CommandExecutor value);
- public CommandExecutor lookup(String key);
-}
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/DirectoryLookupProviderGridClient.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -20,6 +20,7 @@
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.command.FinishedCommand;
import org.drools.command.KnowledgeContextResolveFromContextCommand;
import org.drools.runtime.CommandExecutor;
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/main/java/org/drools/services/grid/ExecutionGridConnection.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -16,6 +16,7 @@
*/
package org.drools.services.grid;
+import org.drools.builder.DirectoryLookupFactoryService;
import java.util.ArrayList;
import java.util.List;
import org.drools.KnowledgeBaseFactoryService;
@@ -73,7 +74,7 @@
new KnowledgeBaseProviderGridClient( currentService, this ));
- node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentService,this));
+ node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderGridClient(currentService,this));
// new GridExecutionNodeConnection
// ((GridNodeExecutionService)currentService).getId(),
Modified: labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java 2010-03-21 15:03:36 UTC (rev 32164)
+++ labs/jbossrules/branches/salaboy_ServiceAPIs/drools-services-grid/src/test/java/org/drools/services/ExecutionNodeBaseTest.java 2010-03-21 15:23:37 UTC (rev 32165)
@@ -27,7 +27,7 @@
import org.drools.io.ResourceFactory;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.services.grid.DirectoryLookupFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.services.grid.ExecutionGridConnection;
import org.drools.services.grid.KnowledgeBaseProviderGridClient;
import org.drools.services.grid.strategies.StaticIncrementalSelectionStrategy;
More information about the jboss-svn-commits
mailing list