[jboss-svn-commits] JBL Code SVN: r20081 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue May 20 08:50:33 EDT 2008


Author: KrisVerlaenen
Date: 2008-05-20 08:50:33 -0400 (Tue, 20 May 2008)
New Revision: 20081

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java
Log:
JBRULES-1610: Binary serialization for processes
 - variables

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java	2008-05-20 12:50:30 UTC (rev 20080)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java	2008-05-20 12:50:33 UTC (rev 20081)
@@ -22,8 +22,10 @@
 import org.drools.common.RuleFlowGroupImpl;
 import org.drools.common.TruthMaintenanceSystem;
 import org.drools.concurrent.ExecutorService;
+import org.drools.process.core.context.variable.VariableScope;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
 import org.drools.process.instance.impl.WorkItemImpl;
 import org.drools.reteoo.BetaMemory;
 import org.drools.reteoo.BetaNode;
@@ -537,7 +539,22 @@
         long nodeInstanceCounter = stream.readLong();
         processInstance.setWorkingMemory(wm);
         
-        while ( stream.readInt() == PersisterEnums.NODE_INSTANCE ) {
+        int nbVariables = stream.readInt();
+        if (nbVariables > 0) {
+	        VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+	    		processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
+	        for (int i = 0; i < nbVariables; i++) {
+	        	String name = stream.readUTF();
+	        	try {
+	        		Object value = stream.readObject();
+		        	variableScopeInstance.setVariable(name, value);
+	        	} catch (ClassNotFoundException e) {
+	        		throw new IllegalArgumentException("Could not reload variable " + name);
+	        	}
+	        }
+        }
+        
+    	while ( stream.readInt() == PersisterEnums.NODE_INSTANCE ) {
             readNodeInstance( context, processInstance );
         }
         

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java	2008-05-20 12:50:30 UTC (rev 20080)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java	2008-05-20 12:50:33 UTC (rev 20081)
@@ -25,8 +25,10 @@
 import org.drools.common.ObjectStore;
 import org.drools.common.RuleFlowGroupImpl;
 import org.drools.common.WorkingMemoryAction;
+import org.drools.process.core.context.variable.VariableScope;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
 import org.drools.reteoo.EvalConditionNode;
 import org.drools.reteoo.ExistsNode;
 import org.drools.reteoo.JoinNode;
@@ -601,6 +603,15 @@
         stream.writeInt(processInstance.getState());
         stream.writeLong(processInstance.getNodeInstanceCounter());
         
+        VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+        	processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
+        Map<String, Object> variables = variableScopeInstance.getVariables();
+        stream.writeInt(variables.size());
+        for (Map.Entry<String, Object> entry: variables.entrySet()) {
+        	stream.writeUTF(entry.getKey());
+        	stream.writeObject(entry.getValue());
+        }
+        
         for (NodeInstance nodeInstance: processInstance.getNodeInstances()) {
             stream.writeInt( PersisterEnums.NODE_INSTANCE );
             writeNodeInstance( context, nodeInstance );




More information about the jboss-svn-commits mailing list