[jboss-svn-commits] JBL Code SVN: r6216 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo: . beta
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 13 22:53:38 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-09-13 22:53:26 -0400 (Wed, 13 Sep 2006)
New Revision: 6216
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
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/BetaMemory.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/CompositeTupleMatch.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.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/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/LeftInputAdapterNode.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/ReteooBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleMatch.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/TerminalNode.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/TupleSink.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaRightMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedRightMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/DefaultRightMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/InstanceEqualConstrRightMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java
Log:
JBRULES-494 Linked Tuple
-We now linked ReteTuples rather than cloning the array.
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -21,15 +21,16 @@
import java.util.List;
import java.util.Map;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.rule.Accumulate;
import org.drools.spi.FieldConstraint;
import org.drools.spi.PropagationContext;
+import org.drools.spi.Tuple;
import org.drools.util.LinkedList;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
/**
* AccumulateNode
@@ -46,7 +47,7 @@
private final Accumulate accumulate;
private final FieldConstraint[] constraints;
- private final BetaNodeBinder resultsBinder;
+ private final BetaNodeConstraints resultsBinder;
/**
* Construct.
@@ -68,8 +69,8 @@
leftInput,
rightInput,
new FieldConstraint[0],
- new BetaNodeBinder(),
- new BetaNodeBinder(),
+ new BetaNodeConstraints(),
+ new BetaNodeConstraints(),
accumulate );
}
@@ -77,8 +78,8 @@
final TupleSource leftInput,
final ObjectSource rightInput,
final FieldConstraint[] constraints,
- final BetaNodeBinder sourceBinder,
- final BetaNodeBinder resultsBinder,
+ final BetaNodeConstraints sourceBinder,
+ final BetaNodeConstraints resultsBinder,
final Accumulate accumulate) {
super( id,
leftInput,
@@ -206,7 +207,7 @@
// if tuple was propagated
if((leftTuple.getLinkedTuples() != null) && (leftTuple.getLinkedTuples().size() > 0)) {
// Need to store the accumulate result object for later disposal
- InternalFactHandle[] handles = ((ReteTuple)((LinkedListObjectWrapper)leftTuple.getLinkedTuples().getFirst()).getObject()).getFactHandles();
+ InternalFactHandle[] handles = ((Tuple)((LinkedListEntry)leftTuple.getLinkedTuples().getFirst()).getObject()).getFactHandles();
InternalFactHandle lastHandle = handles[handles.length-1];
propagateRetractTuple( leftTuple,
@@ -235,7 +236,7 @@
ObjectMatches objectMatches = memory.add( workingMemory,
handle );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.leftTupleIterator( workingMemory,
handle ); it.hasNext(); ) {
final ReteTuple leftTuple = (ReteTuple) it.next();
@@ -321,9 +322,9 @@
final ReteTuple leftTuple = (ReteTuple) it.next();
final LinkedList linkedTuples = leftTuple.getLinkedTuples();
- LinkedListObjectWrapper wrapper = (LinkedListObjectWrapper) linkedTuples.getFirst();
+ LinkedListEntry wrapper = (LinkedListEntry) linkedTuples.getFirst();
for ( int i = 0; i < index; i++ ) {
- wrapper = (LinkedListObjectWrapper) wrapper.getNext();
+ wrapper = (LinkedListEntry) wrapper.getNext();
}
propagatedTuples.add( wrapper.getObject() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -23,11 +23,12 @@
import org.drools.RuleBaseConfiguration;
import org.drools.WorkingMemory;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.beta.BetaLeftMemory;
import org.drools.reteoo.beta.BetaMemoryFactory;
import org.drools.reteoo.beta.BetaRightMemory;
+import org.drools.spi.Tuple;
/**
* Memory for left and right inputs of a <code>BetaNode</code>. The LeftMemory is a <code>LinkedList</code> for all incoming
@@ -74,7 +75,7 @@
* <code>FactHandle</code>s
*/
BetaMemory(final RuleBaseConfiguration config,
- final BetaNodeBinder binder) {
+ final BetaNodeConstraints binder) {
this.leftMemory = BetaMemoryFactory.newLeftMemory( config,
binder );
this.rightMemory = BetaMemoryFactory.newRightMemory( config,
@@ -104,7 +105,7 @@
* @return The an Iterator for the right memory
*/
Iterator rightObjectIterator(final WorkingMemory wm,
- final ReteTuple tuple) {
+ final Tuple tuple) {
return this.rightMemory.iterator( wm,
tuple );
}
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -18,7 +18,7 @@
import org.drools.RuleBaseConfiguration;
import org.drools.common.BaseNode;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
@@ -52,7 +52,7 @@
/** The right input <code>TupleSource</code>. */
private final ObjectSource rightInput;
- private final BetaNodeBinder joinNodeBinder;
+ private final BetaNodeConstraints joinNodeBinder;
private TupleSinkNode previousTupleSinkNode;
private TupleSinkNode nextTupleSinkNode;
@@ -80,7 +80,7 @@
this( id,
leftInput,
rightInput,
- BetaNodeBinder.simpleBinder );
+ BetaNodeConstraints.emptyBetaNodeConstraints );
}
/**
@@ -94,7 +94,7 @@
BetaNode(final int id,
final TupleSource leftInput,
final ObjectSource rightInput,
- final BetaNodeBinder joinNodeBinder) {
+ final BetaNodeConstraints joinNodeBinder) {
super( id );
this.leftInput = leftInput;
this.rightInput = rightInput;
@@ -177,14 +177,14 @@
/**
* @return the <code>joinNodeBinder</code>
*/
- BetaNodeBinder getJoinNodeBinder() {
+ BetaNodeConstraints getJoinNodeBinder() {
return this.joinNodeBinder;
}
protected TupleMatch attemptJoin(final ReteTuple leftTuple,
final InternalFactHandle handle,
final ObjectMatches objectMatches,
- final BetaNodeBinder binder,
+ final BetaNodeConstraints binder,
final InternalWorkingMemory workingMemory) {
if ( binder.isAllowed( handle,
leftTuple,
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -22,14 +22,15 @@
import java.util.List;
import java.util.Map;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.rule.Collect;
import org.drools.spi.FieldConstraint;
import org.drools.spi.PropagationContext;
+import org.drools.spi.Tuple;
import org.drools.util.LinkedList;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
/**
* @author etirelli
@@ -44,7 +45,7 @@
private final Collect collect;
private final FieldConstraint[] resultConstraints;
- private final BetaNodeBinder resultsBinder;
+ private final BetaNodeConstraints resultsBinder;
/**
* Constructor.
@@ -66,8 +67,8 @@
leftInput,
rightInput,
new FieldConstraint[0],
- new BetaNodeBinder(),
- new BetaNodeBinder(),
+ new BetaNodeConstraints(),
+ new BetaNodeConstraints(),
collect );
}
@@ -93,8 +94,8 @@
final TupleSource leftInput,
final ObjectSource rightInput,
final FieldConstraint[] resultConstraints,
- final BetaNodeBinder sourceBinder,
- final BetaNodeBinder resultsBinder,
+ final BetaNodeConstraints sourceBinder,
+ final BetaNodeConstraints resultsBinder,
final Collect collect) {
super( id,
leftInput,
@@ -212,7 +213,7 @@
// if tuple was propagated
if ( (leftTuple.getLinkedTuples() != null) && (leftTuple.getLinkedTuples().size() > 0) ) {
// Need to store the collection result object for later disposal
- InternalFactHandle[] handles = ((ReteTuple) ((LinkedListObjectWrapper) leftTuple.getLinkedTuples().getFirst()).getObject()).getFactHandles();
+ InternalFactHandle[] handles = ((Tuple) ((LinkedListEntry) leftTuple.getLinkedTuples().getFirst()).getObject()).getFactHandles();
InternalFactHandle lastHandle = handles[handles.length - 1];
propagateRetractTuple( leftTuple,
@@ -241,7 +242,7 @@
memory.add( workingMemory,
handle );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.leftTupleIterator( workingMemory,
handle ); it.hasNext(); ) {
final ReteTuple leftTuple = (ReteTuple) it.next();
@@ -327,9 +328,9 @@
final ReteTuple leftTuple = (ReteTuple) it.next();
final LinkedList linkedTuples = leftTuple.getLinkedTuples();
- LinkedListObjectWrapper wrapper = (LinkedListObjectWrapper) linkedTuples.getFirst();
+ LinkedListEntry wrapper = (LinkedListEntry) linkedTuples.getFirst();
for ( int i = 0; i < index; i++ ) {
- wrapper = (LinkedListObjectWrapper) wrapper.getNext();
+ wrapper = (LinkedListEntry) wrapper.getNext();
}
propagatedTuples.add( wrapper.getObject() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleMatch.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleMatch.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleMatch.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -15,13 +15,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-import java.util.Iterator;
-import java.util.LinkedList;
-
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
import org.drools.util.AbstractBaseLinkedListNode;
+import org.drools.util.LinkedList;
+import org.drools.util.LinkedListNode;
+import org.drools.util.LinkedListEntry;
/**
* <code>TupleMatch</code> maintains a reference to the parent <code>ReteTuple</code> and a <code>List</code> of all resulting joins.
@@ -37,13 +36,15 @@
* @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
*
*/
-public class CompositeTupleMatch extends AbstractBaseLinkedListNode implements TupleMatch {
- private ReteTuple tuple;
-
- private LinkedList list;
+public class CompositeTupleMatch extends AbstractBaseLinkedListNode
+ implements
+ TupleMatch {
+ private ReteTuple tuple;
- private ObjectMatches objectMatches;
+ private LinkedList list;
+ private ObjectMatches objectMatches;
+
/**
* Construct a <code>TupleMatch</code> with references to the parent <code>ReteTuple</code> and
* <code>FactHandleImpl</code>, via ObjecMatches.
@@ -52,9 +53,9 @@
* @param objectMatches
*/
public CompositeTupleMatch(final ReteTuple tuple,
- final ObjectMatches objectMatches) {
+ final ObjectMatches objectMatches) {
this.tuple = tuple;
- this.objectMatches = objectMatches;
+ this.objectMatches = objectMatches;
this.list = new LinkedList();
}
@@ -72,14 +73,14 @@
return this.objectMatches;
}
- public void addJoinedTuple(ReteTuple tuple) {
- list.add( tuple );
+ public void addJoinedTuple(ReteTuple joined) {
+ this.list.add( new LinkedListEntry( joined ) );
}
public void propagateRetractTuple(final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- for ( Iterator it = this.list.iterator(); it.hasNext(); ) {
- ReteTuple joined = (ReteTuple) it.next();
+ for ( LinkedListNode node = this.list.getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple joined = (ReteTuple) ((LinkedListEntry) node).getObject();
joined.retractTuple( context,
workingMemory );
}
@@ -87,20 +88,20 @@
public void propagateModifyTuple(final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- for ( Iterator it = this.list.iterator(); it.hasNext(); ) {
- ReteTuple joined = (ReteTuple) it.next();
+ for ( LinkedListNode node = this.list.getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple joined = (ReteTuple) ((LinkedListEntry) node).getObject();
joined.modifyTuple( context,
workingMemory );
}
}
public ReteTuple getTupleForSink(TupleSink sink) {
- for ( Iterator it = this.list.iterator(); it.hasNext(); ) {
- ReteTuple joined = (ReteTuple) it.next();
- if ( sink.equals( joined.getTupleSink() ) ) {
+ for ( LinkedListNode node = this.list.getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple joined = (ReteTuple) ((LinkedListEntry) node).getObject();
+ if ( sink.equals( joined.getTupleSink() ) ) {
return joined;
}
- }
+ }
return null;
}
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 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -9,7 +9,7 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
import org.drools.util.LinkedList;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
public class CompositeTupleSinkAdapter implements TupleSinkPropagator {
private TupleSinkNodeList sinks;
@@ -30,16 +30,12 @@
InternalFactHandle handle,
TupleMatch tupleMatch,
PropagationContext context,
- InternalWorkingMemory workingMemory) {
- TupleSinkNode sink = this.sinks.getFirst();
- ReteTuple joined = new ReteTuple(tuple, handle, (TupleSink) sink );
- tupleMatch.addJoinedTuple( joined );
- joined.assertTuple( context, workingMemory );
+ InternalWorkingMemory workingMemory) {
- for ( sink = sink.getNextTupleSinkNode();sink != null; sink = sink.getNextTupleSinkNode() ) {
- ReteTuple cloned = new ReteTuple(joined, sink);
- tupleMatch.addJoinedTuple( cloned );
- cloned.assertTuple( context, 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 );
}
}
@@ -47,9 +43,8 @@
PropagationContext context,
InternalWorkingMemory workingMemory) {
for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
- final ReteTuple child = new ReteTuple( tuple, sink );
- // no TupleMatch so instead add as a linked tuple
- tuple.addLinkedTuple( new LinkedListObjectWrapper( child ) );
+ ReteTuple child = new ReteTuple( tuple, sink);
+ tuple.addChildEntry( child );
child.assertTuple( context, workingMemory );
}
}
@@ -60,7 +55,7 @@
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 LinkedListObjectWrapper( tuple ) );
+ list.add( new LinkedListEntry( tuple ) );
tuple.assertTuple( context, workingMemory );
}
return list;
@@ -83,8 +78,8 @@
final TupleSink sink = sinks.getLast();
final ReteTuple tuple = new ReteTuple( tupleMatch.getTuple(),
- tupleMatch.getObjectMatches().getFactHandle(),
- sink );
+ tupleMatch.getObjectMatches().getFactHandle(),
+ sink );
tupleMatch.addJoinedTuple( tuple );
tuple.assertTuple( context, workingMemory );
}
@@ -95,7 +90,7 @@
InternalWorkingMemory workingMemory) {
TupleSink sink = this.sinks.getLast();
ReteTuple tuple = new ReteTuple( handle, sink );
- list.add( new LinkedListObjectWrapper( tuple ) );
+ list.add( new LinkedListEntry( tuple ) );
tuple.assertTuple( context, workingMemory );
}
@@ -117,9 +112,9 @@
for ( final Iterator it = memory.values().iterator(); it.hasNext(); ) {
final LinkedList tuples = (LinkedList) it.next();
- LinkedListObjectWrapper wrapper = (LinkedListObjectWrapper) tuples.getFirst();
+ LinkedListEntry wrapper = (LinkedListEntry) tuples.getFirst();
for ( int i = 0; i < index; i++ ) {
- wrapper = (LinkedListObjectWrapper) wrapper.getNext();
+ wrapper = (LinkedListEntry) wrapper.getNext();
}
propagatedTuples.add( wrapper.getObject() );
}
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -28,7 +28,7 @@
import org.drools.rule.EvalCondition;
import org.drools.spi.PropagationContext;
import org.drools.util.LinkedList;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
/**
* Node which filters <code>ReteTuple</code>s.
@@ -208,7 +208,7 @@
final ReteTuple tuple = (ReteTuple) it.next();
final ReteTuple child = new ReteTuple( tuple );
// no TupleMatch so instead add as a linked tuple
- tuple.addLinkedTuple( new LinkedListObjectWrapper( child ) );
+ tuple.addLinkedTuple( new LinkedListEntry( child ) );
((TupleSink) getTupleSinks().get( getTupleSinks().size() - 1 )).assertTuple( child,
context,
workingMemory );
@@ -276,9 +276,9 @@
final ReteTuple leftTuple = (ReteTuple) it.next();
final LinkedList linkedTuples = leftTuple.getLinkedTuples();
- LinkedListObjectWrapper wrapper = (LinkedListObjectWrapper) linkedTuples.getFirst();
+ LinkedListEntry wrapper = (LinkedListEntry) linkedTuples.getFirst();
for ( int i = 0; i < index; i++ ) {
- wrapper = (LinkedListObjectWrapper) wrapper.getNext();
+ wrapper = (LinkedListEntry) wrapper.getNext();
}
propagatedTuples.add( wrapper.getObject() );
}
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -6,7 +6,7 @@
import org.drools.RuleBaseConfiguration;
import org.drools.common.BaseNode;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -28,19 +28,19 @@
private DataProvider dataProvider;
private TupleSource tupleSource;
private FieldConstraint[] constraints;
- private BetaNodeBinder binder;
+ private BetaNodeConstraints binder;
public FromNode(final int id,
final DataProvider dataProvider,
final TupleSource tupleSource,
final FieldConstraint[] constraints,
- final BetaNodeBinder binder) {
+ final BetaNodeConstraints binder) {
super( id );
this.dataProvider = dataProvider;
this.tupleSource = tupleSource;
this.constraints = constraints;
if ( binder == null ) {
- this.binder = new BetaNodeBinder();
+ this.binder = new BetaNodeConstraints();
} else {
this.binder = binder;
}
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -22,7 +22,7 @@
import java.util.List;
import java.util.Map;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
@@ -81,7 +81,7 @@
JoinNode(final int id,
final TupleSource leftInput,
final ObjectSource rightInput,
- final BetaNodeBinder binder) {
+ final BetaNodeConstraints binder) {
super( id,
leftInput,
rightInput,
@@ -114,7 +114,7 @@
memory.add( workingMemory,
leftTuple );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.rightObjectIterator( workingMemory,
leftTuple ); it.hasNext(); ) {
@@ -160,7 +160,7 @@
final ObjectMatches objectMatches = memory.add( workingMemory,
handle );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.leftTupleIterator( workingMemory,
handle ); it.hasNext(); ) {
final ReteTuple leftTuple = (ReteTuple) it.next();
@@ -268,7 +268,7 @@
// ensure the tuple is at the top of the memory
memory.add( workingMemory,
leftTuple );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator rightIterator = memory.rightObjectIterator( workingMemory,
leftTuple ); rightIterator.hasNext(); ) {
@@ -335,7 +335,7 @@
objectMatches );
TupleMatch tupleMatch = objectMatches.getFirstTupleMatch();
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.leftTupleIterator( workingMemory,
handle ); it.hasNext(); ) {
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 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -25,8 +24,7 @@
import org.drools.RuleBaseConfiguration;
import org.drools.common.BaseNode;
-import org.drools.common.BetaNodeBinder;
-import org.drools.common.DefaultFactHandle;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
@@ -35,7 +33,7 @@
import org.drools.spi.PropagationContext;
import org.drools.util.LinkedList;
import org.drools.util.LinkedListNode;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
/**
* All asserting Facts must propagated into the right <code>ObjectSink</code> side of a BetaNode, if this is the first Column
@@ -57,7 +55,7 @@
*/
private static final long serialVersionUID = 320L;
private final ObjectSource objectSource;
- private final BetaNodeBinder binder;
+ private final BetaNodeConstraints binder;
/**
* Constructus a LeftInputAdapterNode with a unique id that receives <code>FactHandle</code> from a
@@ -89,7 +87,7 @@
*/
public LeftInputAdapterNode(final int id,
final ObjectSource source,
- final BetaNodeBinder binder) {
+ final BetaNodeConstraints binder) {
super( id );
this.objectSource = source;
this.binder = binder;
@@ -167,9 +165,9 @@
// 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 );
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
+ tuple.retractTuple( context,
+ workingMemory );
}
}
}
@@ -187,9 +185,9 @@
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 tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
+ tuple.modifyTuple( context,
+ workingMemory );
}
} else {
// didn't existed, so propagate as an assert
@@ -203,9 +201,9 @@
if ( list != null ) {
for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple reteTuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
- reteTuple.retractTuple( context,
- workingMemory );
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
+ tuple.retractTuple( context,
+ workingMemory );
}
}
}
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 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -22,14 +22,14 @@
import java.util.List;
import java.util.Map;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
import org.drools.util.LinkedList;
import org.drools.util.LinkedListNode;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
/**
* <code>NotNode</code> extends <code>BetaNode</code> to perform tests for
@@ -52,7 +52,7 @@
/**
*
*/
- private static final long serialVersionUID = 5876745507400274713L;
+ private static final long serialVersionUID = 320L;
static int notAssertObject = 0;
static int notAssertTuple = 0;
@@ -74,7 +74,7 @@
super( id,
leftInput,
rightInput,
- new BetaNodeBinder() );
+ new BetaNodeConstraints() );
}
/**
@@ -88,7 +88,7 @@
NotNode(final int id,
final TupleSource leftInput,
final ObjectSource rightInput,
- final BetaNodeBinder joinNodeBinder) {
+ final BetaNodeConstraints joinNodeBinder) {
super( id,
leftInput,
rightInput,
@@ -115,7 +115,7 @@
memory.add( workingMemory,
leftTuple );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.rightObjectIterator( workingMemory,
leftTuple ); it.hasNext(); ) {
@@ -156,7 +156,7 @@
final ObjectMatches objectMatches = memory.add( workingMemory,
handle );
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.leftTupleIterator( workingMemory,
handle ); it.hasNext(); ) {
@@ -168,9 +168,8 @@
binder,
workingMemory );
if ( previousSize == 0 && leftTuple.matchesSize() != 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.retractTuple( context,
workingMemory );
}
@@ -204,12 +203,7 @@
leftTuple.removeMatch( handle );
if ( previousSize != 0 && leftTuple.matchesSize() == 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
- tuple.assertTuple( context,
- workingMemory );
- }
+ this.sink.propagateAssertTuple( leftTuple, context, workingMemory );
}
}
}
@@ -240,9 +234,8 @@
tupleMatch.getObjectMatches().remove( tupleMatch );
}
} else {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.removeFirst(); node != null; node = list.getFirst() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.retractTuple( context,
workingMemory );
}
@@ -269,7 +262,7 @@
leftTuple.getTupleMatches().clear();
final int previous = oldMatches.size();
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator rightIterator = memory.rightObjectIterator( workingMemory,
leftTuple ); rightIterator.hasNext(); ) {
@@ -306,9 +299,8 @@
}
if ( previous == 0 && leftTuple.matchesSize() == 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.modifyTuple( context,
workingMemory );
}
@@ -317,9 +309,8 @@
context,
workingMemory );
} else if ( previous == 0 && leftTuple.matchesSize() != 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.retractTuple( context,
workingMemory );
}
@@ -338,7 +329,7 @@
objectMatches );
TupleMatch tupleMatch = objectMatches.getFirstTupleMatch();
- final BetaNodeBinder binder = getJoinNodeBinder();
+ final BetaNodeConstraints binder = getJoinNodeBinder();
for ( final Iterator it = memory.leftTupleIterator( workingMemory,
handle ); it.hasNext(); ) {
@@ -356,9 +347,8 @@
objectMatches.remove( tupleMatch );
}
if ( previous == 0 && leftTuple.matchesSize() == 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.modifyTuple( context,
workingMemory );
}
@@ -367,9 +357,8 @@
context,
workingMemory );
} else if ( previous == 0 && leftTuple.matchesSize() != 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.retractTuple( context,
workingMemory );
}
@@ -385,9 +374,8 @@
binder,
workingMemory );
if ( previousSize == 0 && leftTuple.matchesSize() != 0 ) {
- LinkedList list = leftTuple.getLinkedTuples();
- for ( LinkedListNode node = list.getFirst(); node != null; node = node.getNext() ) {
- ReteTuple tuple = (ReteTuple) ((LinkedListObjectWrapper) node).getObject();
+ for ( LinkedListNode node = leftTuple.getChildEntries().getFirst(); node != null; node = node.getNext() ) {
+ ReteTuple tuple = (ReteTuple) ((LinkedListEntry) node).getObject();
tuple.retractTuple( context,
workingMemory );
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -1,319 +0,0 @@
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.reteoo;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.FactHandle;
-import org.drools.common.DefaultFactHandle;
-import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.rule.Declaration;
-import org.drools.spi.Activation;
-import org.drools.spi.PropagationContext;
-import org.drools.spi.Tuple;
-import org.drools.util.BaseMultiLinkedListNode;
-import org.drools.util.LinkedList;
-import org.drools.util.LinkedListNode;
-
-/**
- * Rete-OO <code>Tuple</code> implementation. A <code>ReteTuple</code> implements <code>LinkedListNode</code> so that it can referenced
- * in a <code>LinkedList<code>, this allows for fast removal, without searching; as <code>ReteTuple</code>s are add sequentially to a nodes
- * memory (<code>LinkedList</code>), but removed randomly.
- *
- * Each <code>ReteTuple</code> has a <code>Map</code> of matches. The key is the matching <code>FactHandleImpl</code> and the value
- * is the <code>TupleMatch</code>, which is also referenced in the <code>ObjectMatches</code> <code>LinkedList</code>.
- * <p>
- * Each <code>ReteTuple</code> also reference a <code>TupleKey</code> which is special array of FactHandles
- * representing the <code>Column</code>s in a <code>Rule</code>. The <code>TupleKey</code> also provide the
- * hashCode implementation for <code>ReteTuple</code>.
- *
- * @see Tuple
- * @see CompositeTupleMatch
- * @see TupleKey
- *
- * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
- * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
- */
-public class ReteTuple extends BaseMultiLinkedListNode
- implements
- Tuple,
- Serializable {
- // ------------------------------------------------------------
- // Instance members
- // ------------------------------------------------------------
-
- /**
- *
- */
- private static final long serialVersionUID = 320;
-
- /** The </code>TupleKey</code> */
- private final TupleKey key;
-
- private final TupleSink sink;
-
- /** The <code>Map</code> of <code>FactHandleImpl</code> matches */
- private Map matches = Collections.EMPTY_MAP;
-
- /** The resuling propagation when used in a <code>NotNode</code> */
- private LinkedList linkedTuples;
-
- private Activation activation;
-
- // ------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------
- /**
- * Creates a <code>ReteTuple</code> with the handle at the specified column in the <code>TupleKey</code>.
- *
- * @param column
- * The column position of the handle in the <code>TupleKey</code>
- * @param handle
- * The <code>FactHandleImpl</code> to be placed in the <code>TupleKey</code> at the given column position.
- * @param workingMemory
- * The <code>WorkingMemory</code> session.
- */
- public ReteTuple(final InternalFactHandle handle, final TupleSink sink) {
- this.key = new TupleKey( handle );
- this.sink = sink;
- }
-
- /**
- * Creates a copy of the passed <code>ReteTuple</code>.
- *
- * @param tuple
- */
- public ReteTuple(final ReteTuple tuple, final TupleSink sink) {
- this.key = new TupleKey( tuple.key );
- this.sink = sink;
- }
-
- /**
- * Merges the left <code>ReteTuple</code> with the right <code>FactHandleImpl</code>.
- *
- * @param left
- * The <code>ReteTuple</code> to be joined.
- * @param handle
- * the <code>FactHandleImpl</code> to be joined.
- */
- public ReteTuple(final ReteTuple left,
- final InternalFactHandle handle, final TupleSink sink) {
- this.key = new TupleKey( left.key,
- handle );
- this.sink = sink;
- }
-
- // ------------------------------------------------------------
- // Instance methods
- // ------------------------------------------------------------
-
- /**
- * Retrieve the key for this tuple.
- *
- * @return The key.
- */
- TupleKey getKey() {
- return this.key;
- }
-
- public long getRecency() {
- return this.key.getRecency();
- }
-
- /* (non-Javadoc)
- * @see org.drools.spi.Tuple#getFactHandles()
- */
- public InternalFactHandle[] getFactHandles() {
- return this.key.getFactHandles();
- }
-
- /**
- * Determine if this tuple depends upon a specified object.
- *
- * @param handle
- * The object handle to test.
- *
- * @return <code>true</code> if this tuple depends upon the specified
- * object, otherwise <code>false</code>.
- */
- public boolean dependsOn(final FactHandle handle) {
- return this.key.containsFactHandle( handle );
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- /* (non-Javadoc)
- * @see org.drools.spi.Tuple#get(int)
- */
- public InternalFactHandle get(final int col) {
- return this.key.get( col );
- }
-
- /* (non-Javadoc)
- * @see org.drools.spi.Tuple#get(org.drools.rule.Declaration)
- */
- public InternalFactHandle get(final Declaration declaration) {
- return get( declaration.getColumn().getFactIndex() );
- }
-
- public void setActivation(final Activation activation) {
- this.activation = activation;
- }
-
- public Activation getActivation() {
- return this.activation;
- }
-
- /**
- * Specifies the tuple as the result of <code>NotNode</code> propagation.
- *
- * @param tuple
- * The <code>ReteTuple</code>
- */
- public void addLinkedTuple(final LinkedListNode node) {
- if ( this.linkedTuples == null ) {
- this.linkedTuples = new LinkedList();
- }
- this.linkedTuples.add( node );
- }
-
- /**
- * Returns the tuple from the result of <code>NotNode</code> propagation. If there has been no
- * <code>NotNode</code> propagation then it returns null.
- *
- * @return
- * The <code>ReteTuple</code>
- */
- public LinkedList getLinkedTuples() {
- return this.linkedTuples;
- }
-
- public void clearLinkedTuple() {
- this.linkedTuples.clear();
- }
-
- public void clearTupleMatches() {
- this.matches.clear();
- }
-
- public void addTupleMatch(final InternalFactHandle handle,
- final TupleMatch node) {
- if ( this.matches == Collections.EMPTY_MAP ) {
- this.matches = new HashMap(2);
- }
- this.matches.put( handle,
- node );
- }
-
- public int matchesSize() {
- return this.matches.size();
- }
-
- public Map getTupleMatches() {
- return this.matches;
- }
-
- public TupleMatch getTupleMatch(final DefaultFactHandle handle) {
- return (TupleMatch) this.matches.get( handle );
- }
-
- public CompositeTupleMatch removeMatch(final InternalFactHandle handle) {
- return (CompositeTupleMatch) this.matches.remove( handle );
- }
-
- // public void remove(PropagationContext context,
- // WorkingMemoryImpl workingMemory) {
- // if ( this.callback != null ) {
- // this.callback.retract( this,
- // context,
- // workingMemory );
- // }
- //
- // if ( !this.matches.isEmpty() ) {
- // for ( Iterator it = this.matches.values().iterator(); it.hasNext(); ) {
- // TupleMatch node = (TupleMatch) it.next();
- // if ( node != null && node.getJoinedTuple() != null ) {
- // node.getJoinedTuple().remove( context,
- // workingMemory );
- // }
- // node.remove( context,
- // workingMemory );
- // }
- // }
- //
- // if ( previous != null ) {
- // this.previous.setNext( this.next );
- // if ( this.next != null ) {
- // this.next.setPrevious( this.previous );
- // }
- // }
- //
- // this.previous = null;
- // this.next = null;
- // this.matches = null;
- // }
-
- public boolean equals(final Object object) {
- if ( this == object ) {
- return true;
- }
-
- if ( object == null || !(object instanceof ReteTuple) ) {
- return false;
- }
-
- return this.key.equals( ((ReteTuple) object).key );
- }
-
- public int hashCode() {
- return this.key.hashCode();
- }
-
- public String toString() {
- final StringBuffer buffer = new StringBuffer();
- for ( int i = 0; i < this.key.size(); i++ ) {
- buffer.append( this.key.get( i ) + ", " );
- }
- return buffer.toString();
- }
-
- public void assertTuple(PropagationContext context,
- InternalWorkingMemory workingMemory) {
- this.sink.assertTuple( this, context, workingMemory );
-
- }
-
- public void modifyTuple(PropagationContext context,
- InternalWorkingMemory workingMemory) {
- this.sink.modifyTuple( this, context, workingMemory );
-
- }
-
- public void retractTuple(PropagationContext context,
- InternalWorkingMemory workingMemory) {
- this.sink.retractTuple( this, context, workingMemory );
- }
-
- public TupleSink getTupleSink() {
- return this.sink;
- }
-
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -33,7 +33,7 @@
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.BaseNode;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.InstanceEqualsConstraint;
import org.drools.common.InstanceNotEqualsConstraint;
import org.drools.rule.Accumulate;
@@ -252,7 +252,7 @@
continue;
}
- BetaNodeBinder binder = null;
+ BetaNodeConstraints binder = null;
Column column = null;
if ( object instanceof Column ) {
@@ -366,7 +366,7 @@
alphaNodeSource ) );
}
- private BetaNodeBinder attachColumn(final Column column,
+ private BetaNodeConstraints attachColumn(final Column column,
final GroupElement parent,
final boolean removeIdentities) throws InvalidPatternException {
// Adjusting offset in case a previous Initial-Fact was added to the network
@@ -383,12 +383,12 @@
final List predicates = attachAlphaNodes( column,
removeIdentities );
- BetaNodeBinder binder;
+ BetaNodeConstraints binder;
if ( !predicates.isEmpty() ) {
- binder = new BetaNodeBinder( (FieldConstraint[]) predicates.toArray( new FieldConstraint[predicates.size()] ) );
+ binder = new BetaNodeConstraints( (FieldConstraint[]) predicates.toArray( new FieldConstraint[predicates.size()] ) );
} else {
- binder = new BetaNodeBinder();
+ binder = new BetaNodeConstraints();
}
return binder;
@@ -449,7 +449,7 @@
private void attachNot(final TupleSource tupleSource,
final Not not,
final ObjectSource ObjectSource,
- final BetaNodeBinder binder,
+ final BetaNodeConstraints binder,
final Column column) {
final NotNode notNode = (NotNode) attachNode( new NotNode( this.id++,
tupleSource,
@@ -463,7 +463,7 @@
attachNot( tupleSource,
(Not) not.getChild(),
adapter,
- new BetaNodeBinder(),
+ new BetaNodeConstraints(),
column );
} else if ( not.getChild() instanceof Exists ) {
final RightInputAdapterNode adapter = (RightInputAdapterNode) attachNode( new RightInputAdapterNode( this.id++,
@@ -472,7 +472,7 @@
attachExists( tupleSource,
(Exists) not.getChild(),
adapter,
- new BetaNodeBinder(),
+ new BetaNodeConstraints(),
column );
} else {
this.tupleSource = notNode;
@@ -482,7 +482,7 @@
private void attachExists(final TupleSource tupleSource,
final Exists exists,
final ObjectSource ObjectSource,
- final BetaNodeBinder binder,
+ final BetaNodeConstraints binder,
final Column column) {
NotNode notNode = (NotNode) attachNode( new NotNode( this.id++,
tupleSource,
@@ -492,7 +492,7 @@
column.getFactIndex(),
notNode ) );
- BetaNodeBinder identityBinder = new BetaNodeBinder( new InstanceEqualsConstraint( column.getFactIndex() ) );
+ BetaNodeConstraints identityBinder = new BetaNodeConstraints( new InstanceEqualsConstraint( column.getFactIndex() ) );
notNode = (NotNode) attachNode( new NotNode( this.id++,
tupleSource,
adapter,
@@ -505,7 +505,7 @@
attachNot( tupleSource,
(Not) exists.getChild(),
adapter,
- new BetaNodeBinder(),
+ new BetaNodeConstraints(),
column );
} else if ( exists.getChild() instanceof Exists ) {
adapter = (RightInputAdapterNode) attachNode( new RightInputAdapterNode( this.id++,
@@ -514,7 +514,7 @@
attachExists( tupleSource,
(Exists) exists.getChild(),
adapter,
- new BetaNodeBinder(),
+ new BetaNodeConstraints(),
column );
} else {
this.tupleSource = notNode;
@@ -613,12 +613,12 @@
}
}
- BetaNodeBinder binder;
+ BetaNodeConstraints binder;
if ( !predicateConstraints.isEmpty() ) {
- binder = new BetaNodeBinder( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+ binder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
} else {
- binder = new BetaNodeBinder();
+ binder = new BetaNodeConstraints();
}
this.tupleSource = attachNode( new FromNode( id++,
@@ -647,7 +647,7 @@
}
final Column sourceColumn = accumulate.getSourceColumn();
- final BetaNodeBinder sourceBinder = attachColumn( sourceColumn,
+ final BetaNodeConstraints sourceBinder = attachColumn( sourceColumn,
parent,
true );
@@ -688,11 +688,11 @@
}
}
- BetaNodeBinder resultsBinder = null;
+ BetaNodeConstraints resultsBinder = null;
if ( !predicateConstraints.isEmpty() ) {
- resultsBinder = new BetaNodeBinder( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+ resultsBinder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
} else {
- resultsBinder = new BetaNodeBinder();
+ resultsBinder = new BetaNodeConstraints();
}
this.tupleSource = attachNode( new AccumulateNode( id++,
@@ -722,7 +722,7 @@
}
final Column sourceColumn = collect.getSourceColumn();
- final BetaNodeBinder sourceBinder = attachColumn( sourceColumn,
+ final BetaNodeConstraints sourceBinder = attachColumn( sourceColumn,
parent,
true );
@@ -763,11 +763,11 @@
}
}
- BetaNodeBinder resultsBinder = null;
+ BetaNodeConstraints resultsBinder = null;
if ( !predicateConstraints.isEmpty() ) {
- resultsBinder = new BetaNodeBinder( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+ resultsBinder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
} else {
- resultsBinder = new BetaNodeBinder();
+ resultsBinder = new BetaNodeConstraints();
}
this.tupleSource = attachNode( new CollectNode( id++,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -87,7 +87,7 @@
public void modifyObject(final FactHandle factHandle,
final Object object,
final Rule rule,
- final Activation activation) throws FactException {
+ final Activation activation) throws FactException {
try {
this.lock.lock();
final int status = ((InternalFactHandle) factHandle).getEqualityKey().getStatus();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleMatch.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleMatch.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleMatch.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -18,7 +18,9 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
+import org.drools.spi.Tuple;
import org.drools.util.AbstractBaseLinkedListNode;
+import org.drools.util.LinkedListEntry;
/**
* <code>TupleMatch</code> maintains a reference to the parent <code>ReteTuple</code> and a <code>List</code> of all resulting joins.
@@ -36,9 +38,9 @@
*/
public class SingleTupleMatch extends AbstractBaseLinkedListNode implements TupleMatch {
private ReteTuple tuple;
+
+ private ReteTuple joined;
- private ReteTuple child;
-
private ObjectMatches objectMatches;
/**
@@ -72,7 +74,7 @@
* @see org.drools.reteoo.ITupleMatch#addJoinedTuple(org.drools.reteoo.ReteTuple)
*/
public void addJoinedTuple(final ReteTuple tuple) {
- this.child = tuple;
+ this.joined = tuple;
}
/* (non-Javadoc)
@@ -80,7 +82,7 @@
*/
public void propagateRetractTuple(final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- this.child.retractTuple( context, workingMemory );
+ this.joined.retractTuple( context, workingMemory );
}
/* (non-Javadoc)
@@ -88,14 +90,14 @@
*/
public void propagateModifyTuple(final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- this.child.modifyTuple( context, workingMemory );
+ this.joined.modifyTuple( context, workingMemory );
}
/* (non-Javadoc)
* @see org.drools.reteoo.ITupleMatch#getTupleForSink(org.drools.reteoo.TupleSink)
*/
public ReteTuple getTupleForSink(TupleSink sink) {
- return this.child;
+ return this.joined;
}
}
\ No newline at end of file
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 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -9,7 +9,7 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
import org.drools.util.LinkedList;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
public class SingleTupleSinkAdapter
implements
@@ -34,12 +34,12 @@
}
public LinkedList createAndAssertTuple(InternalFactHandle handle,
- PropagationContext context,
- InternalWorkingMemory workingMemory) {
+ PropagationContext context,
+ InternalWorkingMemory workingMemory) {
final LinkedList list = new LinkedList();
ReteTuple tuple = new ReteTuple( handle,
sink );
- list.add( new LinkedListObjectWrapper( tuple ) );
+ list.add( new LinkedListEntry( tuple ) );
tuple.assertTuple( context,
workingMemory );
return list;
@@ -51,7 +51,7 @@
final ReteTuple child = new ReteTuple( tuple,
sink );
// no TupleMatch so instead add as a linked tuple
- tuple.addLinkedTuple( new LinkedListObjectWrapper( child ) );
+ tuple.addChildEntry( child );
child.assertTuple( context,
workingMemory );
}
@@ -83,12 +83,12 @@
for ( final Iterator it = memory.values().iterator(); it.hasNext(); ) {
final LinkedList tuples = (LinkedList) it.next();
- propagatedTuples.add( ((LinkedListObjectWrapper) tuples.getFirst()).getObject() );
+ propagatedTuples.add( ((LinkedListEntry) tuples.getFirst()).getObject() );
}
return propagatedTuples;
}
-
+
public int size() {
return 1;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -34,6 +34,7 @@
import org.drools.spi.AgendaGroup;
import org.drools.spi.Duration;
import org.drools.spi.PropagationContext;
+import org.drools.spi.Tuple;
/**
* Leaf Rete-OO node responsible for enacting <code>Action</code> s on a
@@ -99,9 +100,9 @@
// org.drools.impl.TupleSink
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- public void assertTuple(final ReteTuple tuple,
+ public void assertTuple(ReteTuple tuple,
final PropagationContext context,
- final InternalWorkingMemory workingMemory) {
+ final InternalWorkingMemory workingMemory) {
assertTuple( tuple,
context,
workingMemory,
@@ -123,6 +124,10 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory,
final boolean fireActivationCreated) {
+ //we only have to clone the head fact to make sure the graph is not affected during consequence reads after a modify
+ ReteTuple cloned = new ReteTuple( tuple );
+
+
// if the current Rule is no-loop and the origin rule is the same then
// return
if ( this.rule.getNoLoop() && this.rule.equals( context.getRuleOrigin() ) ) {
@@ -134,7 +139,7 @@
if ( dur != null && dur.getDuration( tuple ) > 0 ) {
final ScheduledAgendaItem item = new ScheduledAgendaItem( context.getPropagationNumber(),
- tuple,
+ cloned,
agenda,
context,
this.rule );
@@ -186,7 +191,7 @@
}
final AgendaItem item = new AgendaItem( context.getPropagationNumber(),
- tuple,
+ cloned,
context,
this.rule );
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 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleMatch.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -2,16 +2,19 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
+import org.drools.spi.Tuple;
import org.drools.util.LinkedListNode;
-public interface TupleMatch extends LinkedListNode {
+public interface TupleMatch
+ extends
+ LinkedListNode {
/**
* Return the parent <code>ReteTuple</code>
*
* @return the <code>ReteTuple</code>
*/
- public abstract ReteTuple getTuple();
+ public ReteTuple getTuple();
/**
* Returns the referenced <code>ObjectMatches</code> which provides the
@@ -19,21 +22,21 @@
*
* @return the <code>ObjectMatches</code>
*/
- public abstract ObjectMatches getObjectMatches();
+ public ObjectMatches getObjectMatches();
/**
* Adds a resulting join to the <code>List</code>. A join is made for each <code>TupleSink</code>.
*
* @param tuple
*/
- public abstract void addJoinedTuple(final ReteTuple tuple);
+ public void addJoinedTuple(final ReteTuple tuple);
- public abstract void propagateRetractTuple(final PropagationContext context,
- final InternalWorkingMemory workingMemory);
+ public void propagateRetractTuple(final PropagationContext context,
+ final InternalWorkingMemory workingMemory);
- public abstract void propagateModifyTuple(final PropagationContext context,
- final InternalWorkingMemory workingMemory);
+ public void propagateModifyTuple(final PropagationContext context,
+ final InternalWorkingMemory workingMemory);
- public abstract ReteTuple getTupleForSink(TupleSink sink);
+ public ReteTuple getTupleForSink(TupleSink sink);
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -56,7 +56,5 @@
void modifyTuple(ReteTuple tuple,
PropagationContext context,
InternalWorkingMemory workingMemory);
-
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -21,13 +21,13 @@
import java.util.List;
import org.drools.common.BaseNode;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.PropagationContext;
import org.drools.util.LinkedList;
import org.drools.util.LinkedListNode;
-import org.drools.util.LinkedListObjectWrapper;
+import org.drools.util.LinkedListEntry;
/**
* A source of <code>ReteTuple</code> s for a <code>TupleSink</code>.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -21,7 +21,7 @@
import org.drools.RuleBaseConfiguration;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
-import org.drools.common.BetaNodeBinder;
+import org.drools.common.BetaNodeConstraints;
import org.drools.common.InstanceEqualsConstraint;
import org.drools.rule.VariableConstraint;
import org.drools.spi.FieldConstraint;
@@ -49,7 +49,7 @@
* @return the newly created BetaLeftMemory
*/
public static BetaLeftMemory newLeftMemory(final RuleBaseConfiguration config,
- final BetaNodeBinder binder) {
+ final BetaNodeConstraints binder) {
BetaLeftMemory memory = null;
BetaLeftMemory innerMostMemory = null;
final FieldConstraint[] constraints = (binder != null) ? binder.getConstraints() : null;
@@ -109,7 +109,7 @@
* @return the newly created BetaRightMemory
*/
public static BetaRightMemory newRightMemory(final RuleBaseConfiguration config,
- final BetaNodeBinder binder) {
+ final BetaNodeConstraints binder) {
BetaRightMemory memory = null;
BetaRightMemory innerMostMemory = null;
final FieldConstraint[] constraints = (binder != null) ? binder.getConstraints() : null;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaRightMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaRightMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -23,7 +23,7 @@
import org.drools.WorkingMemory;
import org.drools.reteoo.ObjectMatches;
-import org.drools.reteoo.ReteTuple;
+import org.drools.spi.Tuple;
import org.drools.util.MultiLinkedListNodeWrapper;
/**
@@ -93,7 +93,7 @@
* @return
*/
public Iterator iterator(WorkingMemory workingMemory,
- ReteTuple tuple);
+ Tuple tuple);
/**
* Returns an iterator that allows to iterate over all the ObjectMatches
@@ -125,7 +125,7 @@
* @param handle
*/
public void selectPossibleMatches(WorkingMemory workingMemory,
- ReteTuple tuple);
+ Tuple tuple);
/**
* Returns true if the matches is a possible match to the tuple
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -27,6 +27,7 @@
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
+import org.drools.spi.Tuple;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNode;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -117,7 +118,7 @@
*/
public final void add(final WorkingMemory workingMemory,
final MultiLinkedListNodeWrapper tuple) {
- final boolean partition = ((Boolean) this.declaration.getValue( ((ReteTuple) tuple.getNode()).get( this.column.getFactIndex() ).getObject() )).booleanValue();
+ final boolean partition = ((Boolean) this.declaration.getValue( ((Tuple) tuple.getNode()).get( this.column.getFactIndex() ).getObject() )).booleanValue();
if ( partition == true ) {
this.trueList.add( tuple );
} else {
@@ -217,19 +218,19 @@
return new Iterator() {
Iterator trueIt = BooleanConstrainedLeftMemory.this.trueList.iterator();
Iterator falseIt = BooleanConstrainedLeftMemory.this.falseList.iterator();
- ReteTuple currentTrue = null;
- ReteTuple currentFalse = null;
- ReteTuple current = null;
- ReteTuple next = null;
+ Tuple currentTrue = null;
+ Tuple currentFalse = null;
+ Tuple current = null;
+ Tuple next = null;
public final boolean hasNext() {
boolean hasnext = false;
if ( this.next == null ) {
if ( (this.currentTrue == null) && (this.trueIt.hasNext()) ) {
- this.currentTrue = (ReteTuple) this.trueIt.next();
+ this.currentTrue = (Tuple) this.trueIt.next();
}
if ( (this.currentFalse == null) && (this.falseIt.hasNext()) ) {
- this.currentFalse = (ReteTuple) this.falseIt.next();
+ this.currentFalse = (Tuple) this.falseIt.next();
}
if ( (this.currentTrue != null) && (this.currentFalse != null) ) {
if ( this.currentTrue.getRecency() <= this.currentFalse.getRecency() ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedRightMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedRightMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -25,11 +25,11 @@
import org.drools.base.evaluators.Operator;
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.ObjectMatches;
-import org.drools.reteoo.ReteTuple;
import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
+import org.drools.spi.Tuple;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -153,7 +153,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#iterator(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final Iterator iterator(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
this.selectPossibleMatches( workingMemory,
tuple );
final Iterator iterator = new Iterator() {
@@ -215,7 +215,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#selectPossibleMatches(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
boolean select = ((Boolean) this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() )).booleanValue();
select = (this.evaluator.getOperator()) == Operator.EQUAL ? select : !select;
this.selectedList = (select == true) ? this.trueList : this.falseList;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/DefaultRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/DefaultRightMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/DefaultRightMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -22,7 +22,7 @@
import org.drools.WorkingMemory;
import org.drools.reteoo.ObjectMatches;
-import org.drools.reteoo.ReteTuple;
+import org.drools.spi.Tuple;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -96,7 +96,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#iterator(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final Iterator iterator(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
return this.memory.iterator();
}
@@ -116,7 +116,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#selectPossibleMatches(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
// nothing to do
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/InstanceEqualConstrRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/InstanceEqualConstrRightMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/InstanceEqualConstrRightMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -26,7 +26,7 @@
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.ObjectMatches;
-import org.drools.reteoo.ReteTuple;
+import org.drools.spi.Tuple;
import org.drools.util.IdentityMap;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -132,7 +132,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#iterator(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final Iterator iterator(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
this.selectPossibleMatches( workingMemory,
tuple );
Iterator iterator = null;
@@ -159,7 +159,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#selectPossibleMatches(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Object select = tuple.get( this.column ).getObject();
this.selectedObject = this.memoryMap.get( select );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -31,6 +31,7 @@
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
+import org.drools.spi.Tuple;
import org.drools.util.LinkedList;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNode;
@@ -123,7 +124,7 @@
public final void add(final WorkingMemory workingMemory,
final MultiLinkedListNodeWrapper tuple) {
final MultiLinkedList list = this.getTupleBucket( workingMemory,
- (ReteTuple) tuple.getNode() );
+ (Tuple) tuple.getNode() );
// adding the wrapper instead of the node
list.add( tuple );
@@ -236,8 +237,8 @@
final TreeSet set = new TreeSet( new Comparator() {
public int compare(Object arg0,
Object arg1) {
- ReteTuple t0 = (ReteTuple) arg0;
- ReteTuple t1 = (ReteTuple) arg1;
+ Tuple t0 = (Tuple) arg0;
+ Tuple t1 = (Tuple) arg1;
return (t0.getRecency() <= t1.getRecency()) ? -1 : 1;
}
} );
@@ -285,7 +286,7 @@
* @return
*/
private final MultiLinkedList getTupleBucket(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Integer hash = getTupleHash( workingMemory,
tuple );
MultiLinkedList list = (MultiLinkedList) this.memoryMap.get( hash );
@@ -305,7 +306,7 @@
* @return
*/
private final Integer getTupleHash(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Object select = this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() );
final Integer hash = (select != null) ? new Integer( select.hashCode() ) : new Integer( 0 );
return hash;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -28,11 +28,11 @@
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.ObjectMatches;
-import org.drools.reteoo.ReteTuple;
import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
+import org.drools.spi.Tuple;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -167,7 +167,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#iterator(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final Iterator iterator(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
this.selectPossibleMatches( workingMemory,
tuple );
Iterator iterator = null;
@@ -232,7 +232,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#selectPossibleMatches(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Object select = this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() );
final Integer hash = (select != null) ? new Integer( select.hashCode() ) : new Integer( 0 );
this.selectedList = (MultiLinkedList) this.memoryMap.get( hash );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -28,6 +28,7 @@
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
+import org.drools.spi.Tuple;
import org.drools.util.LinkedList;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNode;
@@ -130,7 +131,7 @@
tuple.setChild( new MultiLinkedListNodeWrapper( tuple.getNode() ) );
final MultiLinkedList list = this.getTupleBucket( workingMemory,
- (ReteTuple) tuple.getNode() );
+ (Tuple) tuple.getNode() );
// adding the wrapper instead of the node
list.add( tuple.getChild() );
@@ -280,7 +281,7 @@
* @return
*/
private final MultiLinkedList getTupleBucket(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Object key = getTupleKey( workingMemory,
tuple );
MultiLinkedList list = (MultiLinkedList) this.memoryMap.get( key );
@@ -300,7 +301,7 @@
* @return
*/
private final Object getTupleKey(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Object select = this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() );
return select;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java 2006-09-13 21:34:53 UTC (rev 6215)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java 2006-09-14 02:53:26 UTC (rev 6216)
@@ -24,11 +24,11 @@
import org.drools.WorkingMemory;
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.ObjectMatches;
-import org.drools.reteoo.ReteTuple;
import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
+import org.drools.spi.Tuple;
import org.drools.util.MultiLinkedList;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -195,7 +195,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#iterator(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final Iterator iterator(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
this.selectPossibleMatches( workingMemory,
tuple );
final Iterator iterator = new Iterator() {
@@ -259,7 +259,7 @@
* @see org.drools.reteoo.beta.BetaRightMemory#selectPossibleMatches(org.drools.WorkingMemory, org.drools.reteoo.ReteTuple)
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
- final ReteTuple tuple) {
+ final Tuple tuple) {
final Object select = this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() );
final Integer hash = (select != null) ? new Integer( select.hashCode() ) : new Integer( 0 );
this.noMatchList = (MultiLinkedList) this.memoryMap.get( hash );
More information about the jboss-svn-commits
mailing list