[jboss-svn-commits] JBL Code SVN: r35884 - in labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src: main/java/org/drools/grid/impl and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Nov 5 11:54:34 EDT 2010
Author: salaboy21
Date: 2010-11-05 11:54:32 -0400 (Fri, 05 Nov 2010)
New Revision: 35884
Added:
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeLocalConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeServer.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeSocketConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/NodeConnectionFactory.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/RemoteGridConnection.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/NodeTests.java
Modified:
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridServiceDescriptionFactory.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RegisterServicesTest.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java
Log:
JBRULES-2772: Drools Grid Impl2 remoting features (socket)
- adding basic remoting features
- must fix whitepages with strings
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/Grid.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -1,12 +1,14 @@
package org.drools.grid;
-import org.drools.grid.service.directory.Address;
-
public interface Grid {
public <T> T get(Class<T> serviceClass);
public GridNode createGridNode(String id);
+ public GridNode createGridNode(GridServiceDescription gsd);
+
+ public GridNode getGridNode(String id);
+
public GridNodeConnection getGridNodeConnection(GridServiceDescription serviceDescription);
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -9,6 +9,10 @@
public interface GridServiceDescription {
public String getId();
+ public Class getServiceInterface();
+
+ public void setServiceInterface(Class cls);
+
public Class getImplementedClass();
public void setImplementedClass(Class cls);
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridImpl.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -12,6 +12,7 @@
import org.drools.grid.GridNodeConnection;
import org.drools.grid.GridServiceDescription;
import org.drools.grid.local.LocalGridConnection;
+import org.drools.grid.remote.RemoteGridConnection;
import org.drools.grid.service.directory.Address;
import org.drools.grid.service.directory.WhitePages;
@@ -91,14 +92,39 @@
}
public GridNode createGridNode(String id) {
- GridNodeConnection connection = new LocalGridConnection( id );
+ GridServiceDescription gsd = GridServiceDescriptionFactory.newGridServiceDescritpion(id);
+ return createGridNode(gsd);
+
+ }
+
+ public GridNode createGridNode(GridServiceDescription gsd){
+ GridNodeConnection connection = NodeConnectionFactory.newGridNodeConnection(gsd);
GridNode gnode = connection.getGridNode();
- localNodes.put( id, gnode );
-
+ if(gnode instanceof GridNodeImpl){
+ localNodes.put( gsd.getId(), gnode );
+ }
+
WhitePages pages = get( WhitePages.class );
- pages.create( id );
+ pages.create( gsd.getId() );
return gnode;
}
+
+ public GridNode getGridNode(String id){
+ if(isLocalNode(id)){
+ return localNodes.get(id);
+ }
+ WhitePages pages = get( WhitePages.class );
+ GridServiceDescription gsd = pages.lookup(id);
+ return new RemoteGridConnection(gsd).getGridNode();
+
+ }
+
+ private boolean isLocalNode(String id){
+ if(id.contains("@local")){
+ return true;
+ }
+ return false;
+ }
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeImpl.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -21,6 +21,9 @@
import java.util.concurrent.ConcurrentHashMap;
import org.drools.grid.GridNode;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.NodeData;
import org.drools.util.ServiceRegistry;
import org.drools.util.ServiceRegistryImpl;
@@ -28,7 +31,7 @@
*
* @author salaboy
*/
-public class GridNodeImpl implements GridNode {
+public class GridNodeImpl implements GridNode, MessageReceiverHandlerFactoryService {
private String id;
private final Map<String, Object> localContext = new ConcurrentHashMap<String, Object>();
@@ -85,5 +88,9 @@
public void init(Object context) {
}
+
+ public MessageReceiverHandler getMessageReceiverHandler() {
+ return new GridNodeServer(this, new NodeData());
+ }
}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeLocalConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeLocalConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeLocalConfiguration.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.impl;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridNode;
+import org.drools.grid.GridPeerServiceConfiguration;
+
+/**
+ *
+ * @author salaboy
+ */
+public class GridNodeLocalConfiguration implements GridPeerServiceConfiguration {
+
+ private GridNode gnode;
+ public GridNodeLocalConfiguration() {
+ }
+
+ public void setGnode(GridNode gnode) {
+ this.gnode = gnode;
+ }
+
+
+
+ public void configureService(Grid grid) {
+ GridNode gnode = (this.gnode != null) ? this.gnode : new GridNodeImpl();
+ ((GridImpl) grid).addService( GridNode.class,
+ gnode );
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeServer.java (from rev 35836, labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServer.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeServer.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeServer.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.command.impl.ContextImpl;
+import org.drools.command.impl.GenericCommand;
+import org.drools.grid.GridNode;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.Message;
+import org.drools.grid.io.MessageReceiverHandler;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.grid.io.impl.NodeData;
+import org.drools.runtime.impl.ExecutionResultImpl;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class GridNodeServer implements
+ MessageReceiverHandler{
+ private GridNode gnode;
+ private NodeData data;
+ public GridNodeServer(GridNode gnode, NodeData data) {
+ this.gnode = gnode;
+ this.data = data;
+ }
+
+ public void messageReceived(Conversation conversation, Message msg) {
+ final CommandImpl cmd = (CommandImpl) msg.getBody();
+ this.execs.get( cmd.getName() ).execute( gnode,
+ conversation,
+ msg,
+ cmd );
+ }
+
+ private Map<String, Exec> execs = new HashMap<String, Exec>() {
+ {
+ put( "execute",
+ new Exec() {
+ public void execute(Object object,
+ Conversation con,
+ Message msg,
+ CommandImpl cmd) {
+ GridNode gnode = (GridNode) object;
+ List list = cmd.getArguments();
+ GenericCommand command = (GenericCommand) list.get(0);
+
+ // Setup the evaluation context
+ ContextImpl localSessionContext = new ContextImpl( "session_" + cmd.getName(),
+ data.getContextManager(),
+ data.getTemp() );
+ ExecutionResultImpl localKresults = new ExecutionResultImpl();
+ localSessionContext.set( "kresults_" + cmd.getName(),
+ localKresults );
+
+ //for ( GenericCommand cmd : commands ) {
+ // evaluate the commands
+
+ Object result = command.execute( localSessionContext );
+
+
+
+ con.respond( result );
+ }
+ } );
+ }
+ };
+
+ public static interface Exec {
+ void execute(Object object,
+ Conversation con,
+ Message msg,
+ CommandImpl cmd);
+ }
+
+
+}
Copied: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeSocketConfiguration.java (from rev 35836, labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeSocketConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridNodeSocketConfiguration.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,81 @@
+/**
+ *
+ */
+package org.drools.grid.impl;
+
+import org.drools.grid.service.directory.impl.*;
+import org.drools.grid.CoreServicesWhitePages;
+
+import org.drools.grid.Grid;
+import org.drools.grid.GridNode;
+import org.drools.grid.GridPeerServiceConfiguration;
+import org.drools.grid.MessageReceiverHandlerFactoryService;
+import org.drools.grid.MultiplexSocketService;
+
+public class GridNodeSocketConfiguration
+implements
+GridPeerServiceConfiguration {
+ private int port = -1;
+
+ public GridNodeSocketConfiguration(int port) {
+ this.port = port;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void configureService(Grid grid) {
+ GridNode gnode = grid.get( GridNode.class );
+
+ if ( port != -1 ) {
+ CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesWhitePages.class );
+
+ GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup(GridNode.class);
+ if ( gsd == null ) {
+ gsd = new GridServiceDescriptionImpl( GridNode.class );
+ }
+
+ MultiplexSocketService mss = grid.get( MultiplexSocketService.class );
+
+
+// GridServiceDescription service = coreServicesWP.getServices().get( SchedulerService.class.getName() );
+// if( service == null){
+// coreServicesWP.getServices().put(SchedulerService.class.getName(), gsd);
+// service = gsd;
+// }
+// Address address = null;
+// if(service.getAddresses().get("socket") != null){
+// address = service.getAddresses().get("socket");
+// } else{
+// address = service.addAddress( "socket" );
+// }
+// InetSocketAddress[] addresses = (InetSocketAddress[])address.getObject();
+// if(addresses != null && addresses.length >= 1){
+// InetSocketAddress[] newAddresses = new InetSocketAddress[addresses.length+1];
+// if(addresses !=null){
+// System.arraycopy(addresses, 0, newAddresses, 0, addresses.length);
+// }
+// newAddresses[addresses.length]= new InetSocketAddress( mss.getIp(),
+// this.port);
+// ServiceConfiguration conf = new SchedulerServiceConfiguration(newAddresses);
+// service.setData(conf);
+// }else{
+// InetSocketAddress[] newAddress = new InetSocketAddress[1];
+// newAddress[0]= new InetSocketAddress( mss.getIp(),
+// this.port);
+// address.setObject( newAddress );
+// ServiceConfiguration conf = new SchedulerServiceConfiguration(newAddress);
+// service.setData(conf);
+// }
+
+
+
+
+
+ mss.addService( this.port,
+ GridNode.class.getName(),
+ ((MessageReceiverHandlerFactoryService) gnode ).getMessageReceiverHandler() );
+ }
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridServiceDescriptionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridServiceDescriptionFactory.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/GridServiceDescriptionFactory.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -33,15 +33,30 @@
try {
String[] clazzName = serviceId.split(":");
+
if(clazzName[0].equals("scheduler")){
- ((GridServiceDescriptionImpl)gsd).setId("org.drools.time.SchedulerService");
+ gsd.setServiceInterface(Class.forName("org.drools.time.SchedulerService"));
gsd.setImplementedClass(Class.forName("org.drools.grid.timer.impl.SchedulerImpl"));
}
if(clazzName[0].equals("schedulerclient")){
- ((GridServiceDescriptionImpl)gsd).setId("org.drools.time.SchedulerService");
+ gsd.setServiceInterface(Class.forName("org.drools.time.SchedulerService"));
gsd.setImplementedClass(Class.forName("org.drools.grid.timer.impl.SchedulerClient"));
}
+ if(clazzName[0].equals("executionnode")){
+ gsd.setServiceInterface(Class.forName("org.drools.grid.GridNode"));
+ gsd.setImplementedClass(Class.forName("org.drools.grid.impl.GridNodeImpl"));
+ }
+
+ if(clazzName[0].equals("executionnodeclient")){
+ gsd.setServiceInterface(Class.forName("org.drools.grid.GridNode"));
+ gsd.setImplementedClass(Class.forName("org.drools.grid.remote.GridNodeRemoteClient"));
+ }
+ if(clazzName[0].equals("test")){
+ gsd.setServiceInterface(Class.forName("java.lang.String"));
+ gsd.setImplementedClass(Class.forName("java.lang.String"));
+ }
+
} catch (ClassNotFoundException ex) {
Logger.getLogger(GridServiceDescriptionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/NodeConnectionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/NodeConnectionFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/impl/NodeConnectionFactory.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.impl;
+
+import org.drools.grid.GridNodeConnection;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.local.LocalGridConnection;
+import org.drools.grid.remote.RemoteGridConnection;
+
+/**
+ *
+ * @author salaboy
+ */
+public class NodeConnectionFactory {
+
+ public static GridNodeConnection newGridNodeConnection(GridServiceDescription gsd) {
+ if(gsd.getAddresses().get("local") != null){
+ return new LocalGridConnection(gsd.getId());
+ }
+ if(gsd.getAddresses().get("socket") != null){
+ return new RemoteGridConnection(gsd);
+ }
+ return null;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.remote;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.GridNode;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.ConversationManagerImpl;
+import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.util.ServiceRegistry;
+import org.drools.util.ServiceRegistryImpl;
+
+/**
+ *
+ * @author salaboy
+ */
+public class GridNodeRemoteClient implements GridNode{
+
+ private String id;
+ private GridServiceDescription gsd;
+ private final Map<String, Object> localContext = new ConcurrentHashMap<String, Object>();
+ private final ServiceRegistry serviceRegistry = ServiceRegistryImpl.getInstance();
+
+ public GridNodeRemoteClient(GridServiceDescription gsd) {
+ this.gsd = gsd;
+ init(this.localContext);
+ }
+
+ public <T> T get(String identifier, Class<T> cls) {
+ T service = (T) localContext.get(identifier);
+ if ( service == null ) {
+ service = this.serviceRegistry.get( cls );
+ }
+
+
+ return service;
+ }
+
+ public <T> T get(Class<T> serviceClass) {
+ return get( serviceClass.getName(), serviceClass );
+ }
+
+ public void set(String identifier, Object object) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String getId() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void init(Object context) {
+
+ MinaConnector connector = new MinaConnector();
+ ConversationManager cm = new ConversationManagerImpl(id, connector, SystemEventListenerFactory.getSystemEventListener());
+ this.localContext.put( KnowledgeBuilderFactoryService.class.getCanonicalName(),
+ new KnowledgeBuilderProviderRemoteClient( cm, gsd ) );
+ this.localContext.put( KnowledgeBaseFactoryService.class.getCanonicalName(),
+ new KnowledgeBaseProviderRemoteClient( cm, gsd ) );
+
+ }
+
+ public void dispose() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.remote;
+
+import java.io.Serializable;
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.UUID;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.command.NewKnowledgeBaseCommand;
+import org.drools.command.SetVariableCommand;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+
+/**
+ *
+ * @author salaboy
+ */
+public class KnowledgeBaseProviderRemoteClient implements KnowledgeBaseFactoryService {
+
+ private ConversationManager cm;
+ private GridServiceDescription gsd;
+ public KnowledgeBaseProviderRemoteClient(ConversationManager cm, GridServiceDescription gsd) {
+ this.cm = cm;
+ this.gsd = gsd;
+ }
+
+
+
+ public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties, ClassLoader... classLoader) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration(Properties properties) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase newKnowledgeBase() {
+ String localId = UUID.randomUUID().toString();
+
+ CommandImpl cmd = new CommandImpl("execute",
+ Arrays.asList(new Object[]{new SetVariableCommand( "__TEMP__",
+ localId,
+ new NewKnowledgeBaseCommand( null ) )}));
+
+ sendMessage(this.cm,
+ (InetSocketAddress[]) this.gsd.getAddresses().get("socket").getObject(),
+ this.gsd.getServiceInterface().getName(),
+ cmd);
+
+ return new KnowledgeBaseRemoteClient( localId, this.gsd, this.cm );
+
+
+ }
+
+ public KnowledgeBase newKnowledgeBase(String kbaseId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase newKnowledgeBase(String kbaseId, KnowledgeBaseConfiguration conf) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Environment newEnvironment() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public static Object sendMessage(ConversationManager conversationManager,
+ Serializable addr,
+ String id,
+ Object body) {
+
+ InetSocketAddress[] sockets = null;
+ if (addr instanceof InetSocketAddress[]) {
+ sockets = (InetSocketAddress[]) addr;
+ } else if (addr instanceof InetSocketAddress) {
+ sockets = new InetSocketAddress[1];
+ sockets[0] = (InetSocketAddress) addr;
+ }
+
+
+ BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+ Exception exception = null;
+ for (InetSocketAddress socket : sockets) {
+ try {
+ Conversation conv = conversationManager.startConversation(socket,
+ id);
+ conv.sendMessage(body,
+ handler);
+ exception = null;
+ } catch (Exception e) {
+ exception = e;
+ conversationManager.endConversation();
+ }
+ if (exception == null) {
+ break;
+ }
+ }
+ if (exception != null) {
+ throw new RuntimeException("Unable to send message",
+ exception);
+ }
+ try {
+ return handler.getMessage().getBody();
+ } finally {
+ conversationManager.endConversation();
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,239 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.remote;
+
+import java.io.Serializable;
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.UUID;
+import org.drools.KnowledgeBase;
+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.Query;
+import org.drools.definition.rule.Rule;
+import org.drools.definition.type.FactType;
+import org.drools.event.knowledgebase.KnowledgeBaseEventListener;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.CommandImpl;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+
+/**
+ *
+ * @author salaboy
+ */
+public class KnowledgeBaseRemoteClient implements KnowledgeBase{
+
+ private String instanceId;
+ private ConversationManager cm;
+ private GridServiceDescription gsd;
+
+ public KnowledgeBaseRemoteClient(String localId, GridServiceDescription gsd, ConversationManager cm) {
+ this.instanceId = localId;
+ this.cm = cm;
+ this.gsd = gsd;
+ }
+
+ public void addKnowledgePackages(Collection<KnowledgePackage> kpackages) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<KnowledgePackage> getKnowledgePackages() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgePackage getKnowledgePackage(String packageName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeKnowledgePackage(String packageName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Rule getRule(String packageName, String ruleName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeRule(String packageName, String ruleName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Query getQuery(String packageName, String queryName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeQuery(String packageName, String queryName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeFunction(String packageName, String ruleName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public FactType getFactType(String packageName, String typeName) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Process getProcess(String processId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeProcess(String processId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<Process> getProcesses() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf, Environment environment) {
+ String kresultsId = "kresults_" + this.cm.toString();
+ String localId = UUID.randomUUID().toString();
+
+ CommandImpl cmd = new CommandImpl("execute",
+ Arrays.asList(new Object[]{new SetVariableCommand( "__TEMP__",
+ localId,
+ new KnowledgeContextResolveFromContextCommand( new NewStatefulKnowledgeSessionCommand( conf ),
+ null,
+ this.instanceId,
+ null,
+ kresultsId ) )}));
+
+ sendMessage(this.cm,
+ (InetSocketAddress[]) this.gsd.getAddresses().get("socket").getObject(),
+ this.gsd.getServiceInterface().getName(),
+ cmd);
+
+ return new StatefulKnowledgeSessionRemoteClient( localId,
+ this.gsd,
+ this.cm );
+
+
+// String kresultsId = "kresults_" + this.messageSession.getSessionId();
+//
+// String localId = UUID.randomUUID().toString();
+//
+// Message msg = new Message( this.messageSession.getSessionId(),
+// this.messageSession.counter.incrementAndGet(),
+// false,
+// new SetVariableCommand( "__TEMP__",
+// localId,
+// new KnowledgeContextResolveFromContextCommand( new NewStatefulKnowledgeSessionCommand( conf ),
+// null,
+// this.instanceId,
+// null,
+// kresultsId ) ) );
+//
+// try {
+// this.connector.connect();
+// Object object = this.connector.write( msg ).getPayload();
+//
+// // if (!(object instanceof FinishedCommand)) {
+// // throw new RuntimeException("Response was not correctly ended");
+// // }
+// this.connector.disconnect();
+// } catch ( Exception e ) {
+// throw new RuntimeException( "Unable to execute message",
+// e );
+// }
+//
+// return new StatefulKnowledgeSessionRemoteClient( localId,
+// this.connector,
+// this.messageSession );
+ }
+
+ public StatefulKnowledgeSession newStatefulKnowledgeSession() {
+ return newStatefulKnowledgeSession(null, null);
+ }
+
+ public Collection<StatefulKnowledgeSession> getStatefulKnowledgeSessions() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public StatelessKnowledgeSession newStatelessKnowledgeSession() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void addEventListener(KnowledgeBaseEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeEventListener(KnowledgeBaseEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<KnowledgeBaseEventListener> getKnowledgeBaseEventListeners() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public static Object sendMessage(ConversationManager conversationManager,
+ Serializable addr,
+ String id,
+ Object body) {
+
+ InetSocketAddress[] sockets = null;
+ if (addr instanceof InetSocketAddress[]) {
+ sockets = (InetSocketAddress[]) addr;
+ } else if (addr instanceof InetSocketAddress) {
+ sockets = new InetSocketAddress[1];
+ sockets[0] = (InetSocketAddress) addr;
+ }
+
+
+ BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+ Exception exception = null;
+ for (InetSocketAddress socket : sockets) {
+ try {
+ Conversation conv = conversationManager.startConversation(socket,
+ id);
+ conv.sendMessage(body,
+ handler);
+ exception = null;
+ } catch (Exception e) {
+ exception = e;
+ conversationManager.endConversation();
+ }
+ if (exception == null) {
+ break;
+ }
+ }
+ if (exception != null) {
+ throw new RuntimeException("Unable to send message",
+ exception);
+ }
+ try {
+ return handler.getMessage().getBody();
+ } finally {
+ conversationManager.endConversation();
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+package org.drools.grid.remote;
+
+import com.sun.tools.xjc.Options;
+import java.io.Serializable;
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.UUID;
+import org.drools.KnowledgeBase;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.JaxbConfiguration;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.command.SetVariableCommand;
+import org.drools.command.builder.NewKnowledgeBuilderCommand;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
+import org.drools.grid.io.Conversation;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.CommandImpl;
+
+/**
+ *
+ * @author salaboy
+ */
+public class KnowledgeBuilderProviderRemoteClient implements KnowledgeBuilderFactoryService {
+
+ private ConversationManager cm;
+ private GridServiceDescription gsd;
+
+ public KnowledgeBuilderProviderRemoteClient(ConversationManager cm, GridServiceDescription gsd) {
+ this.cm = cm;
+ this.gsd = gsd;
+ }
+
+
+
+ public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration(Properties properties, ClassLoader... classLoader) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public DecisionTableConfiguration newDecisionTableConfiguration() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBuilder newKnowledgeBuilder() {
+
+ String localId = UUID.randomUUID().toString();
+
+ CommandImpl cmd = new CommandImpl("execute",
+ Arrays.asList(new Object[]{new SetVariableCommand( "__TEMP__",
+ localId,
+ new NewKnowledgeBuilderCommand( null ) )}));
+
+ sendMessage(this.cm,
+ (InetSocketAddress[]) this.gsd.getAddresses().get("socket").getObject(),
+ this.gsd.getServiceInterface().getName(),
+ cmd);
+
+ return new KnowledgeBuilderRemoteClient( localId, this.cm );
+
+ }
+
+ public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase, KnowledgeBuilderConfiguration conf) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public JaxbConfiguration newJaxbConfiguration(Options xjcOpts, String systemId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public static Object sendMessage(ConversationManager conversationManager,
+ Serializable addr,
+ String id,
+ Object body) {
+
+ InetSocketAddress[] sockets = null;
+ if (addr instanceof InetSocketAddress[]) {
+ sockets = (InetSocketAddress[]) addr;
+ } else if (addr instanceof InetSocketAddress) {
+ sockets = new InetSocketAddress[1];
+ sockets[0] = (InetSocketAddress) addr;
+ }
+
+
+ BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
+ Exception exception = null;
+ for (InetSocketAddress socket : sockets) {
+ try {
+ Conversation conv = conversationManager.startConversation(socket,
+ id);
+ conv.sendMessage(body,
+ handler);
+ exception = null;
+ } catch (Exception e) {
+ exception = e;
+ conversationManager.endConversation();
+ }
+ if (exception == null) {
+ break;
+ }
+ }
+ if (exception != null) {
+ throw new RuntimeException("Unable to send message",
+ exception);
+ }
+ try {
+ return handler.getMessage().getBody();
+ } finally {
+ conversationManager.endConversation();
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.remote;
+
+import java.util.Collection;
+import org.drools.KnowledgeBase;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.ResourceConfiguration;
+import org.drools.builder.ResourceType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.grid.io.ConversationManager;
+import org.drools.io.Resource;
+
+/**
+ *
+ * @author salaboy
+ */
+public class KnowledgeBuilderRemoteClient implements KnowledgeBuilder{
+
+ private String localId;
+ private ConversationManager cm;
+
+ public KnowledgeBuilderRemoteClient(String localId, ConversationManager cm) {
+ this.localId = localId;
+ this.cm = cm;
+ }
+
+
+
+ public void add(Resource resource, ResourceType type) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void add(Resource resource, ResourceType type, ResourceConfiguration configuration) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<KnowledgePackage> getKnowledgePackages() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase newKnowledgeBase() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public boolean hasErrors() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBuilderErrors getErrors() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/RemoteGridConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/RemoteGridConnection.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/RemoteGridConnection.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.remote;
+
+import org.drools.grid.GridNode;
+import org.drools.grid.GridNodeConnection;
+import org.drools.grid.GridServiceDescription;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class RemoteGridConnection implements GridNodeConnection {
+ private GridNode gridNode;
+
+ public RemoteGridConnection(GridServiceDescription gsd) {
+ this.gridNode = new GridNodeRemoteClient(gsd);
+ }
+
+ public void connect() {
+
+ }
+
+ public void disconnect() {
+
+ }
+
+ public GridNode getGridNode() {
+ return this.gridNode;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid.remote;
+
+import java.util.Collection;
+import java.util.Map;
+import org.drools.KnowledgeBase;
+import org.drools.command.Command;
+import org.drools.event.process.ProcessEventListener;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.WorkingMemoryEventListener;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.io.ConversationManager;
+import org.drools.runtime.Calendars;
+import org.drools.runtime.Channel;
+import org.drools.runtime.Environment;
+import org.drools.runtime.ExitPoint;
+import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+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.LiveQuery;
+import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.ViewChangedEventListener;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+import org.drools.time.SessionClock;
+
+/**
+ *
+ * @author salaboy
+ */
+public class StatefulKnowledgeSessionRemoteClient implements StatefulKnowledgeSession {
+ private String instanceId;
+ private GridServiceDescription gsd;
+ private ConversationManager cm;
+ public StatefulKnowledgeSessionRemoteClient(String localId, GridServiceDescription gsd, ConversationManager cm) {
+ this.instanceId = localId;
+ this.gsd = gsd;
+ this.cm = cm;
+ }
+
+
+
+ public int getId() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void dispose() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public int fireAllRules() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public int fireAllRules(int max) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public int fireAllRules(AgendaFilter agendaFilter) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void fireUntilHalt() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void fireUntilHalt(AgendaFilter agendaFilter) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public <T> T execute(Command<T> command) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public <T extends SessionClock> T getSessionClock() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void setGlobal(String identifier, Object object) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Object getGlobal(String identifier) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Globals getGlobals() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Calendars getCalendars() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Environment getEnvironment() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase getKnowledgeBase() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void registerExitPoint(String name, ExitPoint exitPoint) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void unregisterExitPoint(String name) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void registerChannel(String name, Channel channel) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void unregisterChannel(String name) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Map<String, Channel> getChannels() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeSessionConfiguration getSessionConfiguration() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void halt() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Agenda getAgenda() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public QueryResults getQueryResults(String query, Object... arguments) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public LiveQuery openLiveQuery(String query, Object[] arguments, ViewChangedEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String getEntryPointId() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public FactHandle insert(Object object) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void retract(FactHandle handle) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void update(FactHandle handle, Object object) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public FactHandle getFactHandle(Object object) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Object getObject(FactHandle factHandle) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<Object> getObjects() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<Object> getObjects(ObjectFilter filter) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public <T extends FactHandle> Collection<T> getFactHandles() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public <T extends FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public long getFactCount() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public ProcessInstance startProcess(String processId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public ProcessInstance startProcess(String processId, Map<String, Object> parameters) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void signalEvent(String type, Object event) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void signalEvent(String type, Object event, long processInstanceId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<ProcessInstance> getProcessInstances() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public ProcessInstance getProcessInstance(long processInstanceId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void abortProcessInstance(long processInstanceId) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public WorkItemManager getWorkItemManager() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void addEventListener(WorkingMemoryEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeEventListener(WorkingMemoryEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<WorkingMemoryEventListener> getWorkingMemoryEventListeners() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void addEventListener(AgendaEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeEventListener(AgendaEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<AgendaEventListener> getAgendaEventListeners() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void addEventListener(ProcessEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void removeEventListener(ProcessEventListener listener) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Collection<ProcessEventListener> getProcessEventListeners() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -131,7 +131,15 @@
}
+ public Class getServiceInterface() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+ public void setServiceInterface(Class cls) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -19,6 +19,8 @@
private Class implementedClass;
+ private Class serviceInterface;
+
private Map<String, Address> addresses = new HashMap<String, Address>();
private Serializable data;
@@ -45,6 +47,14 @@
this.id = id;
}
+ public Class getServiceInterface(){
+ return this.serviceInterface;
+ }
+
+ public void setServiceInterface(Class serviceInterface){
+ this.serviceInterface = serviceInterface;
+ }
+
public Class getImplementedClass() {
return implementedClass;
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -116,6 +116,14 @@
em.close();
}
+ public Class getServiceInterface() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void setServiceInterface(Class cls) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -19,6 +19,7 @@
//GridServiceDescription gsd = new GridServiceDescriptionImpl( serviceDescriptionId );
GridServiceDescription gsd = GridServiceDescriptionFactory.newGridServiceDescritpion( serviceDescriptionId );
+ //this.directory.put(gsd.getServiceInterface().getCanonicalName() , gsd );
this.directory.put(gsd.getId() , gsd );
return gsd;
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -116,7 +116,7 @@
SchedulerService sched = null;
try {
// We use the ID that contains the type of the service that we are using -> refactor this and include serviceType in GSD
- sched = grid.get((Class<SchedulerService>)Class.forName(schedulerGsd.getId()));
+ sched = grid.get((Class<SchedulerService>)Class.forName(schedulerGsd.getServiceInterface().getCanonicalName()));
} catch (ClassNotFoundException ex) {
Logger.getLogger(SchedulerClient.class.getName()).log(Level.SEVERE, null, ex);
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerLocalConfiguration.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -29,7 +29,7 @@
SchedulerService sched = (this.scheduler != null) ? this.scheduler : new SchedulerImpl(this.id, grid);
((GridImpl) grid).addService( SchedulerService.class,
sched );
- wp.create("scheduler:"+id+"@local/local");
+ wp.create("scheduler:"+this.id+SchedulerService.class.getName());
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -78,7 +78,7 @@
mss.addService( this.port,
SchedulerService.class.getName(),
- ((MessageReceiverHandlerFactoryService) sched ).getMessageReceiverHandler() );
+ ((MessageReceiverHandlerFactoryService) sched ).getMessageReceiverHandler() );
}
}
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/NodeTests.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/NodeTests.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/NodeTests.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -0,0 +1,231 @@
+/*
+ * Copyright 2010 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.grid;
+
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.impl.GridNodeLocalConfiguration;
+import org.drools.grid.impl.GridNodeSocketConfiguration;
+import org.drools.grid.impl.MultiplexSocketServerImpl;
+import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
+import org.drools.grid.remote.GridNodeRemoteClient;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
+import org.drools.grid.service.directory.Address;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.CoreServicesWhitePagesConfiguration;
+import org.drools.grid.service.directory.impl.GridServiceDescriptionImpl;
+import org.drools.grid.service.directory.impl.RegisterWhitePagesConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesSocketConfiguration;
+import org.drools.grid.timer.impl.CoreServicesSchedulerConfiguration;
+import org.drools.grid.timer.impl.RegisterSchedulerConfiguration;
+import org.drools.grid.timer.impl.SchedulerLocalConfiguration;
+import org.drools.grid.timer.impl.SchedulerSocketConfiguration;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ * @author salaboy
+ */
+public class NodeTests {
+
+ private Map<String, GridServiceDescription> coreServicesMap;
+
+ public NodeTests() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+
+ @Test
+ public void basicLocalNodeTest() {
+
+
+ Grid grid = new GridImpl(new HashMap<String, Object>());
+ GridPeerConfiguration conf = new GridPeerConfiguration();
+
+ GridPeerServiceConfiguration wpconf = new WhitePagesLocalConfiguration();
+ conf.addConfiguration(wpconf);
+
+ conf.configure(grid);
+ GridServiceDescription localExecutioNodeGSD = new GridServiceDescriptionImpl("executionnode:local at local");
+ localExecutioNodeGSD.addAddress("local");
+ //GridNode gnode = grid.createGridNode("executionnode:local at local");
+ GridNode gnode = grid.createGridNode(localExecutioNodeGSD);
+
+ KnowledgeBuilder kbuilder = gnode.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+
+ Assert.assertNotNull(kbuilder);
+
+ KnowledgeBase kbase = gnode.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+
+ Assert.assertNotNull(kbase);
+
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+ Assert.assertNotNull(session);
+
+ WhitePages wp = grid.get(WhitePages.class);
+ GridServiceDescription gsd = wp.lookup("executionnode:local at local");
+
+ gnode = grid.getGridNode(gsd.getId());
+
+
+ Assert.assertNotNull(gnode);
+
+ }
+
+ @Test
+ public void basicRemoteNodeTest() {
+
+
+ coreServicesMap = new HashMap<String, GridServiceDescription>();//Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+
+ Grid grid1 = new GridImpl(new HashMap<String, Object>());
+ configureGrid1(grid1, 8000);
+
+
+
+
+ Grid grid2 = new GridImpl(new HashMap<String, Object>());
+ GridPeerConfiguration conf = new GridPeerConfiguration();
+
+ GridPeerServiceConfiguration wpconf = new WhitePagesLocalConfiguration();
+ conf.addConfiguration(wpconf);
+
+ conf.configure(grid2);
+
+ GridServiceDescription remoteExecutioNodeGSD = new GridServiceDescriptionImpl("executionnodeclient:mynode at remote[localhost:8080]/socket");
+ remoteExecutioNodeGSD.setServiceInterface(GridNode.class);
+ remoteExecutioNodeGSD.setImplementedClass(GridNodeRemoteClient.class);
+ Address addr = remoteExecutioNodeGSD.addAddress("socket");
+ addr.setObject(new InetSocketAddress[]{new InetSocketAddress("localhost", 8000)});
+
+
+
+ GridNode gnode = grid2.createGridNode(remoteExecutioNodeGSD);
+
+
+ KnowledgeBuilder kbuilder = gnode.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+
+ Assert.assertNotNull(kbuilder);
+
+ KnowledgeBase kbase = gnode.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+
+ Assert.assertNotNull(kbase);
+
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+ Assert.assertNotNull(session);
+
+ WhitePages wp = grid2.get(WhitePages.class);
+ GridServiceDescription gsd = wp.lookup("executionnodeclient:mynode at remote[localhost:8080]/socket");
+
+ gnode = grid2.getGridNode(gsd.getId());
+
+
+ Assert.assertNotNull(gnode);
+
+
+
+ }
+
+
+ private void configureGrid1(Grid grid, int port){
+
+ //Local Grid Configuration, for our client
+ GridPeerConfiguration conf = new GridPeerConfiguration();
+
+ //Configuring the Core Services White Pages
+ GridPeerServiceConfiguration coreSeviceWPConf = new CoreServicesWhitePagesConfiguration(coreServicesMap);
+ conf.addConfiguration(coreSeviceWPConf);
+
+ //Configuring the Core Services Scheduler
+ GridPeerServiceConfiguration coreSeviceSchedulerConf = new CoreServicesSchedulerConfiguration();
+ conf.addConfiguration(coreSeviceSchedulerConf);
+
+ //Configuring the MultiplexSocketService
+ GridPeerServiceConfiguration socketConf = new MultiplexSocketServiceCongifuration(new MultiplexSocketServerImpl("127.0.0.1",
+ new MinaAcceptorFactoryService(),
+ SystemEventListenerFactory.getSystemEventListener()));
+ conf.addConfiguration(socketConf);
+
+ //Configuring the WhitePages
+ GridPeerServiceConfiguration wplConf = new WhitePagesLocalConfiguration();
+ conf.addConfiguration(wplConf);
+
+ //Exposing Local WhitePages
+ GridPeerServiceConfiguration wpsc = new WhitePagesSocketConfiguration(port);
+ conf.addConfiguration(wpsc);
+ GridPeerServiceConfiguration registerwpincore = new RegisterWhitePagesConfiguration();
+ conf.addConfiguration(registerwpincore);
+
+ //Create a Local Scheduler
+ GridPeerServiceConfiguration schlConf = new SchedulerLocalConfiguration("myLocalSched");
+ conf.addConfiguration(schlConf);
+
+ //Expose it to the Grid so it can be accesed by different nodes
+ // I need to use the same port to reuse the service multiplexer
+ GridPeerServiceConfiguration schlsc = new SchedulerSocketConfiguration(port);
+ conf.addConfiguration(schlsc);
+
+ GridPeerServiceConfiguration registerschedincore = new RegisterSchedulerConfiguration();
+ conf.addConfiguration(registerschedincore);
+
+
+ GridPeerServiceConfiguration executionNodeLocal = new GridNodeLocalConfiguration();
+ conf.addConfiguration(executionNodeLocal);
+
+ GridPeerServiceConfiguration executionNodeSocket = new GridNodeSocketConfiguration(port);
+ conf.addConfiguration(executionNodeSocket);
+
+
+ conf.configure(grid);
+
+
+ }
+
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/local/LocalGridNodeTest.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -1,8 +1,8 @@
package org.drools.grid.local;
import java.net.InetAddress;
-import java.net.InetSocketAddress;
import java.net.UnknownHostException;
+import java.util.HashMap;
import junit.framework.TestCase;
@@ -12,67 +12,79 @@
import org.drools.grid.Grid;
import org.drools.grid.GridNode;
import org.drools.grid.GridNodeConnection;
+import org.drools.grid.GridPeerConfiguration;
+import org.drools.grid.GridPeerServiceConfiguration;
import org.drools.grid.GridServiceDescription;
import org.drools.grid.impl.GridImpl;
import org.drools.grid.impl.GridNodeImpl;
-import org.drools.grid.service.directory.Address;
import org.drools.grid.service.directory.WhitePages;
-import org.drools.grid.service.directory.impl.AddressImpl;
+import org.drools.grid.service.directory.impl.GridServiceDescriptionImpl;
+import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
public class LocalGridNodeTest extends TestCase {
public void test(){
}
-// public void testConnectWithId() {
-// GridNodeConnection connection = new LocalGridConnection( "test-id" );
-// GridNode gnode = connection.getGridNode();
-// assertNotNull( gnode );
-// }
-//
-// public void testConnectWithGivenGridNode() {
-// GridNode gnode = new GridNodeImpl();
-// GridNodeConnection connection = new LocalGridConnection( gnode );
-// assertSame( gnode,
-// connection.getGridNode() );
-// }
-//
-// public void testGetFactoryService() {
-// GridNodeConnection connection = new LocalGridConnection( "test-id" );
-// GridNode gnode = connection.getGridNode();
-// KnowledgeBuilderFactoryService kbfService = gnode.get( KnowledgeBuilderFactoryService.class );
-// assertNotNull( kbfService );
-// }
-//
-// public void testSetObject() {
-// GridNodeConnection connection = new LocalGridConnection( "test-id" );
-// GridNode gnode = connection.getGridNode();
-//
-// KnowledgeBaseFactoryService kbfService = gnode.get( KnowledgeBaseFactoryService.class );
-// KnowledgeBase kbase = kbfService.newKnowledgeBase();
-// gnode.set( "id1",
-// kbase );
-// assertSame( kbase,
-// gnode.get( "id1",
-// KnowledgeBase.class ) );
-// }
-//
-// public void testNodeCreationAndWhitePagesRegistration() {
-// Grid grid = new GridImpl();
-//
-// GridNode gnode = grid.createGridNode( "test1 at domain.com" );
-//
-// WhitePages pages = grid.get( WhitePages.class );
-// GridServiceDescription serviceDescription = pages.lookup( "test1 at domain.com" );
-//
-// GridNodeConnection connection = grid.getGridNodeConnection( serviceDescription );
-// connection.connect();
-// assertSame( gnode,
-// connection.getGridNode() );
-// }
-//
+ public void testConnectWithId() {
+ GridNodeConnection connection = new LocalGridConnection( "test-id" );
+ GridNode gnode = connection.getGridNode();
+ assertNotNull( gnode );
+ }
+
+ public void testConnectWithGivenGridNode() {
+ GridNode gnode = new GridNodeImpl();
+ GridNodeConnection connection = new LocalGridConnection( gnode );
+ assertSame( gnode,
+ connection.getGridNode() );
+ }
+
+ public void testGetFactoryService() {
+ GridNodeConnection connection = new LocalGridConnection( "test-id" );
+ GridNode gnode = connection.getGridNode();
+ KnowledgeBuilderFactoryService kbfService = gnode.get( KnowledgeBuilderFactoryService.class );
+ assertNotNull( kbfService );
+ }
+
+ public void testSetObject() {
+ GridNodeConnection connection = new LocalGridConnection( "test-id" );
+ GridNode gnode = connection.getGridNode();
+
+ KnowledgeBaseFactoryService kbfService = gnode.get( KnowledgeBaseFactoryService.class );
+ KnowledgeBase kbase = kbfService.newKnowledgeBase();
+ gnode.set( "id1",
+ kbase );
+ assertSame( kbase,
+ gnode.get( "id1",
+ KnowledgeBase.class ) );
+ }
+
+ public void testNodeCreationAndWhitePagesRegistration() {
+ Grid grid = new GridImpl(new HashMap<String,Object>());
+
+ GridPeerConfiguration conf = new GridPeerConfiguration();
+
+ //Configuring the WhitePages
+ GridPeerServiceConfiguration wplConf = new WhitePagesLocalConfiguration();
+ conf.addConfiguration(wplConf);
+
+ conf.configure(grid);
+
+ GridServiceDescription gsd = new GridServiceDescriptionImpl("test1 at local");
+ gsd.addAddress("local");
+ GridNode gnode = grid.createGridNode( gsd );
+
+ WhitePages pages = grid.get( WhitePages.class );
+ GridServiceDescription serviceDescription = pages.lookup( "test1 at local" );
+
+ GridNodeConnection connection = grid.getGridNodeConnection( serviceDescription );
+ connection.connect();
+ assertSame( gnode,
+ connection.getGridNode() );
+ }
+
// public void testWhitePagesAddRemoveAddresss() {
-// Grid grid = new GridImpl();
+// Grid grid = new GridImpl(new HashMap<String,Object>());
//
// GridNode gnode = grid.createGridNode( "test1 at domain.com" );
// assertNotNull( gnode );
@@ -101,15 +113,15 @@
// serviceDescription.getAddresses().size() );
//
// }
-//
-// private InetAddress getLocalAddress() {
-// try {
-// return InetAddress.getLocalHost();
-// } catch ( UnknownHostException e ) {
-// throw new RuntimeException( "Unable to lookup local address",
-// e );
-// }
-//
-// }
+ private InetAddress getLocalAddress() {
+ try {
+ return InetAddress.getLocalHost();
+ } catch ( UnknownHostException e ) {
+ throw new RuntimeException( "Unable to lookup local address",
+ e );
+ }
+
+ }
+
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RegisterServicesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RegisterServicesTest.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/RegisterServicesTest.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -141,7 +141,7 @@
WhitePages wp = grid.get(WhitePages.class);
//Local sched in Local WP
- GridServiceDescription gsdLocalSched = wp.lookup(SchedulerService.class.getName());
+ GridServiceDescription gsdLocalSched = wp.lookup("scheduler:"+"myLocalSched"+SchedulerService.class.getName());
//Get the CoreWhitePages
CoreServicesWhitePages corewp = grid.get(CoreServicesWhitePages.class);
@@ -166,14 +166,14 @@
SchedulerClient sched = null;
- GridServiceDescription clientSched1 = wp.lookup(SchedulerService.class.getName());
+ GridServiceDescription clientSched1 = wp.lookup("scheduler:"+"myLocalSched"+SchedulerService.class.getName());
sched = new SchedulerClient(grid, clientSched1, cm);
sched.scheduleJob(new MockJob(), new MockJobContext("xxx"), new MockTrigger(new Date(1000)));
sched = new SchedulerClient(grid, gsdLocalButExposedSched, cm);
sched.scheduleJob(new MockJob(), new MockJobContext("xxx"), new MockTrigger(new Date(1000)));
- //@TODO: FIX THIS! something weird is happening with the handlers..
+
//GridServiceDescription clientSched2 = new WhitePagesClient( gsdLocalButExposedWp, cm).lookup(SchedulerService.class.getName());
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java 2010-11-05 15:41:52 UTC (rev 35883)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/io/mina/WhitePagesTest.java 2010-11-05 15:54:32 UTC (rev 35884)
@@ -82,17 +82,18 @@
conf.configure( grid2 );
WhitePages wpClient = grid2.get( WhitePages.class );
+
- GridServiceDescription test1Gsd = wpClient.create( "test1 at domain1" );
+ GridServiceDescription test1Gsd = wpClient.create( "test:string at domain1" );
- GridServiceDescription testGsd_2 = wpClient.lookup( "test1 at domain1" );
+ GridServiceDescription testGsd_2 = wpClient.lookup( "test:string at domain1" );
assertEquals( test1Gsd,
testGsd_2 );
assertNotSame( test1Gsd,
testGsd_2 );
WhitePages localWhitePages = grid1.get( WhitePages.class );
- GridServiceDescription testGsd_3 = localWhitePages.lookup( "test1 at domain1" );
+ GridServiceDescription testGsd_3 = localWhitePages.lookup( "test:string at domain1" );
assertEquals( test1Gsd,
testGsd_3 );
@@ -130,7 +131,7 @@
WhitePages wplocal= grid1.get(WhitePages.class);
Assert.assertNotNull(wplocal);
- GridServiceDescription schedulersgsd = wplocal.lookup(SchedulerService.class.getName());
+ GridServiceDescription schedulersgsd = wplocal.lookup("scheduler:"+"myLocalSched1"+SchedulerService.class.getName());
Assert.assertNotNull(schedulersgsd);
More information about the jboss-svn-commits
mailing list