[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