[jboss-svn-commits] JBL Code SVN: r17867 - in labs/jbossrules/branches/temporal_rete/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
Tue Jan 15 10:53:14 EST 2008


Author: tirelli
Date: 2008-01-15 10:53:14 -0500 (Tue, 15 Jan 2008)
New Revision: 17867

Modified:
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/BaseNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/FromNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
   labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java
Log:
JBRULES-1390: recycling node IDs

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/BaseNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/BaseNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/BaseNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -1,5 +1,7 @@
 package org.drools.common;
 
+import org.drools.reteoo.ReteooBuilder;
+
 /*
  * Copyright 2005 JBoss Inc
  * 
@@ -57,9 +59,11 @@
 
     /**
      * Removes the node from teh network. Usually from the parent <code>ObjectSource</code> or <code>TupleSource</code>
+     * @param builder TODO
      *
      */
-    public abstract void remove(BaseNode node,
+    public abstract void remove(ReteooBuilder builder,
+                                BaseNode node,
                                 InternalWorkingMemory[] workingMemories);
 
     //    /**
@@ -86,10 +90,14 @@
 
     /**
      * Each time a node is unshared a counter is decreased.
+     * @param builder TODO
      *
      */
-    public void removeShare() {
+    public void removeShare(ReteooBuilder builder) {
         --this.sharedCount;
+        if( !this.isInUse() ) {
+            builder.getIdGenerator().releaseId( this.id );
+        }
     }
 
     /**

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -185,20 +185,20 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
 
         if ( !node.isInUse() ) {
             removeObjectSink( (ObjectSink) node );
         }
-        removeShare();
+        removeShare(builder);
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
         }
-        this.objectSource.remove( this,
-                                  workingMemories );
+        this.objectSource.remove( builder,
+                                  this, workingMemories );
     }
 
     public void setObjectMemoryAllowed(boolean objectMemoryAllowed) {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -155,22 +155,22 @@
 
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
             removeTupleSink( (TupleSink) node );
         }
-        removeShare();
+        removeShare(builder);
 
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
         }
-        this.rightInput.remove( this,
-                                workingMemories );
-        this.leftInput.remove( this,
-                               workingMemories );
+        this.rightInput.remove( builder,
+                                this, workingMemories );
+        this.leftInput.remove( builder,
+                               this, workingMemories );
 
     }
 

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -211,8 +211,8 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         final ObjectTypeNode objectTypeNode = (ObjectTypeNode) node;
         removeObjectSink( objectTypeNode );
         for ( int i = 0; i < workingMemories.length; i++ ) {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -219,19 +219,19 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
             removeTupleSink( (TupleSink) node );
         }
-        removeShare();
+        removeShare(builder);
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
         }
-        this.tupleSource.remove( this,
-                                 workingMemories );
+        this.tupleSource.remove( builder,
+                                 this, workingMemories );
 
     }
     

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -139,21 +139,21 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
 
         if ( !node.isInUse() ) {
             removeTupleSink( (TupleSink) node );
         }
-        removeShare();
+        removeShare(builder);
 
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
         }
-        this.tupleSource.remove( this,
-                                 workingMemories );
+        this.tupleSource.remove( builder,
+                                 this, workingMemories );
     }
 
     public void updateSink(final TupleSink sink,

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -175,19 +175,19 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
             removeTupleSink( (TupleSink) node );
         }
-        removeShare();
+        removeShare(builder);
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
         }
-        this.objectSource.remove( this,
-                                  workingMemories );
+        this.objectSource.remove( builder,
+                                  this, workingMemories );
     }    
     
     public boolean isObjectMemoryEnabled() {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -219,12 +219,12 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
             removeObjectSink( (ObjectSink) node );
         }
-        removeShare();
+        removeShare(builder);
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -109,22 +109,22 @@
     }
 
     /**
-     * @see org.drools.common.BaseNode#remove(org.drools.common.BaseNode, org.drools.common.InternalWorkingMemory[])
+     * @see org.drools.common.BaseNode#remove(ReteooBuilder, org.drools.common.BaseNode, org.drools.common.InternalWorkingMemory[])
      */
     @Override
-    public void remove(BaseNode node,
-                       InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       BaseNode node, InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
             removeObjectSink( (ObjectSink) node );
         }
-        removeShare();
+        removeShare(builder);
         if ( !this.isInUse() ) {
             for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
                 workingMemories[i].clearNodeMemory( this );
             }
         }
-        this.objectSource.remove( this,
-                                  workingMemories );
+        this.objectSource.remove( builder,
+                                  this, workingMemories );
     }
 
     /**

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -150,16 +150,16 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
             workingMemories[i].clearNodeMemory( this );
         }
         
-        removeShare();
+        removeShare(builder);
         
-        this.tupleSource.remove( this,
-                                 workingMemories );
+        this.tupleSource.remove( builder,
+                                 this, workingMemories );
     }
 
     public void updateNewNode(final InternalWorkingMemory workingMemory,

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/Rete.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -160,8 +160,8 @@
         throw new UnsupportedOperationException( "cannot call attach() from the root Rete node" );
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         final EntryPointNode entryPointNode = (EntryPointNode) node;
         removeObjectSink( entryPointNode );
     }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -24,9 +24,14 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Queue;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.drools.RuleIntegrationException;
 import org.drools.base.SalienceInteger;
@@ -37,7 +42,6 @@
 import org.drools.reteoo.builder.ReteooRuleBuilder;
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.Rule;
-import org.drools.spi.AgendaGroup;
 import org.drools.spi.Salience;
 
 /**
@@ -62,7 +66,7 @@
     private static final long                 serialVersionUID = 400L;
 
     /** The RuleBase */
-    private transient InternalRuleBase          ruleBase;
+    private transient InternalRuleBase        ruleBase;
 
     private transient InternalWorkingMemory[] workingMemories;
 
@@ -71,7 +75,7 @@
     private transient ReteooRuleBuilder       ruleBuilder;
 
     private IdGenerator                       idGenerator;
-    
+
     private boolean                           ordered;
 
     // ------------------------------------------------------------
@@ -95,7 +99,7 @@
                                                      ClassNotFoundException {
         stream.defaultReadObject();
         this.ruleBase = ((DroolsObjectInputStream) stream).getRuleBase();
-        this.ruleBuilder = new ReteooRuleBuilder();        
+        this.ruleBuilder = new ReteooRuleBuilder();
     }
 
     // ------------------------------------------------------------
@@ -121,84 +125,91 @@
         this.rules.put( rule,
                         terminals.toArray( new BaseNode[terminals.size()] ) );
     }
-    
+
     public IdGenerator getIdGenerator() {
         return this.idGenerator;
     }
-    
+
     public void order() {
         if ( ordered ) {
             // we should only do this on first call, its expected the RuleBase should not change afterwards.
             return;
         }
         Map map = new HashMap();
-        
+
         for ( Iterator it = this.rules.values().iterator(); it.hasNext(); ) {
             BaseNode[] nodes = (BaseNode[]) it.next();
-            for ( int i = 0 ; i < nodes.length; i++ ) {
+            for ( int i = 0; i < nodes.length; i++ ) {
                 if ( nodes[i] instanceof RuleTerminalNode ) {
-                    RuleTerminalNode node = ( RuleTerminalNode ) nodes[i];
+                    RuleTerminalNode node = (RuleTerminalNode) nodes[i];
                     String agendaGroup = node.getRule().getAgendaGroup();
                     if ( agendaGroup == null || agendaGroup.equals( "" ) ) {
                         agendaGroup = "MAIN";
                     }
-                    List rules = ( List ) map.get( agendaGroup );
+                    List rules = (List) map.get( agendaGroup );
                     if ( rules == null ) {
                         rules = new ArrayList();
-                        map.put( agendaGroup, rules );
+                        map.put( agendaGroup,
+                                 rules );
                     }
                     rules.add( node );
                 }
             }
         }
-        
+
         for ( Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
-            Entry entry = ( Entry ) it.next();
+            Entry entry = (Entry) it.next();
             String agendaGroup = (String) entry.getKey();
-            List rules = ( List ) entry.getValue();
-            Collections.sort( rules, RuleSequenceComparator.INSTANCE );
-            
+            List rules = (List) entry.getValue();
+            Collections.sort( rules,
+                              RuleSequenceComparator.INSTANCE );
+
             int i = 0;
             for ( Iterator listIter = rules.iterator(); listIter.hasNext(); ) {
-                RuleTerminalNode node = ( RuleTerminalNode ) listIter.next();
+                RuleTerminalNode node = (RuleTerminalNode) listIter.next();
                 node.setSequence( i++ );
             }
-            
-            ruleBase.getAgendaGroupRuleTotals().put( agendaGroup, new Integer( i ) );
+
+            ruleBase.getAgendaGroupRuleTotals().put( agendaGroup,
+                                                     new Integer( i ) );
         }
         ordered = true;
     }
 
-    public static class RuleSequenceComparator implements Comparator {
+    public static class RuleSequenceComparator
+        implements
+        Comparator {
         public final static RuleSequenceComparator INSTANCE = new RuleSequenceComparator();
 
         public int compare(Object o1,
                            Object o2) {
             RuleTerminalNode r1 = (RuleTerminalNode) o1;
             RuleTerminalNode r2 = (RuleTerminalNode) o2;
-            
+
             Salience so1 = r1.getRule().getSalience();
-            if (so1 != null && !(so1 instanceof SalienceInteger) ) {
-                throw new RuntimeException(r1.getRule().getName() + "must not have a dynamic salience" );
+            if ( so1 != null && !(so1 instanceof SalienceInteger) ) {
+                throw new RuntimeException( r1.getRule().getName() + "must not have a dynamic salience" );
             }
             Salience so2 = r2.getRule().getSalience();
-            if (so2 != null && !(so2 instanceof SalienceInteger) ) {
-                throw new RuntimeException(r2.getRule().getName() + "must not have a dynamic salience" );
+            if ( so2 != null && !(so2 instanceof SalienceInteger) ) {
+                throw new RuntimeException( r2.getRule().getName() + "must not have a dynamic salience" );
             }
-            
-            int s1 = so1.getValue( null, null );
-            int s2 = so2.getValue( null, null );
-            
-            if ( s1 >  s2) {                        
+
+            int s1 = so1.getValue( null,
+                                   null );
+            int s2 = so2.getValue( null,
+                                   null );
+
+            if ( s1 > s2 ) {
                 return -1;
             } else if ( s1 < s2 ) {
                 return 1;
-            } 
-            
-            int id1 =r1.getId();
-            int id2 =r2.getId();
-            
-            if ( id1 <  id2) {                        
+            }
+
+            int id1 = r1.getId();
+            int id2 = r2.getId();
+
+            if ( id1 < id2 ) {
                 return -1;
             } else if ( id1 > id2 ) {
                 return 1;
@@ -206,9 +217,9 @@
                 return 0;
             }
         }
-        
+
     }
-    
+
     public BaseNode[] getTerminalNodes(final Rule rule) {
         return (BaseNode[]) this.rules.get( rule );
     }
@@ -222,7 +233,8 @@
         final BaseNode[] nodes = (BaseNode[]) object;
         for ( int i = 0, length = nodes.length; i < length; i++ ) {
             final BaseNode node = nodes[i];
-            node.remove( null,
+            node.remove( this,
+                         null,
                          this.workingMemories );
         }
     }
@@ -233,19 +245,29 @@
 
         private static final long serialVersionUID = 400L;
 
+        private Queue<Integer>    recycledIds;
         private int               nextId;
 
         public IdGenerator(final int firstId) {
             this.nextId = firstId;
+            this.recycledIds = new LinkedList<Integer>();
         }
 
         public int getNextId() {
-            return this.nextId++;
+            Integer id = this.recycledIds.poll();
+            if( id == null ) {
+                return this.nextId++;
+            }
+            return id.intValue();
         }
 
         public void releaseLastId() {
             this.nextId--;
         }
+        
+        public void releaseId( int id ) {
+            this.recycledIds.add( new Integer(id) );
+        }
 
     }
 

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -165,14 +165,14 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
             removeObjectSink( (ObjectSink) node );
         }
-        removeShare();
-        this.tupleSource.remove( this,
-                                 workingMemories );
+        removeShare(builder);
+        this.tupleSource.remove( builder,
+                                 this, workingMemories );
     }
     
     public boolean isTupleMemoryEnabled() {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -432,8 +432,8 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
             final InternalWorkingMemory workingMemory = workingMemories[i];
 
@@ -461,10 +461,10 @@
             workingMemory.clearNodeMemory( this );
         }
 
-        removeShare();
+        removeShare(builder);
 
-        this.tupleSource.remove( this,
-                                 workingMemories );
+        this.tupleSource.remove( builder,
+                                 this, workingMemories );
     }
 
     public Object createMemory(final RuleBaseConfiguration config) {

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/BaseNodeTest.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -60,8 +60,8 @@
 
         }
 
-        public void remove(final BaseNode node,
-                           final InternalWorkingMemory[] workingMemories) {
+        public void remove(ReteooBuilder builder,
+                           final BaseNode node, final InternalWorkingMemory[] workingMemories) {
             // TODO Auto-generated method stub
 
         }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -71,8 +71,8 @@
         }
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         // TODO Auto-generated method stub
 
     }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -96,8 +96,8 @@
 
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         // TODO Auto-generated method stub
 
     }

Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java	2008-01-15 13:44:55 UTC (rev 17866)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java	2008-01-15 15:53:14 UTC (rev 17867)
@@ -53,8 +53,8 @@
         this.updated++;
     }
 
-    public void remove(final BaseNode node,
-                       final InternalWorkingMemory[] workingMemories) {
+    public void remove(ReteooBuilder builder,
+                       final BaseNode node, final InternalWorkingMemory[] workingMemories) {
         // TODO Auto-generated method stub
 
     }




More information about the jboss-svn-commits mailing list