[jboss-svn-commits] JBL Code SVN: r6372 - 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
Fri Sep 22 12:30:19 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-09-22 12:30:16 -0400 (Fri, 22 Sep 2006)
New Revision: 6372

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/SingleTupleSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java
Log:
JBRULES-498 Optimised HashMap impl
-TupleSinkPropagator must now handle modify  and retract

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-22 15:32:38 UTC (rev 6371)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java	2006-09-22 16:30:16 UTC (rev 6372)
@@ -30,17 +30,12 @@
 
     public void propagateAssertTuple(ReteTuple tuple,
                                      InternalFactHandle handle,
-                                     TupleMatch tupleMatch,
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory) {
 
         for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
-            ReteTuple child = new ReteTuple( tuple,
-                                             handle,
-                                             (TupleSink) sink );
-            tupleMatch.addJoinedTuple( child );
-            child.assertTuple( context,
-                               workingMemory );
+            sink.assertTuple( new ReteTuple( tuple,
+                                             handle), context, workingMemory );
         }
     }
 
@@ -48,44 +43,33 @@
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory) {
         for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
-            ReteTuple child = new ReteTuple( tuple,
-                                             sink );
-            tuple.addChildEntry( child );
-            child.assertTuple( context,
-                               workingMemory );
+            sink.assertTuple( new ReteTuple( tuple), context, workingMemory );
         }
     }
 
-    /**
-     * @inheritDoc
-     */
-    public void propagateAssertTuple(final ReteTuple tuple,
-                                     final InternalFactHandle handle,
-                                     final PropagationContext context,
-                                     final InternalWorkingMemory workingMemory) {
-        for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
-            final ReteTuple joined = new ReteTuple( tuple,
-                                                    handle,
-                                                    sink );
-            tuple.addChildEntry( joined );
-            joined.assertTuple( context,
-                                workingMemory );
-        }
-    }
-
-    public LinkedList createAndAssertTuple(InternalFactHandle handle,
+    public void createAndPropagateAssertTuple(InternalFactHandle handle,
                                            PropagationContext context,
                                            InternalWorkingMemory workingMemory) {
-        final LinkedList list = new LinkedList();
         for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
-            ReteTuple tuple = new ReteTuple( handle,
-                                             sink );
-            list.add( new LinkedListEntry( tuple ) );
-            tuple.assertTuple( context,
-                               workingMemory );
+            sink.assertTuple( new ReteTuple( handle ), context, workingMemory );
         }
-        return list;
     }
+    
+    public void createAndPropagateRetractTuple(InternalFactHandle handle,
+                                              PropagationContext context,
+                                              InternalWorkingMemory workingMemory) {
+           for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
+               sink.retractTuple( new ReteTuple( handle ), context, workingMemory );
+           }
+    }
+    
+    public void createAndPropagateModifyTuple(InternalFactHandle handle,
+                                               PropagationContext context,
+                                               InternalWorkingMemory workingMemory) {
+            for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
+                sink.modifyTuple( new ReteTuple( handle ), context, workingMemory );
+            }
+     }    
 
     public TupleSink[] getSinks() {
         TupleSink[] sinkArray = new TupleSink[this.sinks.size()];
@@ -98,71 +82,71 @@
         return sinkArray;
     }
 
-    public void propagateNewTupleSink(TupleMatch tupleMatch,
-                                      PropagationContext context,
-                                      InternalWorkingMemory workingMemory) {
+//    public void propagateNewTupleSink(TupleMatch tupleMatch,
+//                                      PropagationContext context,
+//                                      InternalWorkingMemory workingMemory) {
+//
+//        final TupleSink sink = sinks.getLast();
+//        final ReteTuple tuple = new ReteTuple( tupleMatch.getTuple(),
+//                                               tupleMatch.getObjectMatches().getFactHandle(),
+//                                               sink );
+//        tupleMatch.addJoinedTuple( tuple );
+//        tuple.assertTuple( context,
+//                           workingMemory );
+//    }
+//
+//    public void propagateNewTupleSink(ReteTuple tuple,
+//                                      PropagationContext context,
+//                                      InternalWorkingMemory workingMemory) {
+//
+//        final TupleSink sink = sinks.getLast();
+//        ReteTuple child = new ReteTuple( tuple,
+//                                         sink );
+//        tuple.addChildEntry( child );
+//        child.assertTuple( context,
+//                           workingMemory );
+//    }
+//
+//    public void propagateNewTupleSink(InternalFactHandle handle,
+//                                      LinkedList list,
+//                                      PropagationContext context,
+//                                      InternalWorkingMemory workingMemory) {
+//        TupleSink sink = this.sinks.getLast();
+//        ReteTuple tuple = new ReteTuple( handle,
+//                                         sink );
+//        list.add( new LinkedListEntry( tuple ) );
+//        tuple.assertTuple( context,
+//                           workingMemory );
+//    }
+//
+//    /**
+//     * @inheritDoc
+//     */
+//    public List getPropagatedTuples(final Map memory,
+//                                    final InternalWorkingMemory workingMemory,
+//                                    final TupleSink sink) {
+//        int index = 0;
+//        for ( TupleSinkNode node = this.sinks.getFirst(); node != null; node = node.getNextTupleSinkNode() ) {
+//            if ( node.equals( sink ) ) {
+//                break;
+//            }
+//            index++;
+//        }
+//
+//        final List propagatedTuples = new ArrayList( memory.size() );
+//
+//        for ( final Iterator it = memory.values().iterator(); it.hasNext(); ) {
+//            final LinkedList tuples = (LinkedList) it.next();
+//            LinkedListEntry wrapper = (LinkedListEntry) tuples.getFirst();
+//            for ( int i = 0; i < index; i++ ) {
+//                wrapper = (LinkedListEntry) wrapper.getNext();
+//            }
+//            propagatedTuples.add( wrapper.getObject() );
+//        }
+//
+//        return propagatedTuples;
+//    }
 
-        final TupleSink sink = sinks.getLast();
-        final ReteTuple tuple = new ReteTuple( tupleMatch.getTuple(),
-                                               tupleMatch.getObjectMatches().getFactHandle(),
-                                               sink );
-        tupleMatch.addJoinedTuple( tuple );
-        tuple.assertTuple( context,
-                           workingMemory );
-    }
-
-    public void propagateNewTupleSink(ReteTuple tuple,
-                                      PropagationContext context,
-                                      InternalWorkingMemory workingMemory) {
-
-        final TupleSink sink = sinks.getLast();
-        ReteTuple child = new ReteTuple( tuple,
-                                         sink );
-        tuple.addChildEntry( child );
-        child.assertTuple( context,
-                           workingMemory );
-    }
-
-    public void propagateNewTupleSink(InternalFactHandle handle,
-                                      LinkedList list,
-                                      PropagationContext context,
-                                      InternalWorkingMemory workingMemory) {
-        TupleSink sink = this.sinks.getLast();
-        ReteTuple tuple = new ReteTuple( handle,
-                                         sink );
-        list.add( new LinkedListEntry( tuple ) );
-        tuple.assertTuple( context,
-                           workingMemory );
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public List getPropagatedTuples(final Map memory,
-                                    final InternalWorkingMemory workingMemory,
-                                    final TupleSink sink) {
-        int index = 0;
-        for ( TupleSinkNode node = this.sinks.getFirst(); node != null; node = node.getNextTupleSinkNode() ) {
-            if ( node.equals( sink ) ) {
-                break;
-            }
-            index++;
-        }
-
-        final List propagatedTuples = new ArrayList( memory.size() );
-
-        for ( final Iterator it = memory.values().iterator(); it.hasNext(); ) {
-            final LinkedList tuples = (LinkedList) it.next();
-            LinkedListEntry wrapper = (LinkedListEntry) tuples.getFirst();
-            for ( int i = 0; i < index; i++ ) {
-                wrapper = (LinkedListEntry) wrapper.getNext();
-            }
-            propagatedTuples.add( wrapper.getObject() );
-        }
-
-        return propagatedTuples;
-    }
-
     public int size() {
         return this.sinks.size();
     }

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-22 15:32:38 UTC (rev 6371)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java	2006-09-22 16:30:16 UTC (rev 6372)
@@ -33,7 +33,7 @@
                             workingMemory );
     }
 
-    public LinkedList createAndAssertTuple(InternalFactHandle handle,
+    public LinkedList createAndPropagateAssertTuple(InternalFactHandle handle,
                                            PropagationContext context,
                                            InternalWorkingMemory workingMemory) {
         final LinkedList list = new LinkedList();

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-22 15:32:38 UTC (rev 6371)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java	2006-09-22 16:30:16 UTC (rev 6372)
@@ -1,17 +1,12 @@
 package org.drools.reteoo;
 
-import java.util.List;
-import java.util.Map;
-
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.spi.PropagationContext;
-import org.drools.util.LinkedList;
 
 public interface TupleSinkPropagator {
     public void propagateAssertTuple(ReteTuple tuple,
                                      InternalFactHandle handle,
-                                     TupleMatch tupleMatch,
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory);
 
@@ -19,43 +14,37 @@
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory);
 
-    /**
-     * Propagates a new tuple adding the given fact handle to the tuple 
-     * before propagating.
-     * 
-     * @param tuple The base tuple for propagation
-     * @param handle The handle to add to the tuple when propagating
-     * @param context
-     * @param workingMemory
-     */
-    public void propagateAssertTuple(final ReteTuple tuple,
-                                     final InternalFactHandle handle,
-                                     final PropagationContext context,
-                                     final InternalWorkingMemory workingMemory);
+    public void createAndPropagateAssertTuple(InternalFactHandle handle,
+                                             PropagationContext context,
+                                             InternalWorkingMemory workingMemory);
+    
+    public void createAndPropagateRetractTuple(InternalFactHandle handle,
+                                              PropagationContext context,
+                                              InternalWorkingMemory workingMemory); 
+    
+    public void createAndPropagateModifyTuple(InternalFactHandle handle,
+                                               PropagationContext context,
+                                               InternalWorkingMemory workingMemory);
 
-    public LinkedList createAndAssertTuple(InternalFactHandle handle,
-                                           PropagationContext context,
-                                           InternalWorkingMemory workingMemory);
-
     public TupleSink[] getSinks();
 
-    public void propagateNewTupleSink(TupleMatch tupleMatch,
-                                      PropagationContext context,
-                                      InternalWorkingMemory workingMemory);
+//    public void propagateNewTupleSink(TupleMatch tupleMatch,
+//                                      PropagationContext context,
+//                                      InternalWorkingMemory workingMemory);
+//
+//    public void propagateNewTupleSink(InternalFactHandle handle,
+//                                      LinkedList list,
+//                                      PropagationContext context,
+//                                      InternalWorkingMemory workingMemory);
+//
+//    public void propagateNewTupleSink(ReteTuple tuple,
+//                                      PropagationContext context,
+//                                      InternalWorkingMemory workingMemory);
+//
+//    public List getPropagatedTuples(final Map memory,
+//                                    final InternalWorkingMemory workingMemory,
+//                                    final TupleSink sink);
 
-    public void propagateNewTupleSink(InternalFactHandle handle,
-                                      LinkedList list,
-                                      PropagationContext context,
-                                      InternalWorkingMemory workingMemory);
-
-    public void propagateNewTupleSink(ReteTuple tuple,
-                                      PropagationContext context,
-                                      InternalWorkingMemory workingMemory);
-
-    public List getPropagatedTuples(final Map memory,
-                                    final InternalWorkingMemory workingMemory,
-                                    final TupleSink sink);
-
     public int size();
 
 }




More information about the jboss-svn-commits mailing list