[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