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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Sep 13 14:58:10 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-09-13 14:58:07 -0400 (Wed, 13 Sep 2006)
New Revision: 6207

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleMatch.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java
Log:
JBRULES-484 refactor the core reteoo code for sinle and composite propagations
-made memory self contained again

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java	2006-09-13 18:33:18 UTC (rev 6206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java	2006-09-13 18:58:07 UTC (rev 6207)
@@ -54,17 +54,16 @@
         }
     }    
     
-    public void createAndAssertTuple(InternalFactHandle handle,
+    public LinkedList createAndAssertTuple(InternalFactHandle handle,
                                      PropagationContext context,
-                                     InternalWorkingMemory workingMemory,
-                                     Map memory) {
+                                     InternalWorkingMemory workingMemory) {
         final LinkedList list = new LinkedList();
-        memory.put( handle, list );
         for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {    
             ReteTuple tuple = new ReteTuple( handle, sink );
             list.add( new LinkedListObjectWrapper( tuple ) );
             tuple.assertTuple( context, workingMemory );
         }     
+        return list;
     }    
 
     public TupleSink[] getSinks() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-09-13 18:33:18 UTC (rev 6206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-09-13 18:58:07 UTC (rev 6207)
@@ -140,10 +140,10 @@
         if ( (this.binder == null) || (this.binder.isAllowed( handle,
                                                               null,
                                                               workingMemory )) ) {
-            this.sink.createAndAssertTuple( handle,
-                                            context,
-                                            workingMemory,
-                                            memory );
+            memory.put( handle,
+                        this.sink.createAndAssertTuple( handle,
+                                                        context,
+                                                        workingMemory ) );
         }
     }
 
@@ -166,9 +166,10 @@
 
         // the handle might have been filtered out by the binder
         if ( list != null ) {
-            for ( LinkedListNode node = list.removeFirst(); node != null; node = list.removeFirst() ) {                
-                ReteTuple reteTuple = ( ReteTuple )  ((LinkedListObjectWrapper) node).getObject();
-                reteTuple.retractTuple( context, workingMemory );
+            for ( LinkedListNode node = list.removeFirst(); node != null; node = list.removeFirst() ) {
+                ReteTuple reteTuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+                reteTuple.retractTuple( context,
+                                        workingMemory );
             }
         }
     }
@@ -186,23 +187,25 @@
             if ( list != null ) {
                 // already existed, so propagate as a modify
                 for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
-                    ReteTuple reteTuple = ( ReteTuple )  ((LinkedListObjectWrapper) node).getObject();
-                    reteTuple.modifyTuple( context, workingMemory );
+                    ReteTuple reteTuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+                    reteTuple.modifyTuple( context,
+                                           workingMemory );
                 }
             } else {
                 // didn't existed, so propagate as an assert
-                this.sink.createAndAssertTuple( handle,
-                                           context,
-                                           workingMemory,
-                                           memory );
+                memory.put( handle,
+                            this.sink.createAndAssertTuple( handle,
+                                                            context,
+                                                            workingMemory ) );
             }
         } else {
             final LinkedList list = (LinkedList) memory.remove( handle );
 
             if ( list != null ) {
                 for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
-                    ReteTuple reteTuple = ( ReteTuple )  ((LinkedListObjectWrapper) node).getObject();
-                    reteTuple.retractTuple( context, workingMemory );
+                    ReteTuple reteTuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+                    reteTuple.retractTuple( context,
+                                            workingMemory );
                 }
             }
         }
@@ -216,17 +219,20 @@
         this.attachingNewNode = true;
 
         // Get the newly attached TupleSink
-//        final TupleSink sink = (TupleSink) getTupleSinks().get( getTupleSinks().size() - 1 );
+        //        final TupleSink sink = (TupleSink) getTupleSinks().get( getTupleSinks().size() - 1 );
 
         // Iterate the memory and assert all tuples into the newly attached TupleSink
         final Map memory = (Map) workingMemory.getNodeMemory( this );
-        
+
         for ( final Iterator it = memory.entrySet().iterator(); it.hasNext(); ) {
-            Entry entry = ( Entry ) it.next();
-            
-            final InternalFactHandle handle = ( InternalFactHandle ) entry.getKey();
+            Entry entry = (Entry) it.next();
+
+            final InternalFactHandle handle = (InternalFactHandle) entry.getKey();
             final LinkedList list = (LinkedList) entry.getValue();
-            this.sink.propagateNewTupleSink( handle, list, context, workingMemory );
+            this.sink.propagateNewTupleSink( handle,
+                                             list,
+                                             context,
+                                             workingMemory );
         }
 
         this.attachingNewNode = false;
@@ -235,7 +241,7 @@
     public void remove(final BaseNode node,
                        final InternalWorkingMemory[] workingMemories) {
         if ( !node.isInUse() ) {
-            removeTupleSink( (TupleSink ) node );
+            removeTupleSink( (TupleSink) node );
         }
         removeShare();
         if ( !this.isInUse() ) {
@@ -282,6 +288,8 @@
     public List getPropagatedTuples(final InternalWorkingMemory workingMemory,
                                     final TupleSink sink) {
         final Map memory = (Map) workingMemory.getNodeMemory( this );
-        return this.sink.getPropagatedTuples( memory, workingMemory, sink );
+        return this.sink.getPropagatedTuples( memory,
+                                              workingMemory,
+                                              sink );
     }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java	2006-09-13 18:33:18 UTC (rev 6206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java	2006-09-13 18:58:07 UTC (rev 6207)
@@ -33,17 +33,16 @@
                             workingMemory );
     }
 
-    public void createAndAssertTuple(InternalFactHandle handle,
+    public LinkedList createAndAssertTuple(InternalFactHandle handle,
                                      PropagationContext context,
-                                     InternalWorkingMemory workingMemory,
-                                     Map memory) {
+                                     InternalWorkingMemory workingMemory) {
         final LinkedList list = new LinkedList();
         ReteTuple tuple = new ReteTuple( handle,
                                          sink );
         list.add( new LinkedListObjectWrapper( tuple ) );
-        memory.put( handle, list );
         tuple.assertTuple( context,
                            workingMemory );
+        return list;
     }
 
     public void propagateAssertTuple(ReteTuple tuple,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleMatch.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleMatch.java	2006-09-13 18:33:18 UTC (rev 6206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleMatch.java	2006-09-13 18:58:07 UTC (rev 6207)
@@ -86,15 +86,15 @@
     public void propagateRetractTuple(final PropagationContext context,
                                       final InternalWorkingMemory workingMemory) {
         this.children.propagateRetractTuple( context,
-                                        workingMemory );
+                                             workingMemory );
     }
 
     public void propagateModifyTuple(final PropagationContext context,
                                      final InternalWorkingMemory workingMemory) {
         this.children.propagateModifyTuple( context,
-                                       workingMemory );
+                                            workingMemory );
     }
-    
+
     public ReteTuple getTupleForSink(TupleSink sink) {
         return this.children.getTupleForSink( sink );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java	2006-09-13 18:33:18 UTC (rev 6206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java	2006-09-13 18:58:07 UTC (rev 6207)
@@ -19,10 +19,9 @@
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory);    
     
-    public void createAndAssertTuple(InternalFactHandle handle,
+    public LinkedList createAndAssertTuple(InternalFactHandle handle,
                                      PropagationContext context,
-                                     InternalWorkingMemory workingMemory,
-                                     Map memory);    
+                                     InternalWorkingMemory workingMemory);    
     
 
     public TupleSink[] getSinks();




More information about the jboss-svn-commits mailing list