[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