[jboss-svn-commits] JBL Code SVN: r14956 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/reteoo and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Sep 9 00:04:25 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-09-09 00:04:25 -0400 (Sun, 09 Sep 2007)
New Revision: 14956
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.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/EvalConditionNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.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/ObjectSink.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.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/builder/AccumulateBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
Log:
JBRULES-1153 Accumulate/Collect can't be used in queries
-Node memory configuration is a bit better now, slowly gettier happier with the design. BaseNode no longer controls memory, instead ObjectSink and TupleSink have setter and getter methods for the node's memory.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -28,8 +28,6 @@
NetworkNode {
protected final int id;
- protected boolean hasMemory = false;
-
protected int sharedCount = 0;
/**
@@ -51,24 +49,6 @@
}
/**
- * Specifies with the node has any memory.
- *
- * @param hasMemory
- */
- protected void setHasMemory(final boolean hasMemory) {
- this.hasMemory = hasMemory;
- }
-
- /**
- *
- * Indicates whether the node has any memory.
- * @return
- */
- public boolean hasMemory() {
- return this.hasMemory;
- }
-
- /**
* Attaches the node into the network. Usually to the parent <code>ObjectSource</code> or <code>TupleSource</code>
*/
public abstract void attach();
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -69,7 +69,7 @@
this.resultConstraints = resultConstraints;
this.accumulate = accumulate;
this.unwrapRightObject = unwrapRightObject;
- this.hasLeftMemory = context.hasLeftMemory();
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -99,7 +99,7 @@
AccumulateResult accresult = new AccumulateResult();
- if ( this.hasLeftMemory ) {
+ if ( this.tupleMemoryEnabled ) {
memory.betaMemory.getTupleMemory().add( leftTuple );
memory.betaMemory.getCreatedHandles().put( leftTuple,
accresult,
@@ -210,7 +210,7 @@
final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
memory.betaMemory.getFactHandleMemory().add( handle );
- if ( ! this.hasLeftMemory ) {
+ if ( ! this.tupleMemoryEnabled ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -56,9 +56,11 @@
private ObjectSinkNode previousObjectSinkNode;
private ObjectSinkNode nextObjectSinkNode;
-
- private boolean memoryAllowed;
+ private boolean objectMemoryEnabled;
+
+ private boolean objectMemoryAllowed;
+
/**
* Construct an <code>AlphaNode</code> with a unique id using the provided
* <code>FieldConstraint</code> and the given <code>ObjectSource</code>.
@@ -79,8 +81,13 @@
objectSource,
context.getRuleBase().getConfiguration().getAlphaNodeHashingThreshold() );
this.constraint = constraint;
- setHasMemory( context.getRuleBase().getConfiguration().isAlphaMemory() );
- this.memoryAllowed = context.isAlphaMemoryAllowed();
+ this.objectMemoryAllowed = context.isAlphaMemoryAllowed();
+ if ( this.objectMemoryAllowed ) {
+ this.objectMemoryEnabled = context.getRuleBase().getConfiguration().isAlphaMemory();
+ } else {
+ this.objectMemoryEnabled = false;
+ }
+
}
/**
@@ -106,8 +113,8 @@
// we are attaching this node with existing working memories
// indicating that we are in a dynamic environment, that might benefit from alpha node memory, if allowed
- if ( this.memoryAllowed ) {
- setHasMemory( true );
+ if ( this.objectMemoryAllowed ) {
+ setObjectMemoryEnabled( true );
}
for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
final InternalWorkingMemory workingMemory = workingMemories[i];
@@ -126,12 +133,12 @@
final InternalWorkingMemory workingMemory) throws FactException {
if ( this.constraint.isAllowed( handle.getObject(),
workingMemory ) ) {
- if ( hasMemory() && !workingMemory.isSequential() ) {
+ if ( isObjectMemoryEnabled() ) {
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
memory.add( handle,
false );
}
-
+
this.sink.propagateAssertObject( handle,
context,
workingMemory );
@@ -142,7 +149,7 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
boolean propagate = true;
- if ( hasMemory() ) {
+ if ( isObjectMemoryEnabled() ) {
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
propagate = memory.remove( handle );
} else {
@@ -162,7 +169,7 @@
final InternalWorkingMemory workingMemory) {
FactHashTable memory = null;
- if ( !hasMemory() ) {
+ if ( !isObjectMemoryEnabled() ) {
// get the objects from the parent
this.objectSource.updateSink( sink,
context,
@@ -194,24 +201,32 @@
this.objectSource.remove( this,
workingMemories );
}
-
- public void setMemoryAllowed(boolean memoryAllowed) {
- this.memoryAllowed = memoryAllowed;
+
+ public void setObjectMemoryAllowed(boolean objectMemoryAllowed) {
+ this.objectMemoryAllowed = objectMemoryAllowed;
}
+ public boolean isObjectMemoryEnabled() {
+ return this.objectMemoryEnabled;
+ }
+
+ public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+ this.objectMemoryEnabled = objectMemoryEnabled;
+ }
+
/**
* Creates a HashSet for the AlphaNode's memory.
*/
public Object createMemory(final RuleBaseConfiguration config) {
return new FactHashTable();
}
-
+
/**
* @inheritDoc
*/
protected void addObjectSink(final ObjectSink objectSink) {
super.addObjectSink( objectSink );
- }
+ }
public String toString() {
return "[AlphaNode(" + this.id + ") constraint=" + this.constraint + "]";
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -66,7 +66,8 @@
private ObjectSinkNode previousObjectSinkNode;
private ObjectSinkNode nextObjectSinkNode;
- protected boolean hasLeftMemory = true;
+ protected boolean objectMemory = true; // hard coded to true
+ protected boolean tupleMemoryEnabled;
// ------------------------------------------------------------
// Constructors
@@ -85,7 +86,6 @@
final ObjectSource rightInput,
final BetaConstraints constraints) {
super( id );
- super.setHasMemory( true );
this.leftInput = leftInput;
this.rightInput = rightInput;
this.constraints = constraints;
@@ -175,10 +175,22 @@
}
- //public abstract TupleSink getTupleSink();
+ public boolean isObjectMemoryEnabled() {
+ return objectMemory;
+ }
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ public void setObjectMemoryEnabled(boolean objectMemory) {
+ this.objectMemory = objectMemory;
+ }
+
+ public boolean isTupleMemoryEnabled() {
+ return tupleMemoryEnabled;
+ }
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ this.tupleMemoryEnabled = tupleMemoryEnabled;
+ }
+
public String toString() {
return "";
}
@@ -209,7 +221,7 @@
final BetaNode other = (BetaNode) object;
- return this.getClass() == other.getClass() && this.hasLeftMemory == other.hasLeftMemory && this.leftInput.equals( other.leftInput ) && this.rightInput.equals( other.rightInput ) && this.constraints.equals( other.constraints );
+ return this.getClass() == other.getClass() && this.leftInput.equals( other.leftInput ) && this.rightInput.equals( other.rightInput ) && this.constraints.equals( other.constraints );
}
/**
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -84,7 +84,7 @@
this.resultConstraints = resultConstraints;
this.collect = collect;
this.unwrapRightObject = unwrapRight;
- this.hasLeftMemory = context.hasLeftMemory();
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -113,7 +113,7 @@
colresult.propagated = false;
// do not add tuple and result to the memory in sequential mode
- if ( this.hasLeftMemory ) {
+ if ( this.tupleMemoryEnabled ) {
memory.getTupleMemory().add( leftTuple );
memory.getCreatedHandles().put( leftTuple,
colresult,
@@ -198,7 +198,7 @@
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getFactHandleMemory().add( handle );
- if ( !this.hasLeftMemory ) {
+ if ( !this.tupleMemoryEnabled ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
}
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -21,6 +21,7 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
import org.drools.rule.EvalCondition;
import org.drools.spi.PropagationContext;
import org.drools.util.Iterator;
@@ -59,6 +60,8 @@
/** The source of incoming <code>Tuples</code>. */
private final TupleSource tupleSource;
+
+ protected boolean tupleMemoryEnabled;
private TupleSinkNode previousTupleSinkNode;
private TupleSinkNode nextTupleSinkNode;
@@ -78,11 +81,12 @@
*/
public EvalConditionNode(final int id,
final TupleSource tupleSource,
- final EvalCondition eval) {
+ final EvalCondition eval,
+ final BuildContext context) {
super( id );
this.condition = eval;
this.tupleSource = tupleSource;
- this.hasMemory = true;
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -142,7 +146,7 @@
workingMemory );
if ( allowed ) {
- if ( !workingMemory.isSequential() ) {
+ if ( this.tupleMemoryEnabled ) {
final TupleHashTable memory = (TupleHashTable) workingMemory.getNodeMemory( this );
memory.add( tuple );
}
@@ -230,7 +234,15 @@
workingMemories );
}
+
+ public boolean isTupleMemoryEnabled() {
+ return tupleMemoryEnabled;
+ }
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ this.tupleMemoryEnabled = tupleMemoryEnabled;
+ }
+
/**
* Returns the next node
* @return
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -72,7 +72,7 @@
leftInput,
rightInput,
joinNodeBinder );
- this.hasLeftMemory = context.hasLeftMemory();
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -92,7 +92,7 @@
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- if ( this.hasLeftMemory ) {
+ if ( this.tupleMemoryEnabled ) {
memory.getTupleMemory().add( leftTuple );
}
@@ -134,7 +134,7 @@
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getFactHandleMemory().add( handle );
- if ( !this.hasLeftMemory ) {
+ if ( !this.tupleMemoryEnabled ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
}
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -32,6 +32,8 @@
private TupleSinkNode previousTupleSinkNode;
private TupleSinkNode nextTupleSinkNode;
+
+ protected boolean tupleMemoryEnabled;
public FromNode(final int id,
final DataProvider dataProvider,
@@ -43,6 +45,7 @@
this.tupleSource = tupleSource;
this.alphaConstraints = constraints;
this.betaConstraints = (binder == null) ? EmptyBetaConstraints.getInstance() : binder;
+ this.tupleMemoryEnabled = false;
}
/**
@@ -181,7 +184,15 @@
return new BetaMemory( new TupleHashTable(),
null );
}
+
+ public boolean isTupleMemoryEnabled() {
+ return tupleMemoryEnabled;
+ }
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ this.tupleMemoryEnabled = tupleMemoryEnabled;
+ }
+
/**
* Returns the next node
* @return
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -68,7 +68,7 @@
leftInput,
rightInput,
binder );
- this.hasLeftMemory = context.hasLeftMemory();
+ tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -94,7 +94,7 @@
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- if ( this.hasLeftMemory ) {
+ if ( this.tupleMemoryEnabled ) {
memory.getTupleMemory().add( leftTuple );
}
@@ -136,7 +136,7 @@
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getFactHandleMemory().add( handle );
- if ( ! this.hasLeftMemory ) {
+ if ( ! this.tupleMemoryEnabled ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
}
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -22,6 +22,7 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
import org.drools.spi.PropagationContext;
import org.drools.util.FactEntry;
import org.drools.util.FactHashTable;
@@ -51,6 +52,8 @@
private ObjectSinkNode previousObjectSinkNode;
private ObjectSinkNode nextObjectSinkNode;
+
+ private boolean objectMemoryEnabled;
/**
* Constructus a LeftInputAdapterNode with a unique id that receives <code>FactHandle</code> from a
@@ -65,11 +68,12 @@
* a predicate is used in the first pattern, for instance
*/
public LeftInputAdapterNode(final int id,
- final ObjectSource source) {
+ final ObjectSource source,
+ final BuildContext context) {
super( id );
this.objectSource = source;
//this.constraints = constraints;
- setHasMemory( false );
+ setObjectMemoryEnabled( false );
}
/* (non-Javadoc)
@@ -114,7 +118,7 @@
context,
workingMemory );
- if ( this.hasMemory ) {
+ if ( this.objectMemoryEnabled ) {
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
memory.add( handle,
false );
@@ -139,7 +143,7 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
boolean propagate = true;
- if ( this.hasMemory ) {
+ if ( this.objectMemoryEnabled ) {
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
propagate = memory.remove( handle );
}
@@ -154,7 +158,7 @@
public void updateSink(final TupleSink sink,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- if ( this.hasMemory ) {
+ if ( this.objectMemoryEnabled ) {
// We have memory so iterate over all entries
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
final Iterator it = memory.iterator();
@@ -186,7 +190,15 @@
this.objectSource.remove( this,
workingMemories );
}
+
+ public boolean isObjectMemoryEnabled() {
+ return this.objectMemoryEnabled;
+ }
+ public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+ this.objectMemoryEnabled = objectMemoryEnabled;
+ }
+
/**
* Returns the next node
* @return
@@ -237,11 +249,8 @@
}
final LeftInputAdapterNode other = (LeftInputAdapterNode) object;
- // if ( this.constraints == null ) {
- // return this.objectSource.equals( other.objectSource ) && other.constraints == null;
- // } else {
- return this.objectSource.equals( other.objectSource ); //&& this.constraints.equals( other.constraints );
- // }
+
+ return this.objectSource.equals( other.objectSource );
}
public Object createMemory(final RuleBaseConfiguration config) {
@@ -283,6 +292,14 @@
final InternalWorkingMemory workingMemory) {
throw new UnsupportedOperationException( "ObjectSinkAdapter onlys supports assertObject method calls" );
}
+
+ public boolean isObjectMemoryEnabled() {
+ throw new UnsupportedOperationException("ObjectSinkAdapters have no Object memory");
+ }
+
+ public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+ throw new UnsupportedOperationException("ObjectSinkAdapters have no Object memory");
+ }
}
}
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -69,7 +69,7 @@
leftInput,
rightInput,
joinNodeBinder );
- this.hasLeftMemory = context.hasLeftMemory();
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -89,7 +89,7 @@
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- if ( this.hasLeftMemory ) {
+ if ( this.tupleMemoryEnabled ) {
memory.getTupleMemory().add( leftTuple );
}
@@ -131,7 +131,7 @@
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getFactHandleMemory().add( handle );
- if ( !this.hasLeftMemory ) {
+ if ( !this.tupleMemoryEnabled ) {
// do nothing here, as we know there are no left tuples at this stage in sequential mode.
return;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSink.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSink.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -61,4 +61,8 @@
void retractObject(InternalFactHandle handle,
PropagationContext context,
InternalWorkingMemory workingMemory);
+
+ public boolean isObjectMemoryEnabled();
+
+ public void setObjectMemoryEnabled(boolean objectMemoryOn);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -134,5 +134,4 @@
public ObjectSinkPropagator getSinkPropagator() {
return this.sink;
}
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -77,12 +77,10 @@
/** The parent Rete node */
private final Rete rete;
- protected boolean skipOnModify = false;
+ private boolean skipOnModify = false;
- // ------------------------------------------------------------
- // Constructors
- // ------------------------------------------------------------
-
+ private boolean objectMemoryEnabled;
+
/**
* Construct given a semantic <code>ObjectType</code> and the provided
* unique id. All <code>ObjectTypdeNode</code> have node memory.
@@ -100,13 +98,9 @@
context.getRuleBase().getConfiguration().getAlphaNodeHashingThreshold() );
this.rete = (Rete) this.objectSource;
this.objectType = objectType;
- setHasMemory( context.hasObjectTypeMemory() );
+ setObjectMemoryEnabled( context.isObjectTypeNodeMemoryEnabled() );
}
- // ------------------------------------------------------------
- // Instance methods
- // ------------------------------------------------------------
-
/**
* Retrieve the semantic <code>ObjectType</code> differentiator.
*
@@ -128,11 +122,11 @@
public boolean matches(final Object object) {
return this.objectType.matches( object );
}
-
+
public boolean isAssignableFrom(final Object object) {
return this.objectType.isAssignableFrom( object );
}
-
+
/**
* Propagate the <code>FactHandleimpl</code> through the <code>Rete</code> network. All
* <code>FactHandleImpl</code> should be remembered in the node memory, so that later runtime rule attachmnents
@@ -153,7 +147,7 @@
return;
}
- if ( !workingMemory.isSequential() ) {
+ if ( this.objectMemoryEnabled) {
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
memory.add( handle,
false );
@@ -209,7 +203,7 @@
*/
public void attach() {
this.rete.addObjectSink( this );
- }
+ }
public void attach(final InternalWorkingMemory[] workingMemories) {
attach();
@@ -260,6 +254,14 @@
return new FactHashTable();
}
+ public boolean isObjectMemoryEnabled() {
+ return this.objectMemoryEnabled;
+ }
+
+ public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+ this.objectMemoryEnabled = objectMemoryEnabled;
+ }
+
public String toString() {
return "[ObjectTypeNode(" + this.id + ") objectType=" + this.objectType + "]";
}
@@ -292,8 +294,6 @@
super.addObjectSink( objectSink );
this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
}
-
-
/**
* @inheritDoc
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -52,6 +52,7 @@
private final Rule rule;
private final GroupElement subrule;
private final TupleSource tupleSource;
+ private boolean tupleMemoryEnabled;
private TupleSinkNode previousTupleSinkNode;
private TupleSinkNode nextTupleSinkNode;
@@ -76,6 +77,7 @@
this.rule = rule;
this.subrule = subrule;
this.tupleSource = source;
+ this.tupleMemoryEnabled = false; //hard coded to false
}
// ------------------------------------------------------------
@@ -166,10 +168,17 @@
}
public Object createMemory(final RuleBaseConfiguration config) {
- //return new QueryTerminalNodeMemory();
return new LinkedList();
}
+ public boolean isTupleMemoryEnabled() {
+ return tupleMemoryEnabled;
+ }
+
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ this.tupleMemoryEnabled = tupleMemoryEnabled;
+ }
+
/**
* @return the subrule
*/
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -324,7 +324,15 @@
// }
// }
}
+
+ public boolean isObjectMemoryEnabled() {
+ throw new UnsupportedOperationException("Rete has no Object memory");
+ }
+ public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+ throw new UnsupportedOperationException("ORete has no Object memory");
+ }
+
public static interface ObjectTypeConf {
public ObjectTypeNode[] getObjectTypeNodes();
@@ -359,13 +367,13 @@
((ReteooRuleBase) ruleBase.getRete().getRuleBase()).getReteooBuilder().getIdGenerator() );
if ( context.getRuleBase().getConfiguration().isSequential() ) {
// We are in sequential mode, so no nodes should have memory
- context.setHasLeftMemory( false );
- context.setHasObjectTypeMemory( false );
- context.setHasTerminalNodeMemory( false );
+ context.setTupleMemoryEnabled( false );
+ context.setObjectTypeNodeMemoryEnabled( false );
+ context.setTerminalNodeMemoryEnabled( false );
} else {
- context.setHasLeftMemory( true );
- context.setHasObjectTypeMemory( true );
- context.setHasTerminalNodeMemory( true );
+ context.setTupleMemoryEnabled( true );
+ context.setObjectTypeNodeMemoryEnabled( true );
+ context.setTerminalNodeMemoryEnabled( true );
}
// there must exist an ObjectTypeNode for this concrete class
this.concreteObjectTypeNode = PatternBuilder.attachObjectTypeNode( context,
@@ -431,18 +439,18 @@
BuildContext context = new BuildContext( ruleBase,
((ReteooRuleBase) ruleBase.getRete().getRuleBase()).getReteooBuilder().getIdGenerator() );
if ( DroolsQuery.class == clazz ) {
- context.setHasLeftMemory( false );
- context.setHasObjectTypeMemory( false );
- context.setHasTerminalNodeMemory( false );
+ context.setTupleMemoryEnabled( false );
+ context.setObjectTypeNodeMemoryEnabled( false );
+ context.setTerminalNodeMemoryEnabled( false );
} else if ( context.getRuleBase().getConfiguration().isSequential() ) {
// We are in sequential mode, so no nodes should have memory
- context.setHasLeftMemory( false );
- context.setHasObjectTypeMemory( false );
- context.setHasTerminalNodeMemory( false );
+ context.setTupleMemoryEnabled( false );
+ context.setObjectTypeNodeMemoryEnabled( false );
+ context.setTerminalNodeMemoryEnabled( false );
} else {
- context.setHasLeftMemory( true );
- context.setHasObjectTypeMemory( true );
- context.setHasTerminalNodeMemory( true );
+ context.setTupleMemoryEnabled( true );
+ context.setObjectTypeNodeMemoryEnabled( true );
+ context.setTerminalNodeMemoryEnabled( true );
}
// there must exist an ObjectTypeNode for this concrete class
this.concreteObjectTypeNode = PatternBuilder.attachObjectTypeNode( context,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -22,6 +22,7 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
import org.drools.spi.PropagationContext;
import org.drools.util.Iterator;
import org.drools.util.ObjectHashMap;
@@ -45,6 +46,8 @@
private static final long serialVersionUID = 400L;
private final TupleSource tupleSource;
+
+ protected boolean tupleMemoryEnabled;
/**
* Constructor specifying the unique id of the node in the Rete network, the position of the propagating <code>FactHandleImpl</code> in
@@ -56,10 +59,11 @@
* The <code>TupleSource</code> which propagates the received <code>ReteTuple</code>
*/
public RightInputAdapterNode(final int id,
- final TupleSource source) {
+ final TupleSource source,
+ final BuildContext context) {
super( id );
this.tupleSource = source;
- this.setHasMemory( true );
+ this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
}
/**
@@ -87,7 +91,7 @@
// creating a dummy fact handle to wrap the tuple
final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( tuple );
- if ( !workingMemory.isSequential() ) {
+ if ( this.tupleMemoryEnabled ) {
final ObjectHashMap memory = (ObjectHashMap) workingMemory.getNodeMemory( this );
// add it to a memory mapping
memory.put( tuple,
@@ -167,5 +171,13 @@
this.tupleSource.remove( this,
workingMemories );
}
+
+ public boolean isTupleMemoryEnabled() {
+ return tupleMemoryEnabled;
+ }
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ this.tupleMemoryEnabled = tupleMemoryEnabled;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -79,6 +79,8 @@
private TupleSinkNode previousTupleSinkNode;
private TupleSinkNode nextTupleSinkNode;
+
+ protected boolean tupleMemoryEnabled;
// ------------------------------------------------------------
// Constructors
@@ -101,7 +103,7 @@
this.rule = rule;
this.tupleSource = source;
this.subrule = subrule;
- this.hasMemory = buildContext.hasTerminalNodeMemory();
+ this.tupleMemoryEnabled = buildContext.isTerminalNodeMemoryEnabled();
}
// ------------------------------------------------------------
@@ -194,7 +196,7 @@
agenda.scheduleItem( item );
tuple.setActivation( item );
- if ( this.hasMemory ) {
+ if ( this.tupleMemoryEnabled ) {
memory.getTupleMemory().add( tuple );
}
@@ -235,7 +237,7 @@
this.rule,
this.subrule );
- if ( this.hasMemory ) {
+ if ( this.tupleMemoryEnabled ) {
item.setSequenence( this.sequence );
}
@@ -468,7 +470,15 @@
public Object createMemory(final RuleBaseConfiguration config) {
return new TerminalNodeMemory();
}
+
+ public boolean isTupleMemoryEnabled() {
+ return tupleMemoryEnabled;
+ }
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ this.tupleMemoryEnabled = tupleMemoryEnabled;
+ }
+
/**
* Returns the next node
* @return
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -52,4 +52,8 @@
void retractTuple(ReteTuple tuple,
PropagationContext context,
InternalWorkingMemory workingMemory);
+
+ public boolean isTupleMemoryEnabled();
+
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled);
}
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 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -112,6 +112,5 @@
public abstract void updateSink(TupleSink sink,
PropagationContext context,
- InternalWorkingMemory workingMemory);
-
+ InternalWorkingMemory workingMemory);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -73,7 +73,8 @@
// attach right input adapter node to convert tuple source into an object source
context.setObjectSource( (ObjectSource) utils.attachNode( context,
new RightInputAdapterNode( context.getNextId(),
- context.getTupleSource() ) ) );
+ context.getTupleSource(),
+ context ) ) );
// restore tuple source from before the start of the sub network
context.setTupleSource( tupleSource );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -68,14 +68,14 @@
// alpha constraints from the last pattern attached
private List alphaConstraints;
- private boolean hasLeftMemory;
+ private boolean tupleMemoryEnabled;
- private boolean hasObjectTypeMemory;
+ private boolean objectTypeNodeMemoryEnabled;
- private boolean hasTerminalNodeMemory;
+ private boolean terminalNodeMemoryEnabled;
/** This one is slightly different as alphaMemory can be adaptive, only turning on for new rule attachments */
- private boolean alphaMemoryAllowed;
+ private boolean alphaNodeMemoryAllowed;
public BuildContext(final InternalRuleBase rulebase,
final ReteooBuilder.IdGenerator idGenerator) {
@@ -93,9 +93,9 @@
this.currentPatternOffset = 0;
- this.hasLeftMemory = true;
+ this.tupleMemoryEnabled = true;
- this.hasObjectTypeMemory = true;
+ this.objectTypeNodeMemoryEnabled = true;
}
/**
@@ -297,36 +297,36 @@
this.alphaConstraints = alphaConstraints;
}
- public boolean hasLeftMemory() {
- return this.hasLeftMemory;
+ public boolean isTupleMemoryEnabled() {
+ return this.tupleMemoryEnabled;
}
- public void setHasLeftMemory(boolean hasLeftMemory) {
- this.hasLeftMemory = hasLeftMemory;
+ public void setTupleMemoryEnabled(boolean hasLeftMemory) {
+ this.tupleMemoryEnabled = hasLeftMemory;
}
- public boolean hasObjectTypeMemory() {
- return hasObjectTypeMemory;
+ public boolean isObjectTypeNodeMemoryEnabled() {
+ return objectTypeNodeMemoryEnabled;
}
- public void setHasObjectTypeMemory(boolean hasObjectTypeMemory) {
- this.hasObjectTypeMemory = hasObjectTypeMemory;
+ public void setObjectTypeNodeMemoryEnabled(boolean hasObjectTypeMemory) {
+ this.objectTypeNodeMemoryEnabled = hasObjectTypeMemory;
}
- public boolean hasTerminalNodeMemory() {
- return hasTerminalNodeMemory;
+ public boolean isTerminalNodeMemoryEnabled() {
+ return terminalNodeMemoryEnabled;
}
- public void setHasTerminalNodeMemory(boolean hasTerminalNodeMemory) {
- this.hasTerminalNodeMemory = hasTerminalNodeMemory;
+ public void setTerminalNodeMemoryEnabled(boolean hasTerminalNodeMemory) {
+ this.terminalNodeMemoryEnabled = hasTerminalNodeMemory;
}
- public void setAlphaMemoryAllowed(boolean alphaMemoryAllowed) {
- this.alphaMemoryAllowed = alphaMemoryAllowed;
+ public void setAlphaNodeMemoryAllowed(boolean alphaMemoryAllowed) {
+ this.alphaNodeMemoryAllowed = alphaMemoryAllowed;
}
public boolean isAlphaMemoryAllowed() {
- return this.alphaMemoryAllowed;
+ return this.alphaNodeMemoryAllowed;
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -71,7 +71,8 @@
// attach right input adapter node to convert tuple source into an object source
context.setObjectSource( (ObjectSource) utils.attachNode( context,
new RightInputAdapterNode( context.getNextId(),
- context.getTupleSource() ) ) );
+ context.getTupleSource(),
+ context ) ) );
// restore tuple source from before the start of the sub network
context.setTupleSource( tupleSource );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -42,7 +42,8 @@
context.setTupleSource( (TupleSource) utils.attachNode( context,
new EvalConditionNode( context.getNextId(),
context.getTupleSource(),
- eval ) ) );
+ eval,
+ context ) ) );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -119,7 +119,8 @@
// adapt it to a Tuple source
context.setTupleSource( (TupleSource) utils.attachNode( context,
new LeftInputAdapterNode( context.getNextId(),
- context.getObjectSource() ) ) );
+ context.getObjectSource(),
+ context ) ) );
context.setObjectSource( null );
}
@@ -218,7 +219,8 @@
// attach right input adapter node to convert tuple source into an object source
context.setObjectSource( (ObjectSource) utils.attachNode( context,
new RightInputAdapterNode( context.getNextId(),
- context.getTupleSource() ) ) );
+ context.getTupleSource(),
+ context ) ) );
// restore tuple source from before the start of the sub network
context.setTupleSource( tupleSource );
@@ -294,7 +296,8 @@
// attach right input adapter node to convert tuple source into an object source
context.setObjectSource( (ObjectSource) utils.attachNode( context,
new RightInputAdapterNode( context.getNextId(),
- context.getTupleSource() ) ) );
+ context.getTupleSource(),
+ context ) ) );
// restore tuple source from before the start of the sub network
context.setTupleSource( tupleSource );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -172,16 +172,16 @@
// Drools Query ObjectTypeNode never has memory, but other ObjectTypeNode/AlphaNoesNodes may (if not in sequential),
//so need to preserve, so we can resotre after this node is added. LeftMemory and Terminal remain the same once set.
- boolean objectMemory = context.hasObjectTypeMemory();
+ boolean objectMemory = context.isObjectTypeNodeMemoryEnabled();
boolean alphaMemory = context.isAlphaMemoryAllowed();
if ( pattern.getObjectType() instanceof ClassObjectType ) {
// Is this the query node, if so we don't want any memory
if ( DroolsQuery.class == ((ClassObjectType) pattern.getObjectType()).getClassType() ) {
- context.setHasLeftMemory( false );
- context.setHasObjectTypeMemory( false );
- context.setHasTerminalNodeMemory( false );
- context.setAlphaMemoryAllowed( false );
+ context.setTupleMemoryEnabled( false );
+ context.setObjectTypeNodeMemoryEnabled( false );
+ context.setTerminalNodeMemoryEnabled( false );
+ context.setAlphaNodeMemoryAllowed( false );
}
}
@@ -201,8 +201,8 @@
}
// now restore back to original values
- context.setHasObjectTypeMemory( objectMemory );
- context.setAlphaMemoryAllowed( alphaMemory );
+ context.setObjectTypeNodeMemoryEnabled( objectMemory );
+ context.setAlphaNodeMemoryAllowed( alphaMemory );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -107,15 +107,15 @@
idGenerator );
if ( rulebase.getConfiguration().isSequential() ) {
- context.setHasLeftMemory( false );
- context.setHasObjectTypeMemory( false );
- context.setHasTerminalNodeMemory( false );
- context.setAlphaMemoryAllowed( false );
+ context.setTupleMemoryEnabled( false );
+ context.setObjectTypeNodeMemoryEnabled( false );
+ context.setTerminalNodeMemoryEnabled( false );
+ context.setAlphaNodeMemoryAllowed( false );
} else {
- context.setHasLeftMemory( true );
- context.setHasObjectTypeMemory( true );
- context.setHasTerminalNodeMemory( true );
- context.setAlphaMemoryAllowed( true );
+ context.setTupleMemoryEnabled( true );
+ context.setObjectTypeNodeMemoryEnabled( true );
+ context.setTerminalNodeMemoryEnabled( true );
+ context.setAlphaNodeMemoryAllowed( true );
}
// adds subrule
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -412,7 +412,7 @@
ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
BuildContext buildContext = new BuildContext( ruleBase,
ruleBase.getReteooBuilder().getIdGenerator() );
- buildContext.setHasLeftMemory( false );
+ buildContext.setTupleMemoryEnabled( false );
// overide the original node, so we an set the BuildContext
this.node = new AccumulateNode( 15,
this.tupleSource,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -393,7 +393,7 @@
(ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
- this.node.hasLeftMemory = false;
+ this.node.setTupleMemoryEnabled( false );
final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -21,25 +21,30 @@
import org.drools.RuleBaseFactory;
import org.drools.common.DefaultFactHandle;
import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
import org.drools.spi.PropagationContext;
import org.drools.util.TupleHashTable;
public class EvalConditionNodeTest extends DroolsTestCase {
private PropagationContext context;
private ReteooWorkingMemory workingMemory;
+ private ReteooRuleBase ruleBase;
+ private BuildContext buildContext;
public EvalConditionNodeTest(final String name) {
super( name );
}
public void setUp() {
+ this.ruleBase = ( ReteooRuleBase ) RuleBaseFactory.newRuleBase();
+ this.buildContext = new BuildContext( ruleBase, ((ReteooRuleBase)ruleBase).getReteooBuilder().getIdGenerator() );
+
this.context = new PropagationContextImpl( 0,
PropagationContext.ASSERTION,
null,
null );
- this.workingMemory = new ReteooWorkingMemory( 1,
- (ReteooRuleBase) RuleBaseFactory.newRuleBase() );
+ this.workingMemory = ( ReteooWorkingMemory ) this.ruleBase.newStatefulSession();
}
public void testAttach() throws Exception {
@@ -47,7 +52,8 @@
final EvalConditionNode node = new EvalConditionNode( 18,
source,
- new MockEvalCondition( true ) );
+ new MockEvalCondition( true ),
+ buildContext );
assertEquals( 18,
node.getId() );
@@ -70,7 +76,8 @@
final EvalConditionNode node = new EvalConditionNode( 18,
source,
- new MockEvalCondition( true ) );
+ new MockEvalCondition( true ),
+ buildContext );
final TupleHashTable memory = (TupleHashTable) workingMemory.getNodeMemory( node );
@@ -89,7 +96,8 @@
// Create a test node that always returns false
final EvalConditionNode node = new EvalConditionNode( 1,
new MockTupleSource( 15 ),
- eval );
+ eval,
+ buildContext );
final MockTupleSink sink = new MockTupleSink();
node.addTupleSink( sink );
@@ -134,7 +142,8 @@
// Create a test node that always returns false
final EvalConditionNode node = new EvalConditionNode( 1,
new MockTupleSource( 15 ),
- eval );
+ eval,
+ buildContext );
final MockTupleSink sink = new MockTupleSink();
node.addTupleSink( sink );
@@ -207,7 +216,8 @@
// Create a test node that always returns false
final EvalConditionNode node = new EvalConditionNode( 1,
new MockTupleSource( 15 ),
- eval );
+ eval,
+ buildContext );
final MockTupleSink sink = new MockTupleSink();
node.addTupleSink( sink );
@@ -259,7 +269,8 @@
/* Create a test node that always returns true */
final EvalConditionNode node = new EvalConditionNode( 1,
new MockTupleSource( 15 ),
- new MockEvalCondition( true ) );
+ new MockEvalCondition( true ),
+ buildContext );
// Add the first tuple sink and assert a tuple and object
// The sink has no memory
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -192,8 +192,8 @@
ReteooRuleBase ruleBase = ( ReteooRuleBase ) RuleBaseFactory.newRuleBase();
BuildContext buildContext = new BuildContext( ruleBase, ruleBase.getReteooBuilder().getIdGenerator() );
- buildContext.setHasLeftMemory( false );
- buildContext.setHasObjectTypeMemory( false );
+ buildContext.setTupleMemoryEnabled( false );
+ buildContext.setObjectTypeNodeMemoryEnabled( false );
// override setup, so its working in sequential mode
this.node = new JoinNode( 15,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -26,16 +26,25 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
import org.drools.reteoo.ReteooBuilder.IdGenerator;
+import org.drools.reteoo.builder.BuildContext;
import org.drools.spi.PropagationContext;
import org.drools.spi.Tuple;
import org.drools.util.FactHashTable;
public class LeftInputAdapterNodeTest extends DroolsTestCase {
-
+ private ReteooRuleBase ruleBase;
+ private BuildContext buildContext;
+
+ protected void setUp() throws Exception {
+ this.ruleBase = ( ReteooRuleBase ) RuleBaseFactory.newRuleBase();
+ this.buildContext = new BuildContext( ruleBase, ((ReteooRuleBase)ruleBase).getReteooBuilder().getIdGenerator() );
+ }
+
public void testLeftInputAdapterNode() {
final MockObjectSource source = new MockObjectSource( 15 );
final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 23,
- source );
+ source,
+ buildContext );
assertEquals( 23,
liaNode.getId() );
@@ -54,7 +63,8 @@
final MockObjectSource source = new MockObjectSource( 15 );
final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1,
- source );
+ source,
+ buildContext );
final Field field = ObjectSource.class.getDeclaredField( "sink" );
field.setAccessible( true );
ObjectSinkPropagator sink = (ObjectSinkPropagator) field.get( source );
@@ -89,7 +99,8 @@
(ReteooRuleBase) RuleBaseFactory.newRuleBase() );
final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1,
- new MockObjectSource( 15 ) );
+ new MockObjectSource( 15 ),
+ buildContext );
final MockTupleSink sink = new MockTupleSink();
liaNode.addTupleSink( sink );
@@ -126,16 +137,13 @@
final InternalWorkingMemory workingMemory = ( InternalWorkingMemory ) ruleBase.newStatefulSession();
final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( idGenerator.getNextId(),
- new MockObjectSource( idGenerator.getNextId() ));
+ new MockObjectSource( idGenerator.getNextId() ),
+ buildContext );
final MockTupleSink sink = new MockTupleSink();
liaNode.addTupleSink( sink );
- //force liaNode to have memory
- final Field field = BaseNode.class.getDeclaredField( "hasMemory" );
- field.setAccessible( true );
- field.set( liaNode,
- new Boolean( true ) );
+ liaNode.setObjectMemoryEnabled( true );
final Object string1 = "cheese";
@@ -195,7 +203,8 @@
final MockObjectSource source = new MockObjectSource( 15 );
final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1,
- source );
+ source,
+ buildContext );
final MockTupleSink sink = new MockTupleSink();
liaNode.addTupleSink( sink );
@@ -230,12 +239,10 @@
final InternalWorkingMemory workingMemory = ( InternalWorkingMemory ) ruleBase.newStatefulSession();
final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( idGenerator.getNextId(),
- new MockObjectSource( idGenerator.getNextId() ));
+ new MockObjectSource( idGenerator.getNextId() ),
+ buildContext );
//force liaNode to have memory
- final Field field = BaseNode.class.getDeclaredField( "hasMemory" );
- field.setAccessible( true );
- field.set( liaNode,
- new Boolean( true ) );
+ liaNode.setObjectMemoryEnabled( true );
final MockTupleSink sink = new MockTupleSink();
liaNode.addTupleSink( sink );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -87,4 +87,14 @@
public void setPreviousObjectSinkNode(final ObjectSinkNode previous) {
this.previousObjectSinkNode = previous;
}
+
+ public boolean isObjectMemoryEnabled() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setObjectMemoryEnabled(boolean objectMemoryOn) {
+ // TODO Auto-generated method stub
+
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -76,10 +76,6 @@
// TODO Auto-generated method stub
}
- public void setHasMemory(final boolean hasMemory) {
- this.hasMemory = hasMemory;
- }
-
public int getId() {
return this.id;
}
@@ -153,4 +149,14 @@
this.previousTupleSinkNode = previous;
}
+ public boolean isTupleMemoryEnabled() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+ // TODO Auto-generated method stub
+
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -337,9 +337,9 @@
BuildContext buildContext = new BuildContext( ruleBase,
ruleBase.getReteooBuilder().getIdGenerator() );
- buildContext.setHasLeftMemory( false );
- buildContext.setHasObjectTypeMemory( false );
- buildContext.setHasTerminalNodeMemory( false );
+ buildContext.setTupleMemoryEnabled( false );
+ buildContext.setObjectTypeNodeMemoryEnabled( false );
+ buildContext.setTerminalNodeMemoryEnabled( false );
// override setup, so its working in sequential mode
this.node = new NotNode( 15,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -133,6 +133,7 @@
conf.setSequential( true );
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf );
buildContext = new BuildContext( ruleBase, ((ReteooRuleBase)ruleBase).getReteooBuilder().getIdGenerator() );
+ buildContext.setObjectTypeNodeMemoryEnabled( false );
final ReteooWorkingMemory workingMemory = new ReteooWorkingMemory( 1,
ruleBase );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java 2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java 2007-09-09 04:04:25 UTC (rev 14956)
@@ -53,7 +53,7 @@
public void testQueryTerminalNode() {
final ClassObjectType queryObjectType = new ClassObjectType( DroolsQuery.class );
- final ObjectTypeNode queryObjectTypeNode = new ObjectTypeNode( 1,
+ final ObjectTypeNode queryObjectTypeNode = new ObjectTypeNode( this.buildContext.getNextId(),
queryObjectType,
buildContext );
queryObjectTypeNode.attach();
@@ -69,18 +69,19 @@
evaluator,
field );
- AlphaNode alphaNode = new AlphaNode( 2,
+ AlphaNode alphaNode = new AlphaNode( this.buildContext.getNextId(),
constraint,
queryObjectTypeNode,
buildContext );
alphaNode.attach();
- final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 3,
- alphaNode );
+ final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( this.buildContext.getNextId(),
+ alphaNode,
+ this.buildContext );
liaNode.attach();
final ClassObjectType cheeseObjectType = new ClassObjectType( Cheese.class );
- final ObjectTypeNode cheeseObjectTypeNode = new ObjectTypeNode( 4,
+ final ObjectTypeNode cheeseObjectTypeNode = new ObjectTypeNode( this.buildContext.getNextId(),
cheeseObjectType,
buildContext );
cheeseObjectTypeNode.attach();
@@ -95,16 +96,16 @@
evaluator,
field );
- alphaNode = new AlphaNode( 5,
+ alphaNode = new AlphaNode( this.buildContext.getNextId(),
constraint,
cheeseObjectTypeNode,
buildContext );
alphaNode.attach();
BuildContext buildContext = new BuildContext( ruleBase, ruleBase.getReteooBuilder().getIdGenerator() );
- buildContext.setHasLeftMemory( false );
+ buildContext.setTupleMemoryEnabled( false );
- final JoinNode joinNode = new JoinNode( 6,
+ final JoinNode joinNode = new JoinNode( this.buildContext.getNextId(),
liaNode,
alphaNode,
EmptyBetaConstraints.getInstance(),
@@ -113,7 +114,7 @@
final Query query = new Query( "query-1" );
- final QueryTerminalNode queryNode = new QueryTerminalNode( 7,
+ final QueryTerminalNode queryNode = new QueryTerminalNode( this.buildContext.getNextId(),
joinNode,
query,
query.getLhs() );
More information about the jboss-svn-commits
mailing list