[jboss-svn-commits] JBL Code SVN: r20151 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/reteoo and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat May 24 01:07:33 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-05-24 01:07:32 -0400 (Sat, 24 May 2008)
New Revision: 20151

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java
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
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/PersisterEnums.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTupleSink.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java
Log:
JBRULES-1598 Efficient WorkingMemory serialization with binary protocol
-now uses a case statement for the nodes.

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-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -37,6 +37,7 @@
 import org.drools.reteoo.JoinNode;
 import org.drools.reteoo.LeftTuple;
 import org.drools.reteoo.LeftTupleSink;
+import org.drools.reteoo.NodeTypeEnums;
 import org.drools.reteoo.NotNode;
 import org.drools.reteoo.ObjectTypeNode;
 import org.drools.reteoo.ReteooStatefulSession;
@@ -84,8 +85,10 @@
 
         long propagationCounter = context.readLong();
 
-        DefaultAgenda agenda = new DefaultAgenda( context.ruleBase, false );
-        readAgenda( context, agenda );
+        DefaultAgenda agenda = new DefaultAgenda( context.ruleBase,
+                                                  false );
+        readAgenda( context,
+                    agenda );
         ReteooStatefulSession session = new ReteooStatefulSession( id,
                                                                    context.ruleBase,
                                                                    executor,
@@ -93,7 +96,7 @@
                                                                    initialFactHandle,
                                                                    propagationCounter,
                                                                    agenda );
-        
+
         // RuleFlowGroups need to reference the session
         for ( RuleFlowGroup group : agenda.getRuleFlowGroupsMap().values() ) {
             ((RuleFlowGroupImpl) group).setWorkingMemory( session );
@@ -107,41 +110,47 @@
         if ( context.readBoolean() ) {
             readTruthMaintenanceSystem( context );
         }
-        
+
         readProcessInstances( context );
 
         readWorkItems( context );
 
         return session;
     }
-    
-    public static void readAgenda(MarshallerReaderContext context, DefaultAgenda agenda) throws IOException {
+
+    public static void readAgenda(MarshallerReaderContext context,
+                                  DefaultAgenda agenda) throws IOException {
         ObjectInputStream stream = context.stream;
-        while ( stream.readInt() == PersisterEnums.AGENDA_GROUP ) {
-            BinaryHeapQueueAgendaGroup group = new BinaryHeapQueueAgendaGroup( stream.readUTF(), context.ruleBase );
+        while ( stream.readShort() == PersisterEnums.AGENDA_GROUP ) {
+            BinaryHeapQueueAgendaGroup group = new BinaryHeapQueueAgendaGroup( stream.readUTF(),
+                                                                               context.ruleBase );
             group.setActive( stream.readBoolean() );
-            agenda.getAgendaGroupsMap().put( group.getName(), group );            
+            agenda.getAgendaGroupsMap().put( group.getName(),
+                                             group );
         }
-        
-        while ( stream.readInt() == PersisterEnums.AGENDA_GROUP ) {
+
+        while ( stream.readShort() == PersisterEnums.AGENDA_GROUP ) {
             String agendaGroupName = stream.readUTF();
             agenda.getStackList().add( agenda.getAgendaGroup( agendaGroupName ) );
         }
-        
-        while ( stream.readInt() == PersisterEnums.RULE_FLOW_GROUP ) {
+
+        while ( stream.readShort() == PersisterEnums.RULE_FLOW_GROUP ) {
             String rfgName = stream.readUTF();
             boolean active = stream.readBoolean();
             boolean autoDeactivate = stream.readBoolean();
-            RuleFlowGroup rfg = new RuleFlowGroupImpl( rfgName, active, autoDeactivate );
-            agenda.getRuleFlowGroupsMap().put(  rfgName, rfg );
-        }        
-                
+            RuleFlowGroup rfg = new RuleFlowGroupImpl( rfgName,
+                                                       active,
+                                                       autoDeactivate );
+            agenda.getRuleFlowGroupsMap().put( rfgName,
+                                               rfg );
+        }
+
     }
 
     public static void readActionQueue(MarshallerReaderContext context) throws IOException {
         ReteooWorkingMemory wm = (ReteooWorkingMemory) context.wm;
         Queue actionQueue = wm.getActionQueue();
-        while ( context.readInt() == PersisterEnums.WORKING_MEMORY_ACTION ) {
+        while ( context.readShort() == PersisterEnums.WORKING_MEMORY_ACTION ) {
             actionQueue.offer( PersisterHelper.readWorkingMemoryAction( context ) );
         }
     }
@@ -150,14 +159,14 @@
         ObjectInputStream stream = context.stream;
 
         TruthMaintenanceSystem tms = context.wm.getTruthMaintenanceSystem();
-        while ( stream.readInt() == PersisterEnums.EQUALITY_KEY ) {
+        while ( stream.readShort() == PersisterEnums.EQUALITY_KEY ) {
             int status = stream.readInt();
             int factHandleId = stream.readInt();
             InternalFactHandle handle = (InternalFactHandle) context.handles.get( factHandleId );
             EqualityKey key = new EqualityKey( handle,
                                                status );
             handle.setEqualityKey( key );
-            while ( stream.readInt() == PersisterEnums.FACT_HANDLE ) {
+            while ( stream.readShort() == PersisterEnums.FACT_HANDLE ) {
                 factHandleId = stream.readInt();
                 handle = (InternalFactHandle) context.handles.get( factHandleId );
                 key.addFactHandle( handle );
@@ -168,7 +177,7 @@
     }
 
     public static void readFactHandles(MarshallerReaderContext context) throws IOException,
-                                                                        ClassNotFoundException {
+                                                                       ClassNotFoundException {
         ObjectInputStream stream = context.stream;
         InternalRuleBase ruleBase = context.ruleBase;
         PlaceholderResolverStrategyFactory resolverStrategyFactory = context.resolverStrategyFactory;
@@ -192,7 +201,7 @@
         for ( int i = 0; i < size; i++ ) {
             int id = stream.readInt();
             long recency = stream.readLong();
-            
+
             int strategyIndex = stream.readInt();
             PlaceholderResolverStrategy strategy = resolverStrategyFactory.getStrategy( strategyIndex );
             ObjectPlaceholder placeHolder = strategy.read( stream );
@@ -227,7 +236,7 @@
         }
 
         InternalFactHandle handle = wm.getInitialFactHandle();
-        while ( stream.readInt() == PersisterEnums.LEFT_TUPLE ) {
+        while ( stream.readShort() == PersisterEnums.LEFT_TUPLE ) {
             LeftTupleSink sink = (LeftTupleSink) context.sinks.get( stream.readInt() );
             LeftTuple leftTuple = new LeftTuple( handle,
                                                  sink,
@@ -246,7 +255,7 @@
     public static void readRightTuples(InternalFactHandle factHandle,
                                        MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
-        while ( stream.readInt() == PersisterEnums.RIGHT_TUPLE ) {
+        while ( stream.readShort() == PersisterEnums.RIGHT_TUPLE ) {
             readRightTuple( context,
                             factHandle );
         }
@@ -272,7 +281,7 @@
     public static void readLeftTuples(MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
 
-        while ( stream.readInt() == PersisterEnums.LEFT_TUPLE ) {
+        while ( stream.readShort() == PersisterEnums.LEFT_TUPLE ) {
             LeftTupleSink sink = (LeftTupleSink) context.sinks.get( stream.readInt() );
             int factHandleId = stream.readInt();
             LeftTuple leftTuple = new LeftTuple( context.handles.get( factHandleId ),
@@ -292,74 +301,31 @@
 
         LeftTupleSink sink = parentLeftTuple.getLeftTupleSink();
 
-        if ( sink instanceof JoinNode ) {
-            BetaMemory memory = (BetaMemory) context.wm.getNodeMemory( (BetaNode) sink );
-            memory.getLeftTupleMemory().add( parentLeftTuple );
-
-            while ( stream.readInt() == PersisterEnums.RIGHT_TUPLE ) {
-                LeftTupleSink childSink = (LeftTupleSink) sinks.get( stream.readInt() );
-                int factHandleId = stream.readInt();
-                RightTupleKey key = new RightTupleKey( factHandleId,
-                                                       sink );
-                RightTuple rightTuple = context.rightTuples.get( key );
-                LeftTuple childLeftTuple = new LeftTuple( parentLeftTuple,
-                                                          rightTuple,
-                                                          childSink,
-                                                          true );
-                readLeftTuple( childLeftTuple,
-                               context );
-            }
-
-        } else if ( sink instanceof EvalConditionNode ) {
-            final EvalMemory memory = (EvalMemory) context.wm.getNodeMemory( (EvalConditionNode) sink );
-            memory.tupleMemory.add( parentLeftTuple );
-            while ( stream.readInt() == PersisterEnums.LEFT_TUPLE ) {
-                LeftTupleSink childSink = (LeftTupleSink) sinks.get( stream.readInt() );
-                LeftTuple childLeftTuple = new LeftTuple( parentLeftTuple,
-                                                          childSink,
-                                                          true );   
-                readLeftTuple( childLeftTuple,
-                               context );                
-            }                                  
-        } else if ( sink instanceof NotNode ) {
-            BetaMemory memory = (BetaMemory) context.wm.getNodeMemory( (BetaNode) sink );
-            int type = stream.readInt();
-            if ( type == PersisterEnums.LEFT_TUPLE_NOT_BLOCKED ) {
+        switch ( sink.getType() ) {
+            case NodeTypeEnums.JoinNode : {
+                BetaMemory memory = (BetaMemory) context.wm.getNodeMemory( (BetaNode) sink );
                 memory.getLeftTupleMemory().add( parentLeftTuple );
 
-                while ( stream.readInt() == PersisterEnums.LEFT_TUPLE ) {
+                while ( stream.readShort() == PersisterEnums.RIGHT_TUPLE ) {
                     LeftTupleSink childSink = (LeftTupleSink) sinks.get( stream.readInt() );
+                    int factHandleId = stream.readInt();
+                    RightTupleKey key = new RightTupleKey( factHandleId,
+                                                           sink );
+                    RightTuple rightTuple = context.rightTuples.get( key );
                     LeftTuple childLeftTuple = new LeftTuple( parentLeftTuple,
+                                                              rightTuple,
                                                               childSink,
                                                               true );
                     readLeftTuple( childLeftTuple,
                                    context );
                 }
+                break;
 
-            } else {
-                int factHandleId = stream.readInt();
-                RightTupleKey key = new RightTupleKey( factHandleId,
-                                                       sink );
-                RightTuple rightTuple = context.rightTuples.get( key );
-
-                parentLeftTuple.setBlocker( rightTuple );
-                rightTuple.setBlocked( parentLeftTuple );
             }
-        } else if ( sink instanceof ExistsNode ) {
-            BetaMemory memory = (BetaMemory) context.wm.getNodeMemory( (BetaNode) sink );
-            int type = stream.readInt();
-            if ( type == PersisterEnums.LEFT_TUPLE_NOT_BLOCKED ) {
-                memory.getLeftTupleMemory().add( parentLeftTuple );
-            } else {                
-                int factHandleId = stream.readInt();
-                RightTupleKey key = new RightTupleKey( factHandleId,
-                                                       sink );
-                RightTuple rightTuple = context.rightTuples.get( key );
-
-                parentLeftTuple.setBlocker( rightTuple );
-                rightTuple.setBlocked( parentLeftTuple );                    
-
-                while ( stream.readInt() == PersisterEnums.LEFT_TUPLE ) {
+            case NodeTypeEnums.EvalConditionNode : {
+                final EvalMemory memory = (EvalMemory) context.wm.getNodeMemory( (EvalConditionNode) sink );
+                memory.tupleMemory.add( parentLeftTuple );
+                while ( stream.readShort() == PersisterEnums.LEFT_TUPLE ) {
                     LeftTupleSink childSink = (LeftTupleSink) sinks.get( stream.readInt() );
                     LeftTuple childLeftTuple = new LeftTuple( parentLeftTuple,
                                                               childSink,
@@ -367,22 +333,76 @@
                     readLeftTuple( childLeftTuple,
                                    context );
                 }
+                break;
             }
-        } else if ( sink instanceof RuleTerminalNode ) {
-            RuleTerminalNode ruleTerminalNode = (RuleTerminalNode) sink;
-            TerminalNodeMemory memory = (TerminalNodeMemory) wm.getNodeMemory( ruleTerminalNode );
-            memory.getTupleMemory().add( parentLeftTuple );
+            case NodeTypeEnums.NotNode : {
+                BetaMemory memory = (BetaMemory) context.wm.getNodeMemory( (BetaNode) sink );
+                int type = stream.readShort();
+                if ( type == PersisterEnums.LEFT_TUPLE_NOT_BLOCKED ) {
+                    memory.getLeftTupleMemory().add( parentLeftTuple );
 
-            int pos = context.terminalTupleMap.size();
-            context.terminalTupleMap.put( pos,
-                                          parentLeftTuple );
+                    while ( stream.readShort() == PersisterEnums.LEFT_TUPLE ) {
+                        LeftTupleSink childSink = (LeftTupleSink) sinks.get( stream.readInt() );
+                        LeftTuple childLeftTuple = new LeftTuple( parentLeftTuple,
+                                                                  childSink,
+                                                                  true );
+                        readLeftTuple( childLeftTuple,
+                                       context );
+                    }
+
+                } else {
+                    int factHandleId = stream.readInt();
+                    RightTupleKey key = new RightTupleKey( factHandleId,
+                                                           sink );
+                    RightTuple rightTuple = context.rightTuples.get( key );
+
+                    parentLeftTuple.setBlocker( rightTuple );
+                    rightTuple.setBlocked( parentLeftTuple );
+                }
+                break;
+            }
+            case NodeTypeEnums.ExistsNode : {
+                BetaMemory memory = (BetaMemory) context.wm.getNodeMemory( (BetaNode) sink );
+                int type = stream.readShort();
+                if ( type == PersisterEnums.LEFT_TUPLE_NOT_BLOCKED ) {
+                    memory.getLeftTupleMemory().add( parentLeftTuple );
+                } else {
+                    int factHandleId = stream.readInt();
+                    RightTupleKey key = new RightTupleKey( factHandleId,
+                                                           sink );
+                    RightTuple rightTuple = context.rightTuples.get( key );
+
+                    parentLeftTuple.setBlocker( rightTuple );
+                    rightTuple.setBlocked( parentLeftTuple );
+
+                    while ( stream.readShort() == PersisterEnums.LEFT_TUPLE ) {
+                        LeftTupleSink childSink = (LeftTupleSink) sinks.get( stream.readInt() );
+                        LeftTuple childLeftTuple = new LeftTuple( parentLeftTuple,
+                                                                  childSink,
+                                                                  true );
+                        readLeftTuple( childLeftTuple,
+                                       context );
+                    }
+                }
+                break;
+            }
+            case NodeTypeEnums.RuleTerminalNode : {
+                RuleTerminalNode ruleTerminalNode = (RuleTerminalNode) sink;
+                TerminalNodeMemory memory = (TerminalNodeMemory) wm.getNodeMemory( ruleTerminalNode );
+                memory.getTupleMemory().add( parentLeftTuple );
+
+                int pos = context.terminalTupleMap.size();
+                context.terminalTupleMap.put( pos,
+                                              parentLeftTuple );
+                break;
+            }
         }
     }
 
     public static void readActivations(MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
 
-        while ( stream.readInt() == PersisterEnums.ACTIVATION ) {
+        while ( stream.readShort() == PersisterEnums.ACTIVATION ) {
             readActivation( context );
         }
     }
@@ -437,9 +457,9 @@
             // from the Agenda
             agendaGroup = (InternalAgendaGroup) wm.getAgenda().getAgendaGroup( rule.getAgendaGroup() );
         }
-        
+
         activation.setAgendaGroup( agendaGroup );
-        
+
         if ( activated ) {
             if ( rule.getRuleFlowGroup() == null ) {
                 agendaGroup.add( activation );
@@ -450,7 +470,7 @@
         }
 
         TruthMaintenanceSystem tms = context.wm.getTruthMaintenanceSystem();
-        while ( stream.readInt() == PersisterEnums.LOGICAL_DEPENDENCY ) {
+        while ( stream.readShort() == PersisterEnums.LOGICAL_DEPENDENCY ) {
             int factHandleId = stream.readInt();
             InternalFactHandle handle = (InternalFactHandle) context.handles.get( factHandleId );
             tms.addLogicalDependency( handle,
@@ -465,7 +485,7 @@
     public static void readPropagationContexts(MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
 
-        while ( stream.readInt() == PersisterEnums.PROPAGATION_CONTEXT ) {
+        while ( stream.readShort() == PersisterEnums.PROPAGATION_CONTEXT ) {
             readPropagationContext( context );
         }
 
@@ -522,7 +542,7 @@
 
     public static void readProcessInstances(MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
-        while ( stream.readInt() == PersisterEnums.PROCESS_INSTANCE ) {
+        while ( stream.readShort() == PersisterEnums.PROCESS_INSTANCE ) {
             readProcessInstance( context );
         }
     }
@@ -531,89 +551,87 @@
         ObjectInputStream stream = context.stream;
         InternalRuleBase ruleBase = context.ruleBase;
         InternalWorkingMemory wm = context.wm;
-        
+
         RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
-        processInstance.setId(stream.readLong());
-        processInstance.setProcess(ruleBase.getProcess(stream.readUTF()));
-        processInstance.setState(stream.readInt());
+        processInstance.setId( stream.readLong() );
+        processInstance.setProcess( ruleBase.getProcess( stream.readUTF() ) );
+        processInstance.setState( stream.readInt() );
         long nodeInstanceCounter = stream.readLong();
-        processInstance.setWorkingMemory(wm);
-        
+        processInstance.setWorkingMemory( wm );
+
         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);
-	        	}
-	        }
+        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 );
+
+        while ( stream.readShort() == PersisterEnums.NODE_INSTANCE ) {
+            readNodeInstance( context,
+                              processInstance );
         }
-        
-        processInstance.internalSetNodeInstanceCounter(nodeInstanceCounter);
-        wm.addProcessInstance(processInstance);
+
+        processInstance.internalSetNodeInstanceCounter( nodeInstanceCounter );
+        wm.addProcessInstance( processInstance );
         return processInstance;
     }
-    
+
     public static NodeInstance readNodeInstance(MarshallerReaderContext context,
                                                 RuleFlowProcessInstance processInstance) throws IOException {
         ObjectInputStream stream = context.stream;
         NodeInstanceImpl nodeInstance = null;
         long id = stream.readLong();
         long nodeId = stream.readLong();
-        int nodeType = stream.readInt();
-        switch (nodeType) {
-            case PersisterEnums.RULE_SET_NODE_INSTANCE:
+        int nodeType = stream.readShort();
+        switch ( nodeType ) {
+            case PersisterEnums.RULE_SET_NODE_INSTANCE :
                 nodeInstance = new RuleSetNodeInstance();
                 break;
-            case PersisterEnums.WORK_ITEM_NODE_INSTANCE:
+            case PersisterEnums.WORK_ITEM_NODE_INSTANCE :
                 nodeInstance = new WorkItemNodeInstance();
-                ((WorkItemNodeInstance) nodeInstance)
-                    .internalSetWorkItemId(stream.readLong());
+                ((WorkItemNodeInstance) nodeInstance).internalSetWorkItemId( stream.readLong() );
                 break;
-            case PersisterEnums.SUB_PROCESS_NODE_INSTANCE:
+            case PersisterEnums.SUB_PROCESS_NODE_INSTANCE :
                 nodeInstance = new SubProcessNodeInstance();
-                ((SubProcessNodeInstance) nodeInstance)
-                    .internalSetProcessInstanceId(stream.readLong());
+                ((SubProcessNodeInstance) nodeInstance).internalSetProcessInstanceId( stream.readLong() );
                 break;
-            case PersisterEnums.MILESTONE_NODE_INSTANCE:
+            case PersisterEnums.MILESTONE_NODE_INSTANCE :
                 nodeInstance = new MilestoneNodeInstance();
                 break;
-            case PersisterEnums.TIMER_NODE_INSTANCE:
+            case PersisterEnums.TIMER_NODE_INSTANCE :
                 nodeInstance = new TimerNodeInstance();
-                ((TimerNodeInstance) nodeInstance)
-                    .internalSetTimerId(stream.readLong());
+                ((TimerNodeInstance) nodeInstance).internalSetTimerId( stream.readLong() );
                 break;
-            case PersisterEnums.JOIN_NODE_INSTANCE:
+            case PersisterEnums.JOIN_NODE_INSTANCE :
                 nodeInstance = new JoinInstance();
                 int number = stream.readInt();
-                if (number > 0) {
+                if ( number > 0 ) {
                     Map<Long, Integer> triggers = new HashMap<Long, Integer>();
-                    for (int i = 0; i < number; i++) {
+                    for ( int i = 0; i < number; i++ ) {
                         long l = stream.readLong();
                         int count = stream.readInt();
-                        triggers.put(l, count);
+                        triggers.put( l,
+                                      count );
                     }
-                    ((JoinInstance) nodeInstance).internalSetTriggers(triggers);
+                    ((JoinInstance) nodeInstance).internalSetTriggers( triggers );
                 }
                 break;
-            default:
-                throw new IllegalArgumentException(
-                    "Unknown node type: " + nodeType);
+            default :
+                throw new IllegalArgumentException( "Unknown node type: " + nodeType );
         }
-        nodeInstance.setNodeId(nodeId);
-        nodeInstance.setNodeInstanceContainer(processInstance);
-        nodeInstance.setProcessInstance(processInstance);
-        nodeInstance.setId(id);
-        if (nodeInstance instanceof EventNodeInstance) {
+        nodeInstance.setNodeId( nodeId );
+        nodeInstance.setNodeInstanceContainer( processInstance );
+        nodeInstance.setProcessInstance( processInstance );
+        nodeInstance.setId( id );
+        if ( nodeInstance instanceof EventNodeInstance ) {
             ((EventNodeInstance) nodeInstance).addEventListeners();
         }
         return nodeInstance;
@@ -621,7 +639,7 @@
 
     public static void readWorkItems(MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
-        while ( stream.readInt() == PersisterEnums.WORK_ITEM ) {
+        while ( stream.readShort() == PersisterEnums.WORK_ITEM ) {
             readWorkItem( context );
         }
     }
@@ -629,15 +647,15 @@
     public static WorkItem readWorkItem(MarshallerReaderContext context) throws IOException {
         ObjectInputStream stream = context.stream;
         InternalWorkingMemory wm = context.wm;
-        
+
         WorkItemImpl workItem = new WorkItemImpl();
-        workItem.setId(stream.readLong());
-        workItem.setProcessInstanceId(stream.readLong());
-        workItem.setName(stream.readUTF());
-        workItem.setState(stream.readInt());
-        
-        wm.getWorkItemManager().internalAddWorkItem(workItem);
+        workItem.setId( stream.readLong() );
+        workItem.setProcessInstanceId( stream.readLong() );
+        workItem.setName( stream.readUTF() );
+        workItem.setState( stream.readInt() );
+
+        wm.getWorkItemManager().internalAddWorkItem( workItem );
         return workItem;
     }
-    
+
 }

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-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -34,6 +34,7 @@
 import org.drools.reteoo.JoinNode;
 import org.drools.reteoo.LeftTuple;
 import org.drools.reteoo.LeftTupleSink;
+import org.drools.reteoo.NodeTypeEnums;
 import org.drools.reteoo.NotNode;
 import org.drools.reteoo.ObjectTypeNode;
 import org.drools.reteoo.ReteooWorkingMemory;
@@ -84,9 +85,9 @@
         } else {
             context.writeBoolean( false );
         }
-        
+
         writeProcessInstances( context );
-        
+
         writeWorkItems( context );
     }
 
@@ -101,32 +102,32 @@
                      AgendaGroupSorter.instance );
 
         for ( AgendaGroup group : agendaGroups ) {
-            context.writeInt( PersisterEnums.AGENDA_GROUP );
+            context.writeShort( PersisterEnums.AGENDA_GROUP );
             context.writeUTF( group.getName() );
             context.writeBoolean( group.isActive() );
         }
-        context.writeInt( PersisterEnums.END );
+        context.writeShort( PersisterEnums.END );
 
         LinkedList<AgendaGroup> focusStack = agenda.getStackList();
         for ( Iterator<AgendaGroup> it = focusStack.iterator(); it.hasNext(); ) {
             AgendaGroup group = it.next();
-            context.writeInt( PersisterEnums.AGENDA_GROUP );
+            context.writeShort( PersisterEnums.AGENDA_GROUP );
             context.writeUTF( group.getName() );
         }
-        context.writeInt( PersisterEnums.END );
+        context.writeShort( PersisterEnums.END );
 
         RuleFlowGroupImpl[] ruleFlowGroups = (RuleFlowGroupImpl[]) agenda.getRuleFlowGroupsMap().values().toArray( new RuleFlowGroupImpl[agenda.getRuleFlowGroupsMap().size()] );
         Arrays.sort( ruleFlowGroups,
                      RuleFlowGroupSorter.instance );
 
         for ( RuleFlowGroupImpl group : ruleFlowGroups ) {
-            context.writeInt( PersisterEnums.RULE_FLOW_GROUP );
+            context.writeShort( PersisterEnums.RULE_FLOW_GROUP );
             //group.write( context );
             context.writeUTF( group.getName() );
             context.writeBoolean( group.isActive() );
             context.writeBoolean( group.isAutoDeactivate() );
         }
-        context.writeInt( PersisterEnums.END );
+        context.writeShort( PersisterEnums.END );
     }
 
     public static class AgendaGroupSorter
@@ -156,10 +157,10 @@
 
         WorkingMemoryAction[] queue = wm.getActionQueue().toArray( new WorkingMemoryAction[wm.getActionQueue().size()] );
         for ( int i = queue.length - 1; i >= 0; i-- ) {
-            context.writeInt( PersisterEnums.WORKING_MEMORY_ACTION );
+            context.writeShort( PersisterEnums.WORKING_MEMORY_ACTION );
             queue[i].write( context );
         }
-        context.writeInt( PersisterEnums.END );
+        context.writeShort( PersisterEnums.END );
     }
 
     public static void writeTruthMaintenanceSystem(MarshallerWriteContext context) throws IOException {
@@ -180,21 +181,21 @@
 
         // write the assert map of Equality keys
         for ( EqualityKey key : keys ) {
-            stream.writeInt( PersisterEnums.EQUALITY_KEY );
+            stream.writeShort( PersisterEnums.EQUALITY_KEY );
             stream.writeInt( key.getStatus() );
             InternalFactHandle handle = key.getFactHandle();
             stream.writeInt( handle.getId() );
             context.out.println( "EqualityKey int:" + key.getStatus() + " int:" + handle.getId() );
             if ( key.getOtherFactHandle() != null && !key.getOtherFactHandle().isEmpty() ) {
                 for ( InternalFactHandle handle2 : key.getOtherFactHandle() ) {
-                    stream.writeInt( PersisterEnums.FACT_HANDLE );
+                    stream.writeShort( PersisterEnums.FACT_HANDLE );
                     stream.writeInt( handle2.getId() );
                     context.out.println( "OtherHandle int:" + handle2.getId() );
                 }
             }
-            stream.writeInt( PersisterEnums.END );
+            stream.writeShort( PersisterEnums.END );
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
 
     public static class EqualityKeySorter
@@ -219,7 +220,7 @@
 
         // Write out FactHandles
         for ( InternalFactHandle handle : orderFacts( wm.getObjectStore() ) ) {
-            //stream.writeInt( PersisterEnums.FACT_HANDLE );
+            //stream.writeShort( PersisterEnums.FACT_HANDLE );
             //InternalFactHandle handle = (InternalFactHandle) it.next();
             stream.writeInt( handle.getId() );
             stream.writeLong( handle.getRecency() );
@@ -231,11 +232,11 @@
             if ( object instanceof ShadowProxy ) {
                 object = ((ShadowProxy) object).getShadowedObject();
             }
-            
+
             PlaceholderResolverStrategy strategy = resolverStrategyFactory.getStrategy( handle.getObject() );
-            
+
             stream.writeInt( strategy.getIndex() );
-            
+
             strategy.write( stream,
                             object );
 
@@ -309,14 +310,15 @@
         context.out.println( "InitialFact LeftTuples Start" );
         InternalFactHandle handle = context.wm.getInitialFactHandle();
         for ( LeftTuple leftTuple = getLeftTuple( handle.getLeftTuple() ); leftTuple != null; leftTuple = (LeftTuple) leftTuple.getLeftParentPrevious() ) {
-            stream.writeInt( PersisterEnums.LEFT_TUPLE );
+            stream.writeShort( PersisterEnums.LEFT_TUPLE );
 
             stream.writeInt( leftTuple.getLeftTupleSink().getId() );
             context.out.println( "LeftTuple int:" + leftTuple.getLeftTupleSink().getId() );
             writeLeftTuple( leftTuple,
-                            context );
+                            context,
+                            true );
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
         context.out.println( "InitialFact LeftTuples End" );
     }
 
@@ -330,11 +332,11 @@
             rightTuple = tempRightTuple;
         }
         for ( ; rightTuple != null; rightTuple = (RightTuple) rightTuple.getHandlePrevious() ) {
-            stream.writeInt( PersisterEnums.RIGHT_TUPLE );
+            stream.writeShort( PersisterEnums.RIGHT_TUPLE );
             writeRightTuple( rightTuple,
                              context );
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
         context.out.println( "RightTuples END" );
     }
 
@@ -346,6 +348,11 @@
         context.out.println( "RightTuple int:" + rightTuple.getRightTupleSink().getId() );
     }
 
+    public void xxx(RightTuple rightTuple,
+                    MarshallerWriteContext context) {
+
+    }
+
     public static void writeLeftTuples(MarshallerWriteContext context) throws IOException {
         ObjectOutputStream stream = context.stream;
         InternalWorkingMemory wm = context.wm;
@@ -356,87 +363,103 @@
             //InternalFactHandle handle = (InternalFactHandle) it.next();
 
             for ( LeftTuple leftTuple = getLeftTuple( handle.getLeftTuple() ); leftTuple != null; leftTuple = (LeftTuple) leftTuple.getLeftParentPrevious() ) {
-                stream.writeInt( PersisterEnums.LEFT_TUPLE );
+                stream.writeShort( PersisterEnums.LEFT_TUPLE );
 
                 stream.writeInt( leftTuple.getLeftTupleSink().getId() );
                 stream.writeInt( handle.getId() );
 
                 context.out.println( "LeftTuple int:" + leftTuple.getLeftTupleSink().getId() + " int:" + handle.getId() );
                 writeLeftTuple( leftTuple,
-                                context );
+                                context,
+                                true );
             }
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
         context.out.println( "LeftTuples End" );
     }
 
     public static void writeLeftTuple(LeftTuple leftTuple,
-                                      MarshallerWriteContext context) throws IOException {
+                                      MarshallerWriteContext context,
+                                      boolean recurse) throws IOException {
         ObjectOutputStream stream = context.stream;
         InternalRuleBase ruleBase = context.ruleBase;
         InternalWorkingMemory wm = context.wm;
 
         LeftTupleSink sink = leftTuple.getLeftTupleSink();
 
-        if ( sink instanceof JoinNode ) {
-            context.out.println( "JoinNode" );
-
-            for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) childLeftTuple.getLeftParentPrevious() ) {
-                stream.writeInt( PersisterEnums.RIGHT_TUPLE );
-                stream.writeInt( childLeftTuple.getLeftTupleSink().getId() );
-                stream.writeInt( childLeftTuple.getRightParent().getFactHandle().getId() );
-                context.out.println( "RightTuple int:" + childLeftTuple.getLeftTupleSink().getId() + " int:" + childLeftTuple.getRightParent().getFactHandle().getId() );
-                writeLeftTuple( childLeftTuple,
-                                context );
-            }
-            stream.writeInt( PersisterEnums.END );
-        } else if ( sink instanceof EvalConditionNode ) {
-            context.out.println( "EvalConditionNode" );
-            for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) childLeftTuple.getLeftParentPrevious() ) {
-                stream.writeInt( PersisterEnums.LEFT_TUPLE );
-                stream.writeInt( childLeftTuple.getLeftTupleSink().getId() );
-                writeLeftTuple( childLeftTuple,
-                                context );
-            }
-            stream.writeInt( PersisterEnums.END );
-        } else if ( sink instanceof NotNode ) {
-            if ( leftTuple.getBlocker() == null ) {
-                // is not blocked so has children
-                stream.writeInt( PersisterEnums.LEFT_TUPLE_NOT_BLOCKED );
-
-                for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) leftTuple.getLeftParentPrevious() ) {
-                    stream.writeInt( PersisterEnums.LEFT_TUPLE );
+        switch ( sink.getType() ) {
+            case NodeTypeEnums.JoinNode : {
+                context.out.println( "JoinNode" );
+                for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) childLeftTuple.getLeftParentPrevious() ) {
+                    stream.writeShort( PersisterEnums.RIGHT_TUPLE );
                     stream.writeInt( childLeftTuple.getLeftTupleSink().getId() );
+                    stream.writeInt( childLeftTuple.getRightParent().getFactHandle().getId() );
+                    context.out.println( "RightTuple int:" + childLeftTuple.getLeftTupleSink().getId() + " int:" + childLeftTuple.getRightParent().getFactHandle().getId() );
                     writeLeftTuple( childLeftTuple,
-                                    context );
+                                    context,
+                                    recurse );
                 }
-                stream.writeInt( PersisterEnums.END );
-
-            } else {
-                stream.writeInt( PersisterEnums.LEFT_TUPLE_BLOCKED );
-                stream.writeInt( leftTuple.getBlocker().getFactHandle().getId() );
+                stream.writeShort( PersisterEnums.END );
+                break;
             }
-        } else if ( sink instanceof ExistsNode ) {
-            if ( leftTuple.getBlocker() == null ) {
-                // is blocked so has children
-                stream.writeInt( PersisterEnums.LEFT_TUPLE_NOT_BLOCKED );
-            } else {
-                stream.writeInt( PersisterEnums.LEFT_TUPLE_BLOCKED );
-                stream.writeInt( leftTuple.getBlocker().getFactHandle().getId() );
-                
-                for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) leftTuple.getLeftParentPrevious() ) {
-                    stream.writeInt( PersisterEnums.LEFT_TUPLE );
+            case NodeTypeEnums.EvalConditionNode : {
+                context.out.println( "EvalConditionNode" );
+                for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) childLeftTuple.getLeftParentPrevious() ) {
+                    stream.writeShort( PersisterEnums.LEFT_TUPLE );
                     stream.writeInt( childLeftTuple.getLeftTupleSink().getId() );
                     writeLeftTuple( childLeftTuple,
-                                    context );
+                                    context,
+                                    recurse );
                 }
-                stream.writeInt( PersisterEnums.END );
+                stream.writeShort( PersisterEnums.END );
+                break;
             }
-        } else if ( sink instanceof RuleTerminalNode ) {
-            context.out.println( "RuleTerminalNode" );
-            int pos = context.terminalTupleMap.size();
-            context.terminalTupleMap.put( leftTuple,
-                                          pos );
+            case NodeTypeEnums.NotNode : {
+                if ( leftTuple.getBlocker() == null ) {
+                    // is not blocked so has children
+                    stream.writeShort( PersisterEnums.LEFT_TUPLE_NOT_BLOCKED );
+
+                    for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) leftTuple.getLeftParentPrevious() ) {
+                        stream.writeShort( PersisterEnums.LEFT_TUPLE );
+                        stream.writeInt( childLeftTuple.getLeftTupleSink().getId() );
+                        writeLeftTuple( childLeftTuple,
+                                        context,
+                                        recurse );
+                    }
+                    stream.writeShort( PersisterEnums.END );
+
+                } else {
+                    stream.writeShort( PersisterEnums.LEFT_TUPLE_BLOCKED );
+                    stream.writeInt( leftTuple.getBlocker().getFactHandle().getId() );
+                }
+                break;
+            }
+            case NodeTypeEnums.ExistsNode : {
+                if ( leftTuple.getBlocker() == null ) {
+                    // is blocked so has children
+                    stream.writeShort( PersisterEnums.LEFT_TUPLE_NOT_BLOCKED );
+                } else {
+                    stream.writeShort( PersisterEnums.LEFT_TUPLE_BLOCKED );
+                    stream.writeInt( leftTuple.getBlocker().getFactHandle().getId() );
+
+                    for ( LeftTuple childLeftTuple = getLeftTuple( leftTuple.getBetaChildren() ); childLeftTuple != null; childLeftTuple = (LeftTuple) leftTuple.getLeftParentPrevious() ) {
+                        stream.writeShort( PersisterEnums.LEFT_TUPLE );
+                        stream.writeInt( childLeftTuple.getLeftTupleSink().getId() );
+                        writeLeftTuple( childLeftTuple,
+                                        context,
+                                        recurse );
+                    }
+                    stream.writeShort( PersisterEnums.END );
+                }
+                break;
+            }
+            case NodeTypeEnums.RuleTerminalNode : {
+                context.out.println( "RuleTerminalNode" );
+                int pos = context.terminalTupleMap.size();
+                context.terminalTupleMap.put( leftTuple,
+                                              pos );
+                break;
+            }
         }
     }
 
@@ -449,28 +472,30 @@
 
     public static void writeActivations(MarshallerWriteContext context) throws IOException {
         ObjectOutputStream stream = context.stream;
-        
-        Entry<LeftTuple, Integer>[] entries = context.terminalTupleMap.entrySet().toArray( new Entry[ context.terminalTupleMap.size() ] );
-        Arrays.sort( entries, TupleSorter.instance );
-        
+
+        Entry<LeftTuple, Integer>[] entries = context.terminalTupleMap.entrySet().toArray( new Entry[context.terminalTupleMap.size()] );
+        Arrays.sort( entries,
+                     TupleSorter.instance );
+
         //Map<LeftTuple, Integer> tuples = context.terminalTupleMap;
         if ( entries.length != 0 ) {
             for ( Entry<LeftTuple, Integer> entry : entries ) {
                 LeftTuple leftTuple = entry.getKey();
-                stream.writeInt( PersisterEnums.ACTIVATION );
+                stream.writeShort( PersisterEnums.ACTIVATION );
                 writeActivation( context,
                                  leftTuple,
                                  (AgendaItem) leftTuple.getActivation(),
                                  (RuleTerminalNode) leftTuple.getLeftTupleSink() );
             }
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
 
     public static class TupleSorter
         implements
         Comparator<Entry<LeftTuple, Integer>> {
         public static final TupleSorter instance = new TupleSorter();
+
         public int compare(Entry<LeftTuple, Integer> e1,
                            Entry<LeftTuple, Integer> e2) {
             return e1.getValue() - e2.getValue();
@@ -514,28 +539,29 @@
         org.drools.util.LinkedList list = agendaItem.getLogicalDependencies();
         if ( list != null && !list.isEmpty() ) {
             for ( LogicalDependency node = (LogicalDependency) list.getFirst(); node != null; node = (LogicalDependency) node.getNext() ) {
-                stream.writeInt( PersisterEnums.LOGICAL_DEPENDENCY );
+                stream.writeShort( PersisterEnums.LOGICAL_DEPENDENCY );
                 stream.writeInt( ((InternalFactHandle) node.getFactHandle()).getId() );
                 context.out.println( "Logical Depenency : int " + ((InternalFactHandle) node.getFactHandle()).getId() );
             }
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
 
     public static void writePropagationContexts(MarshallerWriteContext context) throws IOException {
         ObjectOutputStream stream = context.stream;
 
-        Entry<LeftTuple, Integer>[] entries = context.terminalTupleMap.entrySet().toArray( new Entry[ context.terminalTupleMap.size() ] );
-        Arrays.sort( entries, TupleSorter.instance );
-        
+        Entry<LeftTuple, Integer>[] entries = context.terminalTupleMap.entrySet().toArray( new Entry[context.terminalTupleMap.size()] );
+        Arrays.sort( entries,
+                     TupleSorter.instance );
+
         //Map<LeftTuple, Integer> tuples = context.terminalTupleMap;
         if ( entries.length != 0 ) {
             Map<Long, PropagationContext> pcMap = new HashMap<Long, PropagationContext>();
-            for ( Entry<LeftTuple, Integer> entry : entries ) {    
+            for ( Entry<LeftTuple, Integer> entry : entries ) {
                 LeftTuple leftTuple = entry.getKey();
                 PropagationContext pc = leftTuple.getActivation().getPropagationContext();
                 if ( !pcMap.containsKey( pc.getPropagationNumber() ) ) {
-                    stream.writeInt( PersisterEnums.PROPAGATION_CONTEXT );
+                    stream.writeShort( PersisterEnums.PROPAGATION_CONTEXT );
                     writePropagationContext( context,
                                              pc );
                     pcMap.put( pc.getPropagationNumber(),
@@ -544,7 +570,7 @@
             }
         }
 
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
 
     public static void writePropagationContext(MarshallerWriteContext context,
@@ -588,66 +614,66 @@
         ObjectOutputStream stream = context.stream;
 
         Collection<ProcessInstance> processInstances = context.wm.getProcessInstances();
-        for (ProcessInstance processInstance: processInstances) {
-            stream.writeInt( PersisterEnums.PROCESS_INSTANCE );
-            writeProcessInstance( context, (RuleFlowProcessInstance) processInstance );
+        for ( ProcessInstance processInstance : processInstances ) {
+            stream.writeShort( PersisterEnums.PROCESS_INSTANCE );
+            writeProcessInstance( context,
+                                  (RuleFlowProcessInstance) processInstance );
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
-    
+
     public static void writeProcessInstance(MarshallerWriteContext context,
                                             RuleFlowProcessInstance processInstance) throws IOException {
         ObjectOutputStream stream = context.stream;
-        stream.writeLong(processInstance.getId());
-        stream.writeUTF(processInstance.getProcessId());
-        stream.writeInt(processInstance.getState());
-        stream.writeLong(processInstance.getNodeInstanceCounter());
-        
-        VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
-        	processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
+        stream.writeLong( processInstance.getId() );
+        stream.writeUTF( processInstance.getProcessId() );
+        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());
+        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 );
+
+        for ( NodeInstance nodeInstance : processInstance.getNodeInstances() ) {
+            stream.writeShort( PersisterEnums.NODE_INSTANCE );
+            writeNodeInstance( context,
+                               nodeInstance );
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
-    
+
     public static void writeNodeInstance(MarshallerWriteContext context,
                                          NodeInstance nodeInstance) throws IOException {
         ObjectOutputStream stream = context.stream;
-        stream.writeLong(nodeInstance.getId());
-        stream.writeLong(nodeInstance.getNodeId());
-        if (nodeInstance instanceof RuleSetNodeInstance) {
-            stream.writeInt(PersisterEnums.RULE_SET_NODE_INSTANCE);
-        } else if (nodeInstance instanceof WorkItemNodeInstance) {
-            stream.writeInt(PersisterEnums.WORK_ITEM_NODE_INSTANCE);
-            stream.writeLong(((WorkItemNodeInstance) nodeInstance).getWorkItem().getId());
-        } else if (nodeInstance instanceof SubProcessNodeInstance) {
-            stream.writeInt(PersisterEnums.SUB_PROCESS_NODE_INSTANCE);
-            stream.writeLong(((SubProcessNodeInstance) nodeInstance).getProcessInstanceId());
-        } else if (nodeInstance instanceof MilestoneNodeInstance) {
-            stream.writeInt(PersisterEnums.MILESTONE_NODE_INSTANCE);
-        } else if (nodeInstance instanceof TimerNodeInstance) {
-            stream.writeInt(PersisterEnums.TIMER_NODE_INSTANCE);
-            stream.writeLong(((TimerNodeInstance) nodeInstance).getTimerId());
-        } else if (nodeInstance instanceof JoinInstance) {
-            stream.writeInt(PersisterEnums.JOIN_NODE_INSTANCE);
+        stream.writeLong( nodeInstance.getId() );
+        stream.writeLong( nodeInstance.getNodeId() );
+        if ( nodeInstance instanceof RuleSetNodeInstance ) {
+            stream.writeShort( PersisterEnums.RULE_SET_NODE_INSTANCE );
+        } else if ( nodeInstance instanceof WorkItemNodeInstance ) {
+            stream.writeShort( PersisterEnums.WORK_ITEM_NODE_INSTANCE );
+            stream.writeLong( ((WorkItemNodeInstance) nodeInstance).getWorkItem().getId() );
+        } else if ( nodeInstance instanceof SubProcessNodeInstance ) {
+            stream.writeShort( PersisterEnums.SUB_PROCESS_NODE_INSTANCE );
+            stream.writeLong( ((SubProcessNodeInstance) nodeInstance).getProcessInstanceId() );
+        } else if ( nodeInstance instanceof MilestoneNodeInstance ) {
+            stream.writeShort( PersisterEnums.MILESTONE_NODE_INSTANCE );
+        } else if ( nodeInstance instanceof TimerNodeInstance ) {
+            stream.writeShort( PersisterEnums.TIMER_NODE_INSTANCE );
+            stream.writeLong( ((TimerNodeInstance) nodeInstance).getTimerId() );
+        } else if ( nodeInstance instanceof JoinInstance ) {
+            stream.writeShort( PersisterEnums.JOIN_NODE_INSTANCE );
             Map<Long, Integer> triggers = ((JoinInstance) nodeInstance).getTriggers();
-            stream.writeInt(triggers.size());
-            for (Map.Entry<Long, Integer> entry: triggers.entrySet()) {
-                stream.writeLong(entry.getKey());
-                stream.writeInt(entry.getValue());
+            stream.writeInt( triggers.size() );
+            for ( Map.Entry<Long, Integer> entry : triggers.entrySet() ) {
+                stream.writeLong( entry.getKey() );
+                stream.writeInt( entry.getValue() );
             }
         } else {
-            throw new IllegalArgumentException(
-                "Unknown node instance type: " + nodeInstance);
+            throw new IllegalArgumentException( "Unknown node instance type: " + nodeInstance );
         }
     }
 
@@ -655,20 +681,21 @@
         ObjectOutputStream stream = context.stream;
 
         Set<WorkItem> workItems = context.wm.getWorkItemManager().getWorkItems();
-        for (WorkItem workItem: workItems) {
-            stream.writeInt( PersisterEnums.WORK_ITEM );
-            writeWorkItem( context, workItem );
+        for ( WorkItem workItem : workItems ) {
+            stream.writeShort( PersisterEnums.WORK_ITEM );
+            writeWorkItem( context,
+                           workItem );
         }
-        stream.writeInt( PersisterEnums.END );
+        stream.writeShort( PersisterEnums.END );
     }
-    
+
     public static void writeWorkItem(MarshallerWriteContext context,
                                      WorkItem workItem) throws IOException {
         ObjectOutputStream stream = context.stream;
-        stream.writeLong(workItem.getId());
-        stream.writeLong(workItem.getProcessInstanceId());
-        stream.writeUTF(workItem.getName());
-        stream.writeInt(workItem.getState());
+        stream.writeLong( workItem.getId() );
+        stream.writeLong( workItem.getProcessInstanceId() );
+        stream.writeUTF( workItem.getName() );
+        stream.writeInt( workItem.getState() );
     }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/PersisterEnums.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/PersisterEnums.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/PersisterEnums.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -1,39 +1,39 @@
 package org.drools.marshalling;
 
 public class PersisterEnums {
-    public static final int REPEAT                 = 0;
-    public static final int END                    = 1;
-    public static final int FACT_HANDLE            = 2;
-    public static final int LEFT_TUPLE             = 3;
-    public static final int RIGHT_TUPLE            = 4;
+    public static final short REPEAT                 = 0;
+    public static final short END                    = 1;
+    public static final short FACT_HANDLE            = 2;
+    public static final short LEFT_TUPLE             = 3;
+    public static final short RIGHT_TUPLE            = 4;
 
-    public static final int INITIAL_FACT_NODE      = 5;
+    public static final short INITIAL_FACT_NODE      = 5;
     
-    public static final int LEFT_TUPLE_BLOCKED     = 6;
-    public static final int LEFT_TUPLE_NOT_BLOCKED = 7;
+    public static final short LEFT_TUPLE_BLOCKED     = 6;
+    public static final short LEFT_TUPLE_NOT_BLOCKED = 7;
 
-    public static final int ACTIVATION             = 8;
-    public static final int PROPAGATION_CONTEXT    = 9;
+    public static final short ACTIVATION             = 8;
+    public static final short PROPAGATION_CONTEXT    = 9;
     
-    public static final int WORKING_MEMORY_ACTION  = 10;
+    public static final short WORKING_MEMORY_ACTION  = 10;
     
-    public static final int EQUALITY_KEY           = 11;
-    public static final int LOGICAL_DEPENDENCY     = 12; 
+    public static final short EQUALITY_KEY           = 11;
+    public static final short LOGICAL_DEPENDENCY     = 12; 
     
-    public static final int AGENDA_GROUP           = 13;
-    public static final int ACTIVATION_GROUP       = 14;
+    public static final short AGENDA_GROUP           = 13;
+    public static final short ACTIVATION_GROUP       = 14;
     
-    public static final int RULE_FLOW_GROUP        = 15;
-    public static final int RULE_FLOW_NODE         = 16;
+    public static final short RULE_FLOW_GROUP        = 15;
+    public static final short RULE_FLOW_NODE         = 16;
     
-    public static final int PROCESS_INSTANCE          = 17;
-    public static final int NODE_INSTANCE             = 18;
-    public static final int WORK_ITEM                 = 19;
-    public static final int RULE_SET_NODE_INSTANCE    = 20;
-    public static final int WORK_ITEM_NODE_INSTANCE   = 21;
-    public static final int SUB_PROCESS_NODE_INSTANCE = 22;
-    public static final int MILESTONE_NODE_INSTANCE   = 23;
-    public static final int TIMER_NODE_INSTANCE       = 24;
-    public static final int JOIN_NODE_INSTANCE        = 25;
+    public static final short PROCESS_INSTANCE          = 17;
+    public static final short NODE_INSTANCE             = 18;
+    public static final short WORK_ITEM                 = 19;
+    public static final short RULE_SET_NODE_INSTANCE    = 20;
+    public static final short WORK_ITEM_NODE_INSTANCE   = 21;
+    public static final short SUB_PROCESS_NODE_INSTANCE = 22;
+    public static final short MILESTONE_NODE_INSTANCE   = 23;
+    public static final short TIMER_NODE_INSTANCE       = 24;
+    public static final short JOIN_NODE_INSTANCE        = 25;
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -48,9 +48,9 @@
  * @version $Id$
  */
 public class AccumulateNode extends BetaNode {
+    
+    private static final long          serialVersionUID = 400L;  
 
-    private static final long          serialVersionUID = 400L;
-
     private boolean                    unwrapRightObject;
     private Accumulate                 accumulate;
     private AlphaNodeFieldConstraint[] resultConstraints;
@@ -593,6 +593,10 @@
         memory.behaviorContext = this.behavior.createBehaviorContext();
         return memory;
     }
+    
+    public short getType() {
+        return NodeTypeEnums.AccumulateNode;
+    } 
 
     public static class AccumulateMemory
         implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -14,7 +14,7 @@
 
     public void compile(ObjectTypeNode objectTypeNode) {
         builder = new StringBuilder();
-        builder.append( "public class Compiled" + objectTypeNode.getObjectType() + "AlphaNetwork implements RightTupleSink { \n" );
+        builder.append( "public class Compiled" + objectTypeNode.getObjectType() + "AlphaNetwork implements ObjectSink { \n" );
         
         createVars( objectTypeNode.getSinkPropagator().getSinks(), 4  );
         

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -59,7 +59,7 @@
     
     // ------------------------------------------------------------
     // Instance members
-    // ------------------------------------------------------------
+    // ------------------------------------------------------------    
 
     /** The left input <code>TupleSource</code>. */
     protected LeftTupleSource leftInput;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -46,8 +46,7 @@
 public class CollectNode extends BetaNode
     implements
     LeftTupleSink,
-    ObjectSink {
-
+    ObjectSink {    
     private static final long          serialVersionUID = 400L;
 
     private Collect                    collect;
@@ -505,6 +504,10 @@
         }
         return memory;
     }
+    
+    public short getType() {
+        return NodeTypeEnums.CollectNode;
+    }   
 
     public static class CollectMemory
         implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -54,11 +54,11 @@
     // ------------------------------------------------------------
     // Instance members
     // ------------------------------------------------------------
-
+    
     /**
-     *
-     */
-    private static final long serialVersionUID = 400L;
+    *
+    */
+   private static final long serialVersionUID = 400L;
 
     /** The semantic <code>Test</code>. */
     private EvalCondition     condition;
@@ -323,6 +323,10 @@
     public void setPreviousLeftTupleSinkNode(final LeftTupleSinkNode previous) {
         this.previousTupleSinkNode = previous;
     }
+    
+    public short getType() {
+        return NodeTypeEnums.EvalConditionNode;
+    }     
 
     public static class EvalMemory
         implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -41,9 +41,9 @@
  *
  */
 public class ExistsNode extends BetaNode {
+    
+    private static final long serialVersionUID = 400L;        
 
-    private static final long serialVersionUID = 400L;
-
     static int                notAssertObject  = 0;
     static int                notAssertTuple   = 0;
 
@@ -380,5 +380,9 @@
 
         return "[ExistsNode - " + ((ObjectTypeNode) source).getObjectType() + "]";
     }
+    
+    public short getType() {
+        return NodeTypeEnums.ExistsNode;
+    }     
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -28,6 +28,7 @@
      *
      */
     private static final long          serialVersionUID = 400L;
+       
 
     private DataProvider               dataProvider;
     private LeftTupleSource            tupleSource;
@@ -299,6 +300,10 @@
     public void setPreviousLeftTupleSinkNode(final LeftTupleSinkNode previous) {
         this.previousTupleSinkNode = previous;
     }
+    
+    public short getType() {
+        return NodeTypeEnums.FromNode;
+    }   
 
     public static class FromMemory
         implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -53,12 +53,12 @@
 public class JoinNode extends BetaNode {
     // ------------------------------------------------------------
     // Instance methods
-    // ------------------------------------------------------------
+    // ------------------------------------------------------------    
 
     /**
      *
      */
-    private static final long serialVersionUID = 400L;
+    private static final long serialVersionUID = 400L;    
 
     public JoinNode() {
 
@@ -158,15 +158,18 @@
         this.constraints.updateFromFactHandle( memory.getContext(),
                                                workingMemory,
                                                factHandle );
+        int i = 0;
         for ( LeftTuple leftTuple = memory.getLeftTupleMemory().getFirst( rightTuple ); leftTuple != null; leftTuple = (LeftTuple) leftTuple.getNext() ) {
             if ( this.constraints.isAllowedCachedRight( memory.getContext(),
                                                         leftTuple ) ) {
+                // wm.marshaller.write( i, leftTuple )
                 this.sink.propagateAssertLeftTuple( leftTuple,
                                                     rightTuple,
                                                     context,
                                                     workingMemory,
                                                     this.tupleMemoryEnabled  );
             }
+            i++;
         }
         this.constraints.resetFactHandle( memory.getContext() );
     }
@@ -248,6 +251,10 @@
             this.constraints.resetTuple( memory.getContext() );
         }
     }
+    
+    public short getType() {
+        return NodeTypeEnums.JoinNode;
+    }
 
     public String toString() {
         ObjectSource source = this.rightInput;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTupleSink.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTupleSink.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -36,6 +36,8 @@
     Externalizable,
     Sink {
 
+    public short getType();
+    
     /**
      * Assert a new <code>ReteTuple</code>.
      *

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -0,0 +1,14 @@
+package org.drools.reteoo;
+
+public class NodeTypeEnums {
+    public static final short JoinNode             = 0;
+    public static final short NotNode              = 1;
+    public static final short ExistsNode           = 2;
+    public static final short EvalConditionNode    = 3;
+    public static final short FromNode             = 4;
+    public static final short CollectNode          = 5;
+    public static final short AccumulateNode       = 6;
+    public static final short RightInputAdaterNode = 7;
+    public static final short QueryTerminalNode    = 8;
+    public static final short RuleTerminalNode     = 9;
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -44,8 +44,8 @@
  *
  */
 public class NotNode extends BetaNode {
+    private static final long serialVersionUID = 400L;    
 
-    private static final long serialVersionUID = 400L;
     static int                notAssertObject  = 0;
     static int                notAssertTuple   = 0;
 
@@ -287,6 +287,10 @@
                                   workingMemory );
         }
     }
+    
+    public short getType() {
+        return NodeTypeEnums.NotNode;
+    } 
 
     public String toString() {
         ObjectSource source = this.rightInput;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -51,6 +51,9 @@
      *
      */
     private static final long serialVersionUID = 400L;
+    
+    public static final short type = 8;
+    
     /** The rule to invoke upon match. */
     private Rule              rule;
     private GroupElement      subrule;
@@ -259,5 +262,9 @@
     public void setNextLeftTupleSinkNode(final LeftTupleSinkNode next) {
         this.nextTupleSinkNode = next;
     }
+    
+    public short getType() {
+        return NodeTypeEnums.QueryTerminalNode;
+    } 
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -48,7 +48,7 @@
     LeftTupleSinkNode,
     NodeMemory {
 
-    private static final long serialVersionUID = 400L;
+    private static final long serialVersionUID = 400L; 
 
     private LeftTupleSource   tupleSource;
 
@@ -282,6 +282,10 @@
     public void setPreviousLeftTupleSinkNode(final LeftTupleSinkNode previous) {
         this.previousTupleSinkNode = previous;
     }
+    
+    public short getType() {
+        return NodeTypeEnums.RightInputAdaterNode;
+    }     
 
     public int hashCode() {
         return this.tupleSource.hashCode() * 17 + ((this.tupleMemoryEnabled) ? 1234 : 4321);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -72,6 +72,7 @@
      *
      */
     private static final long serialVersionUID = 400L;
+        
     /** The rule to invoke upon match. */
     private Rule              rule;
     /**
@@ -576,6 +577,10 @@
         final RuleTerminalNode other = (RuleTerminalNode) object;
         return this.rule.equals( other.rule );
     }
+    
+    public short getType() {
+        return NodeTypeEnums.RuleTerminalNode;
+    }    
 
     public static class TerminalNodeMemory
         implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -5,6 +5,6 @@
  * 
  * @author etirelli
  */
-public interface Sink {
+public interface Sink {   
     public int getId();
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -588,5 +588,10 @@
             //  Auto-generated method stub
 
         }
+
+        public short getType() {
+            // TODO Auto-generated method stub
+            return 0;
+        }
     }
 }

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java	2008-05-24 05:06:41 UTC (rev 20150)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java	2008-05-24 05:07:32 UTC (rev 20151)
@@ -165,4 +165,9 @@
         
     }
 
+    public short getType() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list