[jboss-svn-commits] JBL Code SVN: r33093 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-client-api and 35 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 26 10:50:54 EDT 2010
Author: salaboy21
Date: 2010-05-26 10:50:52 -0400 (Wed, 26 May 2010)
New Revision: 33093
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/resources/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/test/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/test/java/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/resources/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java
Removed:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
Log:
drools-grid refactoring + drools-services
Property changes on: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api
___________________________________________________________________
Name: svn:ignore
+ target
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/pom.xml 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>drools-grid</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0.SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <name>Drools :: Grid :: Client API</name>
+ <artifactId>drools-grid-client-api</artifactId>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.6</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Drools Runtime -->
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ </dependency>
+
+
+ </dependencies>
+
+
+</project>
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/DirectoryNodeService.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,26 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.drools.grid;
+
+import java.rmi.RemoteException;
+import java.util.Map;
+import org.drools.KnowledgeBase;
+
+
+/**
+ *
+ * @author salaboy
+ */
+
+public interface DirectoryNodeService {
+ public void register(String executorId, String nodeServiceId) throws RemoteException;
+ public GenericNodeConnector lookup(String executorId) throws RemoteException;
+ public void registerKBase(String kbaseId, String nodeServiceId) throws RemoteException;
+ public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException;
+ public void addService(GenericNodeConnector service);
+ public Map<String, String> getDirectoryMap() throws RemoteException;
+ public String getId() throws RemoteException;
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/ExecutionNodeService.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,23 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.drools.grid;
+
+import org.drools.grid.internal.Message;
+import java.rmi.RemoteException;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public interface ExecutionNodeService extends GenericNodeConnector{
+ public String getId() throws RemoteException;
+ public Message write(Message msg) throws RemoteException;
+ double getLoad() throws RemoteException;
+ void setLoad(double load) throws RemoteException;
+ double getKsessionCounter() throws RemoteException;
+ void incrementKsessionCounter() throws RemoteException;
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericConnection.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,40 @@
+/*
+ * 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.util.List;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.strategies.NodeSelectionStrategy;
+import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface GenericConnection {
+
+ public void addNodeConnector(GenericNodeConnector nodeConnector);
+ public void addDirectoryNode(DirectoryNodeService directory);
+ public List<GenericNodeConnector> getNodeConnectors();
+ public List<DirectoryNodeService> getDirectories();
+ public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy);
+ public ExecutionNode getExecutionNode();
+ public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy);
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/GenericNodeConnector.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,16 @@
+package org.drools.grid;
+
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.GenericIoWriter;
+import java.rmi.RemoteException;
+
+public interface GenericNodeConnector extends GenericIoWriter {
+
+ boolean connect() throws RemoteException;
+
+ void disconnect() throws RemoteException;
+
+ Message write(Message msg) throws RemoteException;
+
+ String getId() throws RemoteException;
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/GenericIoWriter.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,6 @@
+package org.drools.grid.internal;
+
+public interface GenericIoWriter {
+ void write(Message msg,
+ MessageResponseHandler responseHandler);
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/Message.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/Message.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,52 @@
+package org.drools.grid.internal;
+
+import java.io.Serializable;
+import java.util.Map;
+
+public class Message
+ implements
+ Serializable {
+ private int sessionId;
+ private int responseId;
+ private boolean async;
+ private Object payload;
+
+ public Message(int sessionId,
+ int responseId,
+ boolean async,
+ Object payload) {
+ this.sessionId = sessionId;
+ this.async = async;
+ this.responseId = responseId;
+ this.payload = payload;
+ }
+
+ public Message(int sessionId,
+ Map<String, Integer> contextVars,
+ Object payload) {
+ this.sessionId = sessionId;
+ this.responseId = -1;
+ this.payload = payload;
+ }
+
+ public int getSessionId() {
+ return sessionId;
+ }
+
+ public int getResponseId() {
+ return responseId;
+ }
+
+ public boolean isAsync() {
+ return async;
+ }
+
+ public Object getPayload() {
+ return payload;
+ }
+
+ public String toString() {
+ return "sessionId=" + this.sessionId + " responseId=" + responseId + " async=" + this.async + " payload=" + this.payload;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/MessageResponseHandler.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/internal/MessageResponseHandler.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,7 @@
+package org.drools.grid.internal;
+
+public interface MessageResponseHandler {
+ public void setError(RuntimeException error);
+
+ public void receive(Message message);
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,26 @@
+/*
+ * 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.strategies;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryServiceSelectionStrategy {
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/NodeSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,32 @@
+/*
+ * 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.strategies;
+
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface NodeSelectionStrategy {
+
+ public GenericNodeConnector getBestNode();
+ public void setConnection(GenericConnection connection);
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,42 @@
+/*
+ * 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.strategies;
+
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ReturnAlwaysTheFirstSelectionStrategy implements NodeSelectionStrategy{
+
+ private GenericConnection connection;
+ public ReturnAlwaysTheFirstSelectionStrategy(GenericConnection connection) {
+ this.connection = connection;
+ }
+ public GenericNodeConnector getBestNode() {
+ return this.connection.getNodeConnectors().get(0);
+ }
+
+ public void setConnection(GenericConnection connection) {
+ this.connection = connection;
+ }
+
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,50 @@
+/*
+ * 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.strategies;
+
+
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class StaticIncrementalSelectionStrategy implements NodeSelectionStrategy{
+ public static int counter = 0;
+ private GenericConnection connection;
+ public StaticIncrementalSelectionStrategy(GenericConnection connection) {
+ this.connection = connection;
+ }
+
+
+ //@Override
+ public GenericNodeConnector getBestNode() {
+
+ GenericNodeConnector service = connection.getNodeConnectors().get(counter);
+ StaticIncrementalSelectionStrategy.counter = counter +1;
+ return service;
+ }
+
+ public void setConnection(GenericConnection connection) {
+ this.connection = connection;
+ }
+
+
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/pom.xml 2010-05-26 14:50:52 UTC (rev 33093)
@@ -3,14 +3,26 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>drools</artifactId>
+ <artifactId>drools-grid</artifactId>
<groupId>org.drools</groupId>
<version>5.1.0.SNAPSHOT</version>
</parent>
<artifactId>drools-grid-core</artifactId>
<version>5.1.0.SNAPSHOT</version>
<name>Drools :: Grid :: Core</name>
-
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
<dependencies>
<dependency>
@@ -39,6 +51,12 @@
<version>5.1.0.SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-grid-client-api</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ </dependency>
+
<!-- Apache Mina for default Service Remote Implementation -->
<dependency>
<groupId>org.apache.mina</groupId>
@@ -67,6 +85,7 @@
<artifactId>drools-persistence-jpa</artifactId>
<version>5.1.0.SNAPSHOT</version>
<scope>test</scope>
+ <type>jar</type>
</dependency>
<dependency>
@@ -79,7 +98,7 @@
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
- <version>1.0.1B</version>
+ <version>1.1</version>
<scope>test</scope>
</dependency>
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/DirectoryNodeService.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,27 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.drools.grid;
-
-import java.rmi.RemoteException;
-import java.util.Map;
-import org.drools.KnowledgeBase;
-import org.drools.grid.generic.GenericNodeConnector;
-
-
-/**
- *
- * @author salaboy
- */
-
-public interface DirectoryNodeService {
- public void register(String executorId, String nodeServiceId) throws RemoteException;
- public GenericNodeConnector lookup(String executorId) throws RemoteException;
- public void registerKBase(String kbaseId, String nodeServiceId) throws RemoteException;
- public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException;
- public void addService(GenericNodeConnector service);
- public Map<String, String> getDirectoryMap() throws RemoteException;
- public String getId() throws RemoteException;
-}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/ExecutionNodeService.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,24 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.drools.grid;
-
-import java.rmi.RemoteException;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-
-
-/**
- *
- * @author salaboy
- */
-public interface ExecutionNodeService extends GenericNodeConnector{
- public String getId() throws RemoteException;
- public Message write(Message msg) throws RemoteException;
- double getLoad() throws RemoteException;
- void setLoad(double load) throws RemoteException;
- double getKsessionCounter() throws RemoteException;
- void incrementKsessionCounter() throws RemoteException;
-
-}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeConnector.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,28 +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.grid;
-
-/**
- *
- * @author salaboy
- */
-public interface NodeConnector {
- public ExecutionNode connect();
- public void disconnect();
-
-}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/NodeSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,32 +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.grid;
-
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-
-/**
- *
- * @author salaboy
- */
-public interface NodeSelectionStrategy {
-
- public GenericNodeConnector getBestNode();
- public void setConnection(GenericConnection connection);
-
-}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,128 +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.grid;
-
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.drools.KnowledgeBaseFactoryService;
-import org.drools.builder.DirectoryLookupFactoryService;
-import org.drools.builder.KnowledgeBuilderFactoryService;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.remote.DirectoryLookupProviderRemoteClient;
-import org.drools.grid.remote.KnowledgeBaseProviderRemoteClient;
-import org.drools.grid.remote.KnowledgeBuilderProviderRemoteClient;
-import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
-
-import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-
-/**
- *
- * @author salaboy
- */
-public class RemoteConnection implements GenericConnection {
- //Cached Services
- private List<GenericNodeConnector> nodeConnectors;
- //Cached Directories
- private List<DirectoryNodeService> directories;
-
- public RemoteConnection() {
- this.nodeConnectors = new ArrayList<GenericNodeConnector>();
- this.directories = new ArrayList<DirectoryNodeService>();
- }
-
- public void addNodeConnector(GenericNodeConnector service) {
- //register the service to all the DirectoryServices
- for(DirectoryNodeService directory : directories){
- directory.addService(service);
- }
- this.nodeConnectors.add(service);
-
- }
- public void addDirectoryNode(DirectoryNodeService directory) {
- this.directories.add(directory);
- }
-
- // In real scenarios this method will be in charge of populating
- // all the ExecutionNodeService and DirectoryServices
- public void connect() {
- throw new NotImplementedException();
- }
-
-
- public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
- ExecutionNode node = null;
- GenericNodeConnector currentNode = null;
- try {
-
- //if the strategy is null use the default one
- if (strategy == null) {
- currentNode = getBestNode(new StaticIncrementalSelectionStrategy(this));
- } else {
- strategy.setConnection(this);
- currentNode = getBestNode(strategy);
- }
- if (currentNode.connect()) {
- node = new ExecutionNode();
- node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(currentNode));
- node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(currentNode));
- node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderRemoteClient(currentNode, this));
-
- }
-
- } catch (RemoteException ex) {
- Logger.getLogger(RemoteConnection.class.getName()).log(Level.SEVERE, null, ex);
- }
- return node;
- }
- public GenericNodeConnector getBestNode(NodeSelectionStrategy nodeSelectionStrategy) {
- return nodeSelectionStrategy.getBestNode();
- }
-
- public List<DirectoryNodeService> getDirectories() {
- return directories;
- }
-
- public void setDirectories(List<DirectoryNodeService> directories) {
- this.directories = directories;
- }
-
- public List<GenericNodeConnector> getNodeConnectors() {
- return nodeConnectors;
- }
-
- public void setServices(List<GenericNodeConnector> services) {
- this.nodeConnectors = services;
- }
-
- public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) {
- return directories.get(0);
- }
-
- public ExecutionNode getExecutionNode() {
- return getExecutionNode(null);
- }
-
-
-
-
-}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/Command.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/Command.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,48 @@
+package org.drools.grid.commands;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Command implements Serializable {
+
+ private int id;
+
+ private CommandName name;
+
+ private List<Object> arguments;
+
+ public Command(int id, CommandName name, List<Object> arguments) {
+ super();
+ this.id = id;
+ this.arguments = arguments;
+ this.name = name;
+ }
+
+
+
+ public int getId() {
+ return id;
+ }
+
+
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+
+
+ public CommandName getName() {
+ return name;
+ }
+ public void setName(CommandName name) {
+ this.name = name;
+ }
+ public List<Object> getArguments() {
+ return arguments;
+ }
+ public void setArguments(List<Object> arguments) {
+ this.arguments = arguments;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/CommandName.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/CommandName.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,79 @@
+package org.drools.grid.commands;
+
+
+public enum CommandName {
+ OperationRequest,
+ OperationResponse,
+
+ ClaimRequest,
+ ClaimResponse,
+
+ StartRequest,
+ StartResponse,
+
+ StopRequest,
+ StopResponse,
+
+ ReleaseRequest,
+ ReleaseResponse,
+
+ SuspendRequest,
+ SuspendResponse,
+
+ ResumeRequest,
+ ResumeResponse,
+
+ SkipRequest,
+ SkipResponse,
+
+ DelegateRequest,
+ DelegateResponse,
+
+ ForwardRequest,
+ ForwardResponse,
+
+ CompleteRequest,
+ CompleteResponse,
+
+ FailRequest,
+ FailResponse,
+
+ GetTaskRequest,
+ GetTaskResponse,
+
+ AddTaskRequest,
+ AddTaskResponse,
+
+ AddAttachmentRequest,
+ AddAttachmentResponse,
+ DeleteAttachmentRequest,
+ DeleteAttachmentResponse,
+
+ SetDocumentContentRequest,
+ SetDocumentContentResponse,
+ GetContentRequest,
+ GetContentResponse,
+
+ AddCommentRequest,
+ AddCommentResponse,
+ DeleteCommentRequest,
+ DeleteCommentResponse,
+
+ QueryTasksOwned,
+ QueryTasksAssignedAsBusinessAdministrator,
+ QueryTasksAssignedAsExcludedOwner,
+ QueryTasksAssignedAsPotentialOwner,
+ QueryTasksAssignedAsPotentialOwnerWithGroup,
+ QueryTasksAssignedAsPotentialOwnerByGroup,
+ QuerySubTasksAssignedAsPotentialOwner,
+ QueryGetSubTasksByParentTaskId,
+ QueryTasksAssignedAsRecipient,
+ QueryTasksAssignedAsTaskInitiator,
+ QueryTasksAssignedAsTaskStakeholder,
+ QueryTaskSummaryResponse,
+
+ RegisterForEventRequest,
+ EventTriggerResponse,
+
+ RegisterClient
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/ExecutionNodeClientConnectCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeClientConnectCommand.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,34 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.grid.internal.NodeData;
+
+public class ExecutionNodeClientConnectCommand
+ implements
+ GenericCommand<Integer> {
+
+ private String outIdentifier;
+
+
+
+ public ExecutionNodeClientConnectCommand(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ }
+
+
+
+ public Integer execute(Context context) {
+ NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+ Integer sessionId = data.getSessionIdCounter().getAndIncrement();
+ if ( this.outIdentifier != null ) {
+ ((ExecutionResultImpl)((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier, sessionId );
+ }
+
+ return sessionId;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/ExecutionNodeContext.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/ExecutionNodeContext.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,40 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.grid.internal.NodeData;
+
+public class ExecutionNodeContext
+ implements
+ Context {
+ private Context context;
+ private NodeData data;
+
+ public ExecutionNodeContext(Context context,
+ NodeData data) {
+ this.data = data;
+ }
+
+ public NodeData getServiceManagerData() {
+ return this.data;
+ }
+
+ public ContextManager getContextManager() {
+ return context.getContextManager();
+ }
+
+ public String getName() {
+ return context.getName();
+ }
+
+ public Object get(String identifier) {
+ return context.get( identifier );
+ }
+
+ public void set(String identifier,
+ Object value) {
+ context.set( identifier,
+ value );
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/GetWorkItemManagerCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/GetWorkItemManagerCommand.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,29 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.grid.remote.WorkItemManagerRemoteClient;
+
+/**
+ *
+ * @author Lucas Amador
+ *
+ */
+public class GetWorkItemManagerCommand implements GenericCommand<WorkItemManager> {
+
+ private static final long serialVersionUID = 1L;
+
+ public WorkItemManager execute(Context context) {
+ WorkItemManager workItemManager = ((KnowledgeCommandContext) context).getWorkItemManager();
+ ((ExecutionResultImpl)((KnowledgeCommandContext) context ).getExecutionResults()).getResults().put("workItemManager", getRemoteClient(workItemManager) );
+ return workItemManager;
+ }
+
+ private WorkItemManager getRemoteClient(WorkItemManager workItemManager) {
+ return new WorkItemManagerRemoteClient();
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/LookupCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/LookupCommand.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,39 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.grid.internal.NodeData;
+
+public class LookupCommand
+ implements
+ GenericCommand<String> {
+
+ private String identifier;
+
+ private String outIdentifier;
+
+ public LookupCommand(String identfier) {
+ this.identifier = identfier;
+ }
+
+ public LookupCommand(String identfier,
+ String outIdentifier) {
+ this.identifier = identfier;
+ this.outIdentifier = outIdentifier;
+ }
+
+ public String execute(Context context) {
+ NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+ String instanceId = (String) data.getRoot().get( identifier );
+
+ if ( this.outIdentifier != null ) {
+ ((ExecutionResultImpl) ((KnowledgeCommandContext) context).getExecutionResults()).getResults().put( this.outIdentifier,
+ instanceId );
+ }
+ return instanceId;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/RegisterCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterCommand.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,32 @@
+package org.drools.grid.commands;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.grid.internal.NodeData;
+
+public class RegisterCommand
+ implements
+ GenericCommand<Void> {
+
+ private String identifier;
+ private String instanceId;
+ private int type;
+
+ public RegisterCommand(String identifier,
+ String instanceId,
+ int type) {
+ this.identifier = identifier;
+ this.instanceId = instanceId;
+ this.type = type;
+ }
+
+ public Void execute(Context context) {
+ NodeData data = (NodeData) context.get( NodeData.NODE_DATA );
+
+ data.getRoot().set( identifier,
+ type + ":" + instanceId );
+
+ return null;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/RegisterRemoteWorkItemHandlerCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/RegisterRemoteWorkItemHandlerCommand.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,75 @@
+package org.drools.grid.commands;
+
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.WorkItemHandler;
+
+public class RegisterRemoteWorkItemHandlerCommand implements GenericCommand<Object> {
+
+ private String handler;
+ private String workItemName;
+
+ public RegisterRemoteWorkItemHandlerCommand() {
+ }
+
+ public RegisterRemoteWorkItemHandlerCommand(String workItemName, String handler) {
+ this.handler = handler;
+ this.workItemName = workItemName;
+ }
+
+ public String getHandler() {
+ return handler;
+ }
+
+ public void setHandler(String handler) {
+ this.handler = handler;
+ }
+
+ public String getWorkItemName() {
+ return workItemName;
+ }
+
+ public void setWorkItemName(String workItemName) {
+ this.workItemName = workItemName;
+ }
+
+ public Object execute(Context context) {
+ StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+ WorkItemHandler workItemHandler = null;
+ try {
+ Class t = Class.forName(handler);
+ Constructor c = t.getConstructor(KnowledgeRuntime.class);
+ workItemHandler = (WorkItemHandler) c.newInstance(ksession);
+ } catch (InstantiationException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IllegalAccessException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IllegalArgumentException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (InvocationTargetException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (NoSuchMethodException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (SecurityException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (ClassNotFoundException ex) {
+ Logger.getLogger(RegisterRemoteWorkItemHandlerCommand.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ ksession.getWorkItemManager().registerWorkItemHandler(workItemName, workItemHandler);
+ return null;
+ }
+
+ public String toString() {
+ return "session.getWorkItemManager().registerWorkItemHandler("
+ + workItemName + ", " + handler + ");";
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/command/StartProcessRemoteCommand.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/commands/StartProcessRemoteCommand.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2009 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.commands;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.grid.remote.ProcessInstanceRemoteClient;
+
+/**
+ *
+ * @author salaboy
+ */
+public class StartProcessRemoteCommand implements GenericCommand<ExecutionResults>{
+ private String processId;
+ private Map<String, Object> parameters = new HashMap<String, Object>();
+ private List<Object> data = null;
+
+ public StartProcessRemoteCommand() {
+ }
+
+
+ public StartProcessRemoteCommand(String processId) {
+ this.processId = processId;
+ }
+
+ public List<Object> getData() {
+ return data;
+ }
+
+ public void setData(List<Object> data) {
+ this.data = data;
+ }
+
+ public Map<String, Object> getParameters() {
+ return parameters;
+ }
+
+ public void setParameters(Map<String, Object> parameters) {
+ this.parameters = parameters;
+ }
+
+ public String getProcessId() {
+ return processId;
+ }
+
+ public void setProcessId(String processId) {
+ this.processId = processId;
+ }
+
+
+ public ExecutionResults execute(Context context) {
+ StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+
+ if (data != null) {
+ for (Object o: data) {
+ ksession.insert(o);
+ }
+ }
+ ProcessInstance processInstance = (ProcessInstance) ksession.startProcess(processId, parameters);
+
+ ((ExecutionResultImpl)((KnowledgeCommandContext) context ).getExecutionResults()).getResults().put( processId, getRemoteClient(processInstance) );
+
+ return ((ExecutionResultImpl)((KnowledgeCommandContext) context ).getExecutionResults());
+ }
+
+ public String toString() {
+ String result = "session.startProcess(" + processId + ", [";
+ if (parameters != null) {
+ int i = 0;
+ for (Map.Entry<String, Object> entry: parameters.entrySet()) {
+ if (i++ > 0) {
+ result += ", ";
+ }
+ result += entry.getKey() + "=" + entry.getValue();
+ }
+ }
+ result += "]);";
+ return result;
+ }
+
+ private ProcessInstance getRemoteClient(ProcessInstance processInstance) {
+ return new ProcessInstanceRemoteClient(processInstance.getId(), processInstance.getProcessId(),
+ processInstance.getProcessName(), processInstance.getState());
+ }
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/BlockingGenericIoWriter.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+
+public class BlockingGenericIoWriter implements GenericIoWriter {
+
+ private Message msg;
+
+ public void write(Message message) {
+ this.msg = message;
+ }
+
+ public Message getMessage() {
+ return this.msg;
+ }
+
+ public void write(Message msg,
+ MessageResponseHandler responseHandler) {
+ if ( responseHandler == null ) {
+ this.msg = msg;
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/ClientGenericMessageReceiver.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,18 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.MessageResponseHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+public interface ClientGenericMessageReceiver {
+
+ public abstract void addResponseHandler(int id,
+ MessageResponseHandler responseHandler);
+
+ public abstract void messageReceived(GenericIoWriter writer,
+ Message msg) throws Exception;
+
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/CollectionClient.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/CollectionClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,84 @@
+package org.drools.grid.internal;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+public class CollectionClient<T>
+ implements
+ Collection {
+ private String parentInstanceId;
+
+ public CollectionClient(String parentInstanceId) {
+ this.parentInstanceId = parentInstanceId;
+ }
+
+ public String getParentInstanceId() {
+ return this.parentInstanceId;
+ }
+
+ public boolean add(Object e) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean addAll(Collection c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void clear() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean contains(Object o) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean containsAll(Collection c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isEmpty() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public Iterator iterator() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean remove(Object o) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean removeAll(Collection c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean retainAll(Collection c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Object[] toArray() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Object[] toArray(Object[] a) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/GenericMessageHandler.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandler.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,11 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+
+public interface GenericMessageHandler {
+
+ public abstract void messageReceived(GenericIoWriter session,
+ Message msg) throws Exception;
+
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/GenericMessageHandlerImpl.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,69 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.SystemEventListener;
+import org.drools.command.FinishedCommand;
+import org.drools.command.impl.ContextImpl;
+import org.drools.command.impl.GenericCommand;
+import org.drools.runtime.impl.ExecutionResultImpl;
+
+public class GenericMessageHandlerImpl implements GenericMessageHandler {
+ private SystemEventListener systemEventListener;
+
+ private NodeData data;
+
+ public GenericMessageHandlerImpl(NodeData data,
+ SystemEventListener systemEventListener) {
+ this.systemEventListener = systemEventListener;
+ this.data = data;
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.vsm.GenericMessageHandler#messageReceived(org.drools.vsm.GenericIoWriter, org.drools.vsm.Message)
+ */
+ public void messageReceived(GenericIoWriter session,
+ Message msg) throws Exception {
+ systemEventListener.debug( "Message receieved : " + msg );
+
+
+ // we always need to process a List, for genericity, but don't force a List on the payload
+ List<GenericCommand> commands;
+ if ( msg.getPayload() instanceof List ) {
+ commands = (List<GenericCommand>) msg.getPayload();
+ } else {
+ commands = new ArrayList<GenericCommand>();
+ commands.add( (GenericCommand) msg.getPayload() );
+ }
+
+ // Setup the evaluation context
+ ContextImpl localSessionContext = new ContextImpl( "session_" + msg.getSessionId(),
+ this.data.getContextManager(),
+ this.data.getTemp() );
+ ExecutionResultImpl localKresults = new ExecutionResultImpl();
+ localSessionContext.set( "kresults_" + msg.getSessionId(),
+ localKresults );
+
+ for ( GenericCommand cmd : commands ) {
+ // evaluate the commands
+ cmd.execute( localSessionContext );
+ }
+
+ if ( !msg.isAsync() && localKresults.getIdentifiers().isEmpty() ) {
+ // if it's not an async invocation and their are no results, just send a simple notification message
+ session.write( new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ new FinishedCommand() ), null );
+ } else {
+ // return the payload
+ session.write( new Message( msg.getSessionId(),
+ msg.getResponseId(),
+ msg.isAsync(),
+ localKresults ), null );
+ }
+ }
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/GenericNodeConnector.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/GenericNodeConnector.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,17 @@
+package org.drools.grid.internal;
+
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import java.rmi.RemoteException;
+
+public interface GenericNodeConnector extends GenericIoWriter {
+
+ boolean connect() throws RemoteException;;
+
+ void disconnect() throws RemoteException;;
+
+ Message write(Message msg) throws RemoteException;;
+
+ String getId() throws RemoteException;;
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/MessageSession.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/MessageSession.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,57 @@
+/*
+ * 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.internal;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MessageSession {
+
+ public AtomicInteger counter;
+ private int sessionId = -1;
+
+ public MessageSession() {
+ counter = new AtomicInteger();
+ }
+
+
+
+ public AtomicInteger getCounter() {
+ return counter;
+ }
+
+ public void setCounter(AtomicInteger counter) {
+ this.counter = counter;
+ }
+
+ public int getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(int sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public int getNextId() {
+ return this.counter.incrementAndGet();
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/generic/NodeData.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/internal/NodeData.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,67 @@
+package org.drools.grid.internal;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.drools.command.Context;
+import org.drools.command.ContextManager;
+import org.drools.command.impl.ContextImpl;
+import org.drools.grid.ContextManagerImpl;
+
+public class NodeData {
+ private ContextManager contextManager;
+
+ private Context root;
+ private Context temp;
+
+ public static String ROOT = "ROOT";
+ public static String TEMP = "__TEMP__";
+ public static String NODE_DATA = "__NodeData__";
+
+ private AtomicInteger sessionIdCounter = new AtomicInteger();
+
+ public NodeData() {
+ // Setup ROOT context, this will hold all long lived intances and instanceIds
+ this.contextManager = new ContextManagerImpl();
+
+ this.root = new ContextImpl( ROOT,
+ this.contextManager );
+ ((ContextManagerImpl) this.contextManager).addContext( this.root );
+ this.root.set( NODE_DATA,
+ this );
+ // Setup TEMP context, this will hold all short lived instanceId and instances
+ // TODO: TEMP context should have a time/utilisation eviction queue added
+ this.temp = new ContextImpl( TEMP,
+ this.contextManager,
+ this.root );
+ ((ContextManagerImpl) this.contextManager).addContext( this.temp );
+ }
+
+ public AtomicInteger getSessionIdCounter() {
+ return sessionIdCounter;
+ }
+
+ public ContextManager getContextManager() {
+ return contextManager;
+ }
+
+ public void setContextManager(ContextManager contextManager) {
+ this.contextManager = contextManager;
+ }
+
+ public Context getRoot() {
+ return root;
+ }
+
+ public void setRoot(Context root) {
+ this.root = root;
+ }
+
+ public Context getTemp() {
+ return temp;
+ }
+
+ public void setTemp(Context temp) {
+ this.temp = temp;
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/DirectoryNodeLocalImpl.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -25,7 +25,7 @@
import java.util.UUID;
import org.drools.KnowledgeBase;
import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.generic.GenericNodeConnector;
+import org.drools.grid.GenericNodeConnector;
/**
*
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/local/LocalConnection.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -14,21 +14,22 @@
* limitations under the License.
* under the License.
*/
-
package org.drools.grid.local;
import java.util.ArrayList;
import java.util.List;
import org.drools.KnowledgeBaseFactoryService;
import org.drools.builder.DirectoryLookupFactoryService;
-import org.drools.builder.JPAKnowledgeFactoryService;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.grid.DirectoryNodeService;
import org.drools.grid.ExecutionNode;
-import org.drools.grid.NodeSelectionStrategy;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.local.DirectoryLookupProviderLocalClient;
+import org.drools.grid.local.KnowledgeBaseProviderLocalClient;
+import org.drools.grid.local.KnowledgeBuilderProviderLocalClient;
import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
+import org.drools.grid.strategies.NodeSelectionStrategy;
/**
*
@@ -36,16 +37,14 @@
*/
public class LocalConnection implements GenericConnection {
- //Cached NodeConnectors
+ //Cached NodeConnectors
private List<GenericNodeConnector> nodeConnectors;
-
public LocalConnection() {
this.nodeConnectors = new ArrayList<GenericNodeConnector>();
}
-
public void addNodeConnector(GenericNodeConnector nodeConnector) {
this.nodeConnectors.add(nodeConnector);
}
@@ -74,15 +73,14 @@
public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
ExecutionNode node = new ExecutionNode();
- node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderLocalClient() );
- node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderLocalClient() );
+ node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderLocalClient());
+ node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderLocalClient());
node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderLocalClient());
-
+
return node;
}
public ExecutionNode getExecutionNode() {
return getExecutionNode(null);
}
-
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/DirectoryLookupProviderRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -26,12 +26,12 @@
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.grid.command.LookupCommand;
-import org.drools.grid.command.RegisterCommand;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.commands.LookupCommand;
+import org.drools.grid.commands.RegisterCommand;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
/**
*
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -11,9 +11,9 @@
import org.drools.command.SetVariableCommand;
import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
public class KnowledgeBaseProviderRemoteClient
implements
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -18,10 +18,10 @@
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
-import org.drools.grid.generic.CollectionClient;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.internal.CollectionClient;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
public class KnowledgeBaseRemoteClient
implements
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -14,9 +14,9 @@
import org.drools.command.FinishedCommand;
import org.drools.command.SetVariableCommand;
import org.drools.command.builder.NewKnowledgeBuilderCommand;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
public class KnowledgeBuilderProviderRemoteClient
implements
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -15,10 +15,10 @@
import org.drools.definition.KnowledgePackage;
import org.drools.io.Resource;
import org.drools.runtime.ExecutionResults;
-import org.drools.grid.generic.CollectionClient;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.internal.CollectionClient;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
public class KnowledgeBuilderRemoteClient
implements
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/RemoteConnection.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/RemoteConnection.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,124 @@
+/*
+ * 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.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.DirectoryLookupFactoryService;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.strategies.DirectoryServiceSelectionStrategy;
+import org.drools.grid.strategies.NodeSelectionStrategy;
+
+import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RemoteConnection implements GenericConnection {
+ //Cached Services
+
+ private List<GenericNodeConnector> nodeConnectors;
+ //Cached Directories
+ private List<DirectoryNodeService> directories;
+
+ public RemoteConnection() {
+ this.nodeConnectors = new ArrayList<GenericNodeConnector>();
+ this.directories = new ArrayList<DirectoryNodeService>();
+ }
+
+ public void addNodeConnector(GenericNodeConnector service) {
+ //register the service to all the DirectoryServices
+ for (DirectoryNodeService directory : directories) {
+ directory.addService(service);
+ }
+ this.nodeConnectors.add(service);
+
+ }
+
+ public void addDirectoryNode(DirectoryNodeService directory) {
+ this.directories.add(directory);
+
+ }
+
+ // In real scenarios this method will be in charge of populating
+ // all the ExecutionNodeService and DirectoryServices
+ public void connect() {
+ }
+
+ public ExecutionNode getExecutionNode(NodeSelectionStrategy strategy) {
+ ExecutionNode node = null;
+ GenericNodeConnector currentNode = null;
+ try {
+
+ //if the strategy is null use the default one
+ if (strategy == null) {
+ currentNode = getBestNode(new StaticIncrementalSelectionStrategy(this));
+ } else {
+ strategy.setConnection(this);
+ currentNode = getBestNode(strategy);
+ }
+ if (currentNode.connect()) {
+ node = new ExecutionNode();
+ node.set(KnowledgeBuilderFactoryService.class, new KnowledgeBuilderProviderRemoteClient(currentNode));
+ node.set(KnowledgeBaseFactoryService.class, new KnowledgeBaseProviderRemoteClient(currentNode));
+ node.set(DirectoryLookupFactoryService.class, new DirectoryLookupProviderRemoteClient(currentNode, this));
+
+ }
+
+ } catch (RemoteException ex) {
+ Logger.getLogger(RemoteConnection.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return node;
+ }
+
+ public GenericNodeConnector getBestNode(NodeSelectionStrategy nodeSelectionStrategy) {
+ return nodeSelectionStrategy.getBestNode();
+ }
+
+ public List<DirectoryNodeService> getDirectories() {
+ return directories;
+ }
+
+ public void setDirectories(List<DirectoryNodeService> directories) {
+ this.directories = directories;
+ }
+
+ public List<GenericNodeConnector> getNodeConnectors() {
+ return nodeConnectors;
+ }
+
+ public void setServices(List<GenericNodeConnector> services) {
+ this.nodeConnectors = services;
+ }
+
+ public DirectoryNodeService getDirectoryNode(DirectoryServiceSelectionStrategy directorySelectionStrategy) {
+ return directories.get(0);
+ }
+
+ public ExecutionNode getExecutionNode() {
+ return getExecutionNode(null);
+ }
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -8,9 +8,9 @@
import org.drools.command.ExecuteCommand;
import org.drools.command.KnowledgeContextResolveFromContextCommand;
import org.drools.command.runtime.rule.FireAllRulesCommand;
-import org.drools.grid.command.GetWorkItemManagerCommand;
-import org.drools.grid.command.RegisterRemoteWorkItemHandlerCommand;
-import org.drools.grid.command.StartProcessRemoteCommand;
+import org.drools.grid.commands.GetWorkItemManagerCommand;
+import org.drools.grid.commands.RegisterRemoteWorkItemHandlerCommand;
+import org.drools.grid.commands.StartProcessRemoteCommand;
import org.drools.event.process.ProcessEventListener;
import org.drools.event.rule.AgendaEventListener;
import org.drools.event.rule.WorkingMemoryEventListener;
@@ -26,12 +26,14 @@
import org.drools.runtime.rule.Agenda;
import org.drools.runtime.rule.AgendaFilter;
import org.drools.runtime.rule.FactHandle;
+
import org.drools.runtime.rule.QueryResults;
+;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
-import org.drools.grid.generic.GenericNodeConnector;
+import org.drools.grid.GenericNodeConnector;
import org.drools.time.SessionClock;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
public class StatefulKnowledgeSessionRemoteClient
implements
@@ -422,4 +424,6 @@
return null;
}
+
+
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/WorkItemManagerRemoteClient.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -7,9 +7,9 @@
import org.drools.command.runtime.process.CompleteWorkItemCommand;
import org.drools.runtime.process.WorkItemHandler;
import org.drools.runtime.process.WorkItemManager;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageSession;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageSession;
/**
*
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/ClientGenericMessageReceiverImpl.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -7,16 +7,16 @@
import java.util.concurrent.ConcurrentHashMap;
import org.drools.SystemEventListener;
-import org.drools.grid.command.Command;
+import org.drools.grid.commands.Command;
-import org.drools.grid.generic.ClientGenericMessageReceiver;
-import org.drools.grid.generic.GenericIoWriter;
-import org.drools.grid.generic.GenericMessageHandler;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.ClientGenericMessageReceiver;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.GenericMessageHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
public class ClientGenericMessageReceiverImpl
implements
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -5,10 +5,10 @@
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.drools.SystemEventListener;
-import org.drools.grid.generic.ClientGenericMessageReceiver;
-import org.drools.grid.generic.GenericMessageHandler;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.ClientGenericMessageReceiver;
+import org.drools.grid.internal.GenericMessageHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
public class MinaIoHandler extends IoHandlerAdapter {
/**
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaIoWriter.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,9 +1,9 @@
package org.drools.grid.remote.mina;
import org.apache.mina.core.session.IoSession;
-import org.drools.grid.generic.GenericIoWriter;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
public class MinaIoWriter
implements
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -8,11 +8,13 @@
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.SocketConnector;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.drools.SystemEventListener;
-import org.drools.grid.generic.GenericNodeConnector;
-import org.drools.grid.generic.GenericIoWriter;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
import org.drools.grid.responsehandlers.BlockingMessageResponseHandler;
public class MinaNodeConnector
@@ -41,8 +43,26 @@
this.address = address;
this.connector = connector;
this.eventListener = eventListener;
+
}
+ public MinaNodeConnector(String name,
+ SocketAddress address,
+ SystemEventListener eventListener) {
+
+ SocketConnector minaconnector = new NioSocketConnector();
+ minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ if ( name == null ) {
+ throw new IllegalArgumentException( "Name can not be null" );
+ }
+ this.name = name;
+ this.counter = new AtomicInteger();
+ this.address = address;
+ this.connector = minaconnector;
+ this.eventListener = eventListener;
+ }
+
+
/* (non-Javadoc)
* @see org.drools.vsm.mina.Messenger#connect()
*/
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBaseResponseHandler.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -2,7 +2,7 @@
import java.lang.reflect.Constructor;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.MessageResponseHandler;
/**
* Abstract base class for client ResponseHandlers. Provides synchonized access to <field>done</field> which represents
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/BlockingMessageResponseHandler.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -3,8 +3,8 @@
*/
package org.drools.grid.responsehandlers;
-import org.drools.grid.generic.Message;
-import org.drools.grid.generic.MessageResponseHandler;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
public class BlockingMessageResponseHandler extends AbstractBlockingResponseHandler
implements
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/DirectoryServiceSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,26 +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.grid.strategies;
-
-/**
- *
- * @author salaboy
- */
-public class DirectoryServiceSelectionStrategy {
-
-}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/ReturnAlwaysTheFirstSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,43 +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.grid.strategies;
-
-import org.drools.grid.NodeSelectionStrategy;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-
-/**
- *
- * @author salaboy
- */
-public class ReturnAlwaysTheFirstSelectionStrategy implements NodeSelectionStrategy{
-
- private GenericConnection connection;
- public ReturnAlwaysTheFirstSelectionStrategy(GenericConnection connection) {
- this.connection = connection;
- }
- public GenericNodeConnector getBestNode() {
- return this.connection.getNodeConnectors().get(0);
- }
-
- public void setConnection(GenericConnection connection) {
- this.connection = connection;
- }
-
-
-}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,51 +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.grid.strategies;
-
-
-import org.drools.grid.NodeSelectionStrategy;
-import org.drools.grid.generic.GenericConnection;
-import org.drools.grid.generic.GenericNodeConnector;
-
-
-/**
- *
- * @author salaboy
- */
-public class StaticIncrementalSelectionStrategy implements NodeSelectionStrategy{
- public static int counter = 0;
- private GenericConnection connection;
- public StaticIncrementalSelectionStrategy(GenericConnection connection) {
- this.connection = connection;
- }
-
-
- //@Override
- public GenericNodeConnector getBestNode() {
- System.out.println("!!!!!GET BEST NODE = "+counter);
- GenericNodeConnector service = connection.getNodeConnectors().get(counter);
- StaticIncrementalSelectionStrategy.counter = counter +1;
- return service;
- }
-
- public void setConnection(GenericConnection connection) {
- this.connection = connection;
- }
-
-
-}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/ExecutionNodeBaseTest.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -28,7 +28,6 @@
import org.drools.io.ResourceFactory;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.grid.generic.GenericConnection;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/test/java/org/drools/grid/RemoteExecutionNodeTest.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -17,23 +17,21 @@
package org.drools.grid;
+import org.drools.grid.remote.RemoteConnection;
import java.rmi.RemoteException;
import java.util.Iterator;
import org.drools.grid.remote.mina.MinaNodeConnector;
-import org.drools.grid.generic.GenericNodeConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import java.io.IOException;
import org.drools.grid.remote.mina.MinaAcceptor;
-import org.drools.grid.generic.GenericMessageHandlerImpl;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
import org.drools.grid.remote.mina.MinaIoHandler;
import org.drools.SystemEventListenerFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.apache.mina.transport.socket.SocketAcceptor;
-import org.drools.grid.generic.NodeData;
+import org.drools.grid.internal.NodeData;
import java.net.SocketAddress;
import java.net.InetSocketAddress;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.RemoteConnection;
import org.drools.grid.local.DirectoryNodeLocalImpl;
import org.drools.grid.strategies.StaticIncrementalSelectionStrategy;
import org.junit.After;
Property changes on: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services
___________________________________________________________________
Name: svn:ignore
+ target
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>drools-grid</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0.SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <name>Drools :: Grid :: Services</name>
+ <artifactId>drools-grid-services</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ <type>jar</type>
+ <version>5.1.0.SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-grid-core</artifactId>
+ <version>5.1.0.SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.mina</groupId>
+ <artifactId>mina-core</artifactId>
+ <version>2.0.0-M6</version>
+
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,20 @@
+package org.drools.grid.services;
+
+import java.util.Map;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 11:10:44 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface EnvironmentProvider {
+
+ public GenericNodeConnector getNodeConnector();
+ public void setParameter(String name, Object value);
+ public Object getParameter(String name);
+ public Map<String, Object> getParameters();
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironment.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,113 @@
+package org.drools.grid.services;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import org.drools.grid.GenericNodeConnector;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 11:45:32 AM
+ * To change this template use File | Settings | File Templates.
+ */
+
+
+/**
+ * @author salaboy
+ */
+public class ExecutionEnvironment {
+ private String id;
+ private String name;
+ private EnvironmentProvider provider;
+ public enum ProviderStatus{RUNNING, STOPPED, FAILURE};
+ private ProviderStatus status;
+
+ private Map<String, Object> info;
+
+ public ExecutionEnvironment(String name, EnvironmentProvider provider) {
+ this.id = UUID.randomUUID().toString();
+ this.name = name;
+ this.provider = provider;
+ this.info = new HashMap<String, Object>();
+ }
+
+ private void queryForInfo(){
+ //Information about the provider (Mem, CPU, KErnel, etc)
+ this.info.put("info", null);
+
+ }
+
+ public boolean checkConnection(){
+// if(provider.checkConnection()){
+// return true;
+// }
+
+ return false;
+ }
+
+ public ProviderStatus getStatus(){
+ if(checkConnection()){
+ return ProviderStatus.RUNNING;
+
+ }
+ return null;
+ }
+
+ public long ping() throws IOException{
+ String ip = provider.getParameter("providerAddress").toString();
+ InetAddress in = InetAddress.getByName(ip);
+ long startTime = System.currentTimeMillis();
+ long timeOfResponse;
+ if(in.isReachable(5000)){
+ timeOfResponse = System.currentTimeMillis();
+ System.out.println("Responde OK");
+ return timeOfResponse - startTime;
+ }
+ else{
+ System.out.println("No responde: Time out");
+ return 0;
+ }
+
+ }
+
+ public GenericNodeConnector getConnector(){
+ return provider.getNodeConnector();
+ }
+
+ public Map<String, Object> getInfo(){
+ return this.info;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public EnvironmentProvider getProvider() {
+ return provider;
+ }
+
+ public void setProvider(EnvironmentProvider provider) {
+ this.provider = provider;
+ }
+
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,95 @@
+package org.drools.grid.services;
+
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.remote.RemoteConnection;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.remote.mina.MinaNodeConnector;
+import java.util.*;
+import org.drools.grid.services.directory.DirectoryInstance;
+import org.drools.grid.services.strategies.ExecutionEnvironmentSelectionStrategy;
+import org.drools.grid.strategies.ReturnAlwaysTheFirstSelectionStrategy;
+
+/**
+ * @author salaboy
+ * ExecutionEnvironmentTopology describes the current topology of the grid
+ * This topology description will be persistent, in case of failure
+ * the topology can be restored.
+ * This class will represent the configured topology related with a business case
+ * and it will require that each execution environment is already started and running.
+ */
+public class ExecutionEnvironmentTopology {
+
+ private String id;
+ private String name;
+ private Map<String, ExecutionEnvironment> environments = new HashMap<String, ExecutionEnvironment>();
+ private Map<String, DirectoryInstance> directories = new HashMap<String, DirectoryInstance>();
+ private Map<String, GenericConnection> connections = new HashMap<String, GenericConnection>();
+
+ public ExecutionEnvironmentTopology(String name) {
+ this.id = UUID.randomUUID().toString();
+ this.name = name;
+
+ }
+
+ public void registerExecutionEnvironment(String name, EnvironmentProvider provider) {
+ ExecutionEnvironment executionEnvironment = new ExecutionEnvironment(name, provider);
+ GenericNodeConnector connector = executionEnvironment.getConnector();
+ System.out.println("Connector =" + connector);
+ if (connector instanceof MinaNodeConnector) {
+ RemoteConnection connection = new RemoteConnection();
+ connection.addNodeConnector(connector);
+
+ connections.put(name, connection);
+
+ }
+ environments.put(name, executionEnvironment);
+
+
+ }
+//
+// public void registerDirectoryInstance(String name, DirectoryProvider provider){
+// // return new DirectoryInstance(name, provider);
+// // return null;
+// }
+
+ public static ExecutionEnvironment lookup(String name) {
+ //black magic
+ return null;
+ }
+
+ public static DirectoryInstance lookupDirectoryInstance(String name) {
+
+ return new DirectoryInstance();
+ }
+
+ public Map<String, GenericConnection> getConnections() {
+ return this.connections;
+ }
+
+ public ExecutionEnvironment getExecutionEnvironment(String name) {
+ return this.environments.get(name);
+ }
+
+ public ExecutionEnvironment getBestExecutionEnvironment(ExecutionEnvironmentSelectionStrategy strategy) {
+ return strategy.getBestExecutionEnvironment(environments);
+ }
+
+ public Map<String, ExecutionEnvironment> getExecutionEnvironments() {
+ return this.environments;
+ }
+
+ public ExecutionNode getExecutionNode() {
+ return null;
+
+ }
+ //@TODO: need to add strategy to get the execution node here!!!
+ public ExecutionNode getExecutionNode(ExecutionEnvironment ee) {
+
+ GenericConnection connection = connections.get(ee.getName());
+ System.out.println("Connection =" + connection + " - > name = " + ee.getName());
+
+ return connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy(connection));
+
+ }
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/directory/DirectoryInstance.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,11 @@
+package org.drools.grid.services.directory;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 11:00:29 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class DirectoryInstance {
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,61 @@
+package org.drools.grid.services.remote;
+
+
+import org.drools.SystemEventListenerFactory;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.remote.mina.MinaNodeConnector;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.mina.transport.socket.SocketConnector;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.EnvironmentProvider;
+
+/**
+ * @author salaboy
+ */
+public class MinaEnvironmentProvider implements EnvironmentProvider {
+ private Map<String, Object> parameters = new HashMap<String, Object>();
+ private transient GenericNodeConnector connector;
+
+ public MinaEnvironmentProvider() {
+ init();
+
+ }
+
+
+
+ public MinaEnvironmentProvider(Map<String, Object> parameters) {
+ this.parameters = parameters;
+ init();
+ }
+
+ private void init() {
+ String providerName = (String) parameters.get("providerName");
+ String providerAddress = (String) parameters.get("providerAddress");
+ int providerPort = (Integer) parameters.get("providerPort");
+ SocketAddress address = new InetSocketAddress(providerAddress, providerPort);
+ SocketConnector minaconnector = new NioSocketConnector();
+ minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
+ connector = new MinaNodeConnector(providerName, address, SystemEventListenerFactory.getSystemEventListener());
+ }
+
+
+ public void setParameter(String name, Object value) {
+ parameters.put(name, value);
+ }
+
+ public Object getParameter(String name) {
+ return parameters.get(name);
+ }
+
+ public Map<String, Object> getParameters() {
+ return parameters;
+ }
+
+ public GenericNodeConnector getNodeConnector(){
+ return this.connector;
+ }
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/ExecutionEnvironmentSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,31 @@
+/*
+ * 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.services.strategies;
+
+import java.util.Map;
+import org.drools.grid.services.ExecutionEnvironment;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface ExecutionEnvironmentSelectionStrategy {
+ public ExecutionEnvironment getBestExecutionEnvironment();
+ public void setEnvironments(Map<String, ExecutionEnvironment> environments);
+ public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments);
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/LowPingFirstEnvironmentSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,77 @@
+/*
+ * 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.services.strategies;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.services.ExecutionEnvironment;
+
+/**
+ *
+ * @author salaboy
+ *
+ * The Environment with lowest ping will be selected
+ */
+public class LowPingFirstEnvironmentSelectionStrategy implements ExecutionEnvironmentSelectionStrategy {
+
+ private Map<String, ExecutionEnvironment> environments;
+
+ public LowPingFirstEnvironmentSelectionStrategy() {
+ }
+
+
+ public LowPingFirstEnvironmentSelectionStrategy(Map<String, ExecutionEnvironment> environments) {
+ this.environments = environments;
+ }
+
+
+ public ExecutionEnvironment getBestExecutionEnvironment() {
+ ExecutionEnvironment selectedEnv = null;
+ for(ExecutionEnvironment env : this.environments.values()){
+ if(selectedEnv != null){
+ try {
+ int oldping = Integer.parseInt(selectedEnv.getInfo().get("ping").toString());
+ long ping = env.ping();
+ if (oldping > ping) {
+ selectedEnv = env;
+ }
+ } catch (IOException ex) {
+ Logger.getLogger(LowPingFirstEnvironmentSelectionStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ }
+
+ }
+
+ return selectedEnv;
+ }
+
+ public void setEnvironments(Map<String, ExecutionEnvironment> environments) {
+ this.environments = environments;
+ }
+
+ public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments) {
+ setEnvironments(environments);
+ return getBestExecutionEnvironment();
+ }
+
+
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/RandomEnvironmentSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,52 @@
+/*
+ * 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.services.strategies;
+
+import java.util.Map;
+import org.drools.grid.services.ExecutionEnvironment;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RandomEnvironmentSelectionStrategy implements ExecutionEnvironmentSelectionStrategy{
+
+ private Map<String, ExecutionEnvironment> environments;
+ public ExecutionEnvironment getBestExecutionEnvironment() {
+ int elementToGet = (new Double(Math.random() * 100).intValue() % environments.size());
+ int counter = 0;
+ ExecutionEnvironment selectedEnv = null;
+ for(String key : environments.keySet()){
+ if(counter == elementToGet){
+ selectedEnv = environments.get(key);
+ }
+ counter++;
+ }
+ return selectedEnv;
+ }
+
+ public void setEnvironments(Map<String, ExecutionEnvironment> environments) {
+ this.environments = environments;
+ }
+
+ public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments) {
+ setEnvironments(environments);
+ return getBestExecutionEnvironment();
+ }
+
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java 2010-05-26 14:50:52 UTC (rev 33093)
@@ -0,0 +1,345 @@
+package org.drools.services;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.ExecutionEnvironmentTopology;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.ExecutionNode;
+import org.junit.Test;
+
+import java.util.Map;
+import junit.framework.Assert;
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+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.builder.ResourceType;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.strategies.RandomEnvironmentSelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.Before;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: salaboy
+ * Date: May 17, 2010
+ * Time: 10:07:02 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class BasicAPITest {
+
+ private MinaAcceptor server1;
+ private MinaAcceptor server2;
+ private ExecutionEnvironmentTopology eet;
+
+ @Before
+ public void setUp() throws IOException {
+
+ System.out.println("Server 1 Starting!");
+ // the servers should be started in a different machine (jvm or physical) or in another thread
+ SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+ NodeData nodeData = new NodeData();
+ // setup Server
+ SocketAcceptor acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ server1 = new MinaAcceptor(acceptor, address);
+ server1.start();
+ System.out.println("Server 1 Started! at = " + address.toString());
+
+
+ System.out.println("Server 2 Starting!");
+ // the servers should be started in a different machine (jvm or physical) or in another thread
+ address = new InetSocketAddress("127.0.0.1", 9124);
+ nodeData = new NodeData();
+ // setup Server
+ acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ server2 = new MinaAcceptor(acceptor, address);
+ server2.start();
+ System.out.println("Server 2 Started! at = " + address.toString());
+
+
+ }
+
+ @After
+ public void stop() {
+ for (String key : eet.getExecutionEnvironments().keySet()) {
+ try {
+ eet.getExecutionEnvironment(key).getConnector().disconnect();
+ } catch (RemoteException ex) {
+ Logger.getLogger(BasicAPITest.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ server1.stop();
+ System.out.println("Server 1 Stopped!");
+
+ server2.stop();
+ System.out.println("Server 2 Stopped!");
+
+
+
+
+ }
+
+ @Test
+ public void singleMinaProvider() {
+
+ //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+ //will be used for a specific situation/use case.
+
+ //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the
+ //topology in case of failure or restarting
+ eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+ //Specific paramters for this specific provider
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("providerName", "Mina1");
+ parameters.put("providerAddress", "127.0.0.1");
+ parameters.put("providerPort", 9123);
+ //Create the provider
+ MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+ //Register the provider into the topology
+ eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
+
+ //Then we can get the registered Execution Environments by Name
+
+ ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+ Assert.assertNotNull(ee);
+
+ // Give me an ExecutionNode in the selected environment
+ // For the Mina we have just one Execution Node per server instance
+ ExecutionNode node = eet.getExecutionNode(ee);
+
+ Assert.assertNotNull(node);
+
+
+ // Do a basic Runtime Test that register a ksession and fire some rules.
+ 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();
+ Assert.assertNotNull(ksession);
+
+ int fired = ksession.fireAllRules();
+ Assert.assertEquals(2, fired);
+
+ System.out.println("Ending Test One");
+
+ }
+
+ @Test
+ public void multiMinaProvider() {
+
+ //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+ //will be used for a specific situation/use case.
+
+ //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the
+ //topology in case of failure or restarting
+
+ System.out.println("Starting Test Two");
+ eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+ //Specific paramters for this specific provider
+ Map<String, Object> parameters1 = new HashMap<String, Object>();
+ parameters1.put("providerName", "Mina1");
+ parameters1.put("providerAddress", "127.0.0.1");
+ parameters1.put("providerPort", 9123);
+ //Create the provider
+ MinaEnvironmentProvider provider1 = new MinaEnvironmentProvider(parameters1);
+ //Register the provider into the topology
+ eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider1);
+
+ //Specific paramters for this specific provider
+ Map<String, Object> parameters2 = new HashMap<String, Object>();
+ parameters2.put("providerName", "Mina1");
+ parameters2.put("providerAddress", "127.0.0.1");
+ parameters2.put("providerPort", 9124);
+ //Create the provider
+ MinaEnvironmentProvider provider2 = new MinaEnvironmentProvider(parameters2);
+ //Register the provider into the topology
+ eet.registerExecutionEnvironment("MyMinaExecutionEnv2", provider2);
+
+ //Then we can get the registered Execution Environments by Name
+ ExecutionEnvironment ee = eet.getBestExecutionEnvironment(new RandomEnvironmentSelectionStrategy());
+
+ Assert.assertNotNull(ee);
+ System.out.println("Selected Environment = " + ee.getName());
+
+ // Give me an ExecutionNode in the selected environment
+ // For the Mina we have just one Execution Node per server instance
+ ExecutionNode node = eet.getExecutionNode(ee);
+ Assert.assertNotNull(node);
+
+
+ // Do a basic Runtime Test that register a ksession and fire some rules.
+ 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();
+ Assert.assertNotNull(ksession);
+
+ int fired = ksession.fireAllRules();
+ Assert.assertEquals(2, fired);
+
+ }
+//
+// @Test
+// public void basicMinaProviderTestOLD(){
+//
+// //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+// //will be used for a specific situation/use case.
+//
+// //Runtime state, persistent
+// ExecutionEnvironmentTopology eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+// //Logical state and content of each execution environment
+// // DirectoryInstance directory = eet.registerDirectoryInstance("MyMainDirectory",new ZooKeeperDirectoryProvider());
+//
+// Map<String, Object> parameters = new HashMap<String,Object>();
+// parameters.put("providerName", "Mina1");
+// parameters.put("providerAddress", "127.0.0.1");
+// parameters.put("providerPort", 9123);
+//
+// MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+//
+// eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider );
+//
+//
+// //eet = ExecutionEnvironmentTopology.lookup("MyCompanyTopology");
+//
+// // directory = eem.getDirectoryInstance("MyMainDirectory");
+//
+// // List<DirectoryInstance> directories = eem.getAllDirectoryInstances();
+// // this should return the active list of Envs, then we can query for the status of each of them
+//// Map<String, ExecutionEnvironment> ees = eet.getExecutionEnvironments();
+//// ees.get("MyMinaExecutionEnv1").getInfo();
+//// ees.get("MyMinaExecutionEnv1").getStatus();
+////
+// ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+// Assert.assertNotNull(ee);
+// //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+//// ExecutionNode en = eet.getExecutionNode();
+//
+// //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+// ExecutionNode node = eet.getExecutionNode(ee); // give me an ExecutionNode in that environment..
+//
+// Assert.assertNotNull(node);
+//
+// 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();
+// Assert.assertNotNull(ksession);
+//
+// int fired = ksession.fireAllRules();
+// Assert.assertEquals( 2, fired );
+//
+//
+//
+// }
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml 2010-05-26 14:46:08 UTC (rev 33092)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml 2010-05-26 14:50:52 UTC (rev 33093)
@@ -1,26 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>drools</artifactId>
- <groupId>org.drools</groupId>
- <version>5.1.0.SNAPSHOT</version>
- </parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0.SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <name>Drools :: Grid</name>
+ <artifactId>drools-grid</artifactId>
+ <packaging>pom</packaging>
- <artifactId>drools-grid</artifactId>
- <packaging>pom</packaging>
- <name>Drools :: Grid</name>
+ <modules>
+ <module>drools-grid-client-api</module>
+ <module>drools-grid-services</module>
+ <module>drools-grid-core</module>
- <modules>
- <module>drools-grid-core</module>
- <module>drools-grid-task</module>
- <!-- You need JDK 1.6 and a special branch of the RIO project to work with this -->
- <!-- This will be updated soon to be used with RIO trunk -->
- <!-- For building this module with Hudson, we need to have installed a RIO runtime/RIO trunk inside
- the Hudson Machine and compile everything with JDK 1.6. Also you need to export the RIO_HOME
- env variable -->
- <!--module>drools-grid-rio</module-->
- </modules>
+ </modules>
+
</project>
More information about the jboss-svn-commits
mailing list