[jboss-svn-commits] JBL Code SVN: r33115 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-api and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 27 09:22:33 EDT 2010
Author: salaboy21
Date: 2010-05-27 09:22:31 -0400 (Thu, 27 May 2010)
New Revision: 33115
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/CollectionClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/MessageSession.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/NodeData.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/Command.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/CommandName.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/LookupCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java
Removed:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnection.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java
Log:
moving everything and refactoring apis
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api (from rev 33093, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-client-api)
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/pom.xml
===================================================================
--- 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)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/pom.xml 2010-05-27 13:22:31 UTC (rev 33115)
@@ -9,8 +9,8 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
- <name>Drools :: Grid :: Client API</name>
- <artifactId>drools-grid-client-api</artifactId>
+ <name>Drools :: Grid :: API</name>
+ <artifactId>drools-grid-api</artifactId>
<build>
<plugins>
<plugin>
@@ -35,10 +35,17 @@
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-api</artifactId>
- <version>5.1.0.SNAPSHOT</version>
</dependency>
-
-
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <type>jar</type>
+ </dependency>
</dependencies>
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java (from rev 33093, 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-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/DirectoryNodeLocalImpl.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,82 @@
+/*
+ * 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.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import org.drools.KnowledgeBase;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericNodeConnector;
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryNodeLocalImpl implements DirectoryNodeService {
+
+ private String id;
+ private Map<String, String> directoryMap = new HashMap<String, String>();
+ private List<GenericNodeConnector> services = new ArrayList<GenericNodeConnector>();
+
+ public DirectoryNodeLocalImpl() {
+ this.id = UUID.randomUUID().toString();
+ }
+
+ public String getId() throws RemoteException {
+ return this.id;
+ }
+
+ public void register(String executorId, String sessionServiceId) throws RemoteException {
+ System.out.println("Registering: " + executorId + " -- " + sessionServiceId);
+ directoryMap.put(executorId, sessionServiceId);
+ }
+
+ public GenericNodeConnector lookup(String executorId) throws RemoteException {
+ GenericNodeConnector sessionService = null;
+ String sessionServiceId = (String) directoryMap.get(executorId);
+ System.out.println("Registry = " + directoryMap.toString());
+ System.out.println("Nodes Services = " + services);
+ for (GenericNodeConnector ss : services) {
+ System.out.println("Session Service id = " + ss.getId() + "needs to match with =" + sessionServiceId);
+ if (ss.getId().equals(sessionServiceId)) {
+ sessionService = ss;
+ }
+ }
+
+ return sessionService;
+ }
+
+ public void registerKBase(String kbaseId, String sessionServiceId) throws RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase lookupKBase(String kbaseId) throws RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void addService(GenericNodeConnector service) {
+ services.add(service);
+ }
+
+ public Map<String, String> getDirectoryMap() {
+ return directoryMap;
+ }
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-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 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericConnection.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -14,12 +14,9 @@
* 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;
@@ -30,11 +27,16 @@
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);
-
}
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-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 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -1,16 +0,0 @@
-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;
-}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java (from rev 33093, 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-api/src/main/java/org/drools/grid/GenericNodeConnector.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/GenericNodeConnector.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,17 @@
+package org.drools.grid;
+
+import java.rmi.RemoteException;
+import org.drools.grid.internal.GenericIoWriter;
+import org.drools.grid.internal.Message;
+
+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-api/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/BlockingGenericIoWriter.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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-api/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/ClientGenericMessageReceiver.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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-api/src/main/java/org/drools/grid/internal/CollectionClient.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/CollectionClient.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/CollectionClient.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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-api/src/main/java/org/drools/grid/internal/GenericMessageHandler.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/GenericMessageHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandler.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/GenericMessageHandlerImpl.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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-api/src/main/java/org/drools/grid/internal/MessageSession.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/MessageSession.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/MessageSession.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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-api/src/main/java/org/drools/grid/internal/NodeData.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/NodeData.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/NodeData.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -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;
+ }
+
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/Command.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/Command.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/Command.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,48 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/commands/CommandName.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/CommandName.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/CommandName.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,79 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeClientConnectCommand.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,34 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/ExecutionNodeContext.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,40 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/commands/LookupCommand.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/LookupCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/LookupCommand.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,39 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/RegisterCommand.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,32 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/commands/RegisterRemoteWorkItemHandlerCommand.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,75 @@
+package org.drools.grid.internal.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-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBaseResponseHandler.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,69 @@
+package org.drools.grid.internal.responsehandlers;
+
+import java.lang.reflect.Constructor;
+
+import org.drools.grid.internal.MessageResponseHandler;
+
+/**
+ * Abstract base class for client ResponseHandlers. Provides synchonized access to <field>done</field> which represents
+ * if the response is completed. Also has an <field>error</field> which will be set when there is a problem with
+ * a response. Users of this class should check to see if the response completed successfully, via
+ * the <method>isDone</method> and the <method>hasError</method>.
+ * <p/>
+ * Please note that the <field>error</field> is actually the Exception that occured on the server while
+ * processing the request.
+ *
+ * @author <a href="mailto:stampy88 at yahoo.com">dave sinclair</a>
+ */
+public abstract class AbstractBaseResponseHandler
+ implements
+ MessageResponseHandler {
+ private volatile boolean done;
+ private RuntimeException error;
+
+ public synchronized boolean hasError() {
+ return error != null;
+ }
+
+ public synchronized RuntimeException getError() {
+ return error;
+ }
+
+ public synchronized void setError(RuntimeException error) {
+ this.error = error;
+ notifyAll();
+ }
+
+ public synchronized boolean isDone() {
+ return done;
+ }
+
+ protected synchronized void setDone(boolean done) {
+ this.done = done;
+ notifyAll();
+ }
+
+ /**
+ * This method will take the specified serverSideException, and create a new one for the client based
+ * on the serverSideException. This is done so a proper stack trace can be made for the client, as opposed
+ * to seeing the server side stack.
+ *
+ * @param serverSideException exception used to create client side exception
+ * @return client side exception
+ */
+ protected static RuntimeException createSideException(RuntimeException serverSideException) {
+ RuntimeException clientSideException;
+
+ try {
+ Constructor< ? extends RuntimeException> constructor = serverSideException.getClass().getConstructor( String.class );
+
+ clientSideException = constructor.newInstance( "Server-side Exception: " + serverSideException.getMessage() );
+ } catch ( Exception e ) {
+ // this should never happen - if it does, it is a programming error
+ throw new RuntimeException( "Could not create client side exception",
+ e );
+ }
+
+ return clientSideException;
+ }
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java (from rev 32892, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-core/src/main/java/org/drools/grid/responsehandlers/AbstractBlockingResponseHandler.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/AbstractBlockingResponseHandler.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,37 @@
+/**
+ *
+ */
+package org.drools.grid.internal.responsehandlers;
+
+public abstract class AbstractBlockingResponseHandler extends AbstractBaseResponseHandler {
+
+ /**
+ * This method will wait the specified amount of time in milliseconds for the response to
+ * be completed. Completed is determined via the <field>done</field>. Returns true if the
+ * reponse was completed in time, false otherwise. If an error occurs, this method will throw
+ * a subclass of <code>RuntimeException</code> specific to the error.
+ *
+ * @param time max time to wait
+ * @return true if response is available, false otherwise
+ *
+ * @see org.drools.task.service.PermissionDeniedException
+ * @see org.drools.task.service.CannotAddTaskException
+ * @see javax.persistence.PersistenceException
+ */
+ public synchronized boolean waitTillDone(long time) {
+
+ if ( !isDone() ) {
+ try {
+ wait( time );
+ } catch ( InterruptedException e ) {
+ // swallow and return state of done
+ }
+ }
+
+ if ( hasError() ) {
+ throw createSideException( getError() );
+ }
+
+ return isDone();
+ }
+}
\ No newline at end of file
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java (from rev 33093, 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-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package org.drools.grid.internal.responsehandlers;
+
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+public class BlockingMessageResponseHandler extends AbstractBlockingResponseHandler
+ implements
+ MessageResponseHandler {
+ private static final int ATTACHMENT_ID_WAIT_TIME = 100000;
+ private static final int CONTENT_ID_WAIT_TIME = 50000;
+
+ private volatile Message message;
+
+ public synchronized void receive(Message message) {
+ this.message = message;
+ setDone( true );
+ }
+
+ public Message getMessage() {
+ boolean done = waitTillDone( CONTENT_ID_WAIT_TIME );
+
+ if ( !done ) {
+ throw new RuntimeException( "Timeout : unable to retrieve Object Id" );
+ }
+
+ return this.message;
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-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/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/strategies/StaticIncrementalSelectionStrategy.java 2010-05-27 13:22:31 UTC (rev 33115)
@@ -20,8 +20,8 @@
import org.drools.grid.GenericConnection;
import org.drools.grid.GenericNodeConnector;
+
-
/**
*
* @author salaboy
More information about the jboss-svn-commits
mailing list