[jboss-svn-commits] JBL Code SVN: r29860 - labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/rio/service.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 28 16:54:22 EDT 2009
Author: mark.proctor at jboss.com
Date: 2009-10-28 16:54:22 -0400 (Wed, 28 Oct 2009)
New Revision: 29860
Modified:
labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/rio/service/SessionServiceImpl.java
Log:
JBRULES-2269 Virtual Service Manager
-rio now uses GenericIoWriter
Modified: labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/rio/service/SessionServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/rio/service/SessionServiceImpl.java 2009-10-28 18:32:44 UTC (rev 29859)
+++ labs/jbossrules/trunk/drools-vsm/src/main/java/org/drools/vsm/rio/service/SessionServiceImpl.java 2009-10-28 20:54:22 UTC (rev 29860)
@@ -26,6 +26,8 @@
import org.drools.command.impl.ContextImpl;
import org.drools.command.impl.GenericCommand;
import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.vsm.GenericIoWriter;
+import org.drools.vsm.GenericMessageHandler;
import org.drools.vsm.Message;
import org.drools.vsm.ServiceManagerData;
import org.drools.vsm.rio.SessionService;
@@ -53,44 +55,29 @@
public Message write(Message msg) throws RemoteException {
- 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() );
+ GenericMessageHandler handler = null;
+ BlockingGenericIoWriter blockingWriter = new BlockingGenericIoWriter();
+ try {
+ handler.messageReceived( blockingWriter, msg );
+ } catch ( Exception e ) {
+ throw new RemoteException( e.getMessage() );
}
+
+ return blockingWriter.getMessage();
+ }
+
+ private static class BlockingGenericIoWriter implements GenericIoWriter {
+
+ private Message msg;
- // 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 );
+ public void write(Message message) {
+ this.msg = message;
}
-
- if ( !msg.isAsync() && localKresults.getIdentifiers().isEmpty() ) {
- // if it's not an async invocation and their are no results, just send a simple notification message
- return new Message( msg.getSessionId(),
- msg.getResponseId(),
- msg.isAsync(),
- new FinishedCommand() );
- } else {
- // return the payload
- return new Message( msg.getSessionId(),
- msg.getResponseId(),
- msg.isAsync(),
- localKresults ) ;
+
+ public Message getMessage() {
+ return this.msg;
}
+
}
}
More information about the jboss-svn-commits
mailing list