[jboss-svn-commits] JBL Code SVN: r6747 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base/evaluators main/java/org/drools/common main/java/org/drools/reteoo main/java/org/drools/rule main/java/org/drools/spi test/java/org/drools/examples/manners
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 11 14:08:25 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-10-11 14:08:10 -0400 (Wed, 11 Oct 2006)
New Revision: 6747
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.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/NotNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
Log:
JBRULES-498 Optimised HashMap implementations
-Improved the caching context, so it only caches the left or the right.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -72,6 +72,8 @@
public boolean evaluate(final Object object1,
final Object object2) {
+// return ((Integer) object1).intValue() == ((Integer) object2).intValue();
+
if ( object1 == null ) {
return object2 == null;
}
@@ -97,6 +99,7 @@
public boolean evaluate(final Object object1,
final Object object2) {
+// return ((Integer) object1).intValue() != ((Integer) object2).intValue();
if ( object1 == null ) {
return (object2 != null);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -22,6 +22,7 @@
import org.drools.WorkingMemory;
import org.drools.base.evaluators.Operator;
+import org.drools.common.InstanceNotEqualsConstraint.InstanceNotEqualsConstraintContextEntry;
import org.drools.reteoo.BetaMemory;
import org.drools.reteoo.ObjectHashTable;
import org.drools.reteoo.ReteTuple;
@@ -51,10 +52,10 @@
public final static BetaNodeConstraints emptyBetaNodeConstraints = new BetaNodeConstraints();
- private final LinkedList constraints;
-
- private ContextEntry contexts;
+ private final LinkedList constraints;
+ private ContextEntry contexts;
+
public BetaNodeConstraints() {
this.constraints = null;
this.contexts = null;
@@ -65,61 +66,78 @@
}
public BetaNodeConstraints(final BetaNodeFieldConstraint[] constraints) {
- this.constraints = new LinkedList();
- ContextEntry current = null;
- for ( int i = 0, length = constraints.length; i < length; i++ ) {
+ this.constraints = new LinkedList();
+ ContextEntry current = null;
+ for ( int i = 0, length = constraints.length; i < length; i++ ) {
this.constraints.add( new LinkedListEntry( constraints[i] ) );
ContextEntry context = constraints[i].getContextEntry();
- if ( current == null ) {
+ if ( current == null ) {
current = context;
this.contexts = context;
} else {
- current.setNext( context );
+ current.setNext( context );
}
current = context;
- }
+ }
}
-
+
public void updateFromTuple(ReteTuple tuple) {
- for( ContextEntry context = this.contexts; context != null; context = context.getNext() ) {
+ for ( ContextEntry context = this.contexts; context != null; context = context.getNext() ) {
context.updateFromTuple( tuple );
- }
+ }
}
-
+
public void updateFromFactHandle(InternalFactHandle handle) {
- for( ContextEntry context = this.contexts; context != null; context = context.getNext() ) {
+ for ( ContextEntry context = this.contexts; context != null; context = context.getNext() ) {
context.updateFromFactHandle( handle );
- }
+ }
}
-
- public boolean isAllowed() {
+
+ public boolean isAllowedCachedLeft(Object object ) {
if ( this.constraints == null ) {
return true;
}
-
- LinkedListEntry entry = ( LinkedListEntry ) this.constraints.getFirst();
+
+ LinkedListEntry entry = (LinkedListEntry) this.constraints.getFirst();
ContextEntry context = this.contexts;
- while( entry != null ) {
- if ( !((BetaNodeFieldConstraint) entry.getObject()).isAllowed( context ) ) {
+ while ( entry != null ) {
+ if ( !((BetaNodeFieldConstraint) entry.getObject()).isAllowedCachedLeft(context, object ) ) {
return false;
- }
- entry = ( LinkedListEntry ) entry.getNext() ;
+ }
+ entry = (LinkedListEntry) entry.getNext();
context = context.getNext();
}
- return true;
+ return true;
}
+
+ public boolean isAllowedCachedRight(ReteTuple tuple) {
+ if ( this.constraints == null ) {
+ return true;
+ }
-// public Set getRequiredDeclarations() {
-// final Set declarations = new HashSet();
-// for ( int i = 0; i < this.constraints.length; i++ ) {
-// final Declaration[] array = this.constraints[i].getRequiredDeclarations();
-// for ( int j = 0; j < array.length; j++ ) {
-// declarations.add( array[j] );
-// }
-// }
-// return declarations;
-// }
+ LinkedListEntry entry = (LinkedListEntry) this.constraints.getFirst();
+ ContextEntry context = this.contexts;
+ while ( entry != null ) {
+ if ( !((BetaNodeFieldConstraint) entry.getObject()).isAllowedCachedRight(tuple, context ) ) {
+ return false;
+ }
+ entry = (LinkedListEntry) entry.getNext();
+ context = context.getNext();
+ }
+ return true;
+ }
+ // public Set getRequiredDeclarations() {
+ // final Set declarations = new HashSet();
+ // for ( int i = 0; i < this.constraints.length; i++ ) {
+ // final Declaration[] array = this.constraints[i].getRequiredDeclarations();
+ // for ( int j = 0; j < array.length; j++ ) {
+ // declarations.add( array[j] );
+ // }
+ // }
+ // return declarations;
+ // }
+
public int hashCode() {
return this.constraints.hashCode();
}
@@ -155,8 +173,8 @@
if ( this.constraints.size() != other.constraints.size() ) {
return false;
}
-
+
return this.constraints.equals( other );
}
-
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -17,6 +17,7 @@
package org.drools.common;
import org.drools.WorkingMemory;
+import org.drools.common.InstanceNotEqualsConstraint.InstanceNotEqualsConstraintContextEntry;
import org.drools.reteoo.ReteTuple;
import org.drools.rule.Column;
import org.drools.rule.ContextEntry;
@@ -61,10 +62,13 @@
return new InstanceEqualsConstraintContextEntry( this.otherColumn );
}
- public boolean isAllowed(final ContextEntry entry) {
- InstanceEqualsConstraintContextEntry context = (InstanceEqualsConstraintContextEntry) entry;
- return context.left == context.right;
- }
+ public boolean isAllowedCachedLeft(ContextEntry context, Object object ) {
+ return ((InstanceNotEqualsConstraintContextEntry)context).left == object;
+ }
+
+ public boolean isAllowedCachedRight(ReteTuple tuple, ContextEntry context) {
+ return tuple.get( this.otherColumn.getFactIndex()).getObject() == ((InstanceNotEqualsConstraintContextEntry)context).right ;
+ }
public String toString() {
return "[InstanceEqualsConstraint otherColumn=" + this.otherColumn + " ]";
@@ -107,13 +111,13 @@
this.entry = entry;
}
+ public void updateFromTuple(ReteTuple tuple) {
+ this.left = tuple.get( this.column.getFactIndex() ).getObject();
+ }
+
public void updateFromFactHandle(InternalFactHandle handle) {
- this.left = handle.getObject();
+ this.right = handle.getObject();
- }
-
- public void updateFromTuple(ReteTuple tuple) {
- this.right = tuple.get( this.column.getFactIndex() );
- }
+ }
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -28,13 +28,13 @@
public class InstanceNotEqualsConstraint
implements
- BetaNodeFieldConstraint {
+ BetaNodeFieldConstraint {
- private static final long serialVersionUID = 320L;
+ private static final long serialVersionUID = 320L;
- private final Declaration[] declarations = new Declaration[0];
+ private static final Declaration[] declarations = new Declaration[0];
- private Column otherColumn;
+ private Column otherColumn;
public InstanceNotEqualsConstraint(final Column otherColumn) {
this.otherColumn = otherColumn;
@@ -43,20 +43,30 @@
public Declaration[] getRequiredDeclarations() {
return this.declarations;
}
-
+
public Column getOtherColumn() {
return this.otherColumn;
}
-
+
public ContextEntry getContextEntry() {
- return new InstanceNotEqualsConstraintContextEntry( this.otherColumn );
+ return new InstanceNotEqualsConstraintContextEntry( this.otherColumn );
}
-
+
public boolean isAllowed(final ContextEntry entry) {
InstanceNotEqualsConstraintContextEntry context = (InstanceNotEqualsConstraintContextEntry) entry;
return context.left != context.right;
}
+ public boolean isAllowedCachedLeft(ContextEntry context,
+ Object object) {
+ return ((InstanceNotEqualsConstraintContextEntry) context).left != object;
+ }
+
+ public boolean isAllowedCachedRight(ReteTuple tuple,
+ ContextEntry context) {
+ return tuple.get( this.otherColumn.getFactIndex() ).getObject() != ((InstanceNotEqualsConstraintContextEntry) context).right;
+ }
+
public String toString() {
return "[InstanceEqualsConstraint otherColumn=" + this.otherColumn + " ]";
}
@@ -78,34 +88,35 @@
return this.otherColumn.equals( other.otherColumn );
}
- public static class InstanceNotEqualsConstraintContextEntry implements ContextEntry {
- public Object left;
- public Object right;
-
- private Column column;
+ public static class InstanceNotEqualsConstraintContextEntry
+ implements
+ ContextEntry {
+ public Object left;
+ public Object right;
+
+ private Column column;
private ContextEntry entry;
-
-
+
public InstanceNotEqualsConstraintContextEntry(Column column) {
this.column = column;
}
-
+
public ContextEntry getNext() {
return this.entry;
}
-
- public void setNext(ContextEntry entry) {
+
+ public void setNext(ContextEntry entry) {
this.entry = entry;
}
+
+ public void updateFromTuple(ReteTuple tuple) {
+ this.left = tuple.get( this.column.getFactIndex() ).getObject();
+ }
public void updateFromFactHandle(InternalFactHandle handle) {
- this.left = handle.getObject();
-
+ this.right = handle.getObject();
+
}
-
- public void updateFromTuple(ReteTuple tuple) {
- this.right = tuple.get( this.column.getFactIndex() );
- }
- }
+ }
}
\ No newline at end of file
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-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -107,13 +107,12 @@
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getTupleMemory().add( leftTuple );
- Iterator it = memory.getObjectMemory().iterator( leftTuple );
+ Iterator it = memory.getObjectMemory().iterator( leftTuple );
this.constraints.updateFromTuple( leftTuple );
for ( FactEntry entry = ( FactEntry ) it.next(); entry != null; entry = ( FactEntry ) it.next() ) {
InternalFactHandle handle = entry.getFactHandle();
- this.constraints.updateFromFactHandle( handle );
- if ( this.constraints.isAllowed() ) {
+ if ( this.constraints.isAllowedCachedLeft(handle.getObject()) ) {
sink.propagateAssertTuple( leftTuple, handle, context, workingMemory );
}
}
@@ -146,8 +145,7 @@
Iterator it = memory.getTupleMemory().iterator();
this.constraints.updateFromFactHandle( handle );
for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
- this.constraints.updateFromTuple( tuple );
- if ( this.constraints.isAllowed( ) ) {
+ if ( this.constraints.isAllowedCachedRight( tuple ) ) {
sink.propagateAssertTuple( tuple, handle, context, workingMemory );
}
}
@@ -173,8 +171,11 @@
}
Iterator it = memory.getTupleMemory().iterator();
+ this.constraints.updateFromFactHandle( handle );
for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
- sink.propagateRetractTuple( tuple, handle, context, workingMemory );
+ if ( this.constraints.isAllowedCachedRight( tuple ) ) {
+ sink.propagateRetractTuple( tuple, handle, context, workingMemory );
+ }
}
}
@@ -201,8 +202,12 @@
}
Iterator it = memory.getObjectMemory().iterator( leftTuple );
+ this.constraints.updateFromTuple( leftTuple );
for ( FactEntry entry = ( FactEntry ) it.next(); entry != null; entry = ( FactEntry ) it.next() ) {
- sink.propagateRetractTuple( leftTuple, entry.getFactHandle(), context, workingMemory );
+ InternalFactHandle handle = entry.getFactHandle();
+ if ( this.constraints.isAllowedCachedLeft( handle.getObject() ) ) {
+ sink.propagateRetractTuple( leftTuple, handle, context, workingMemory );
+ }
}
tuple.release();
leftTuple.release();
@@ -223,8 +228,7 @@
this.constraints.updateFromTuple( tuple );
for ( FactEntry entry = ( FactEntry ) objectIter.next(); entry != null; entry = ( FactEntry ) objectIter.next() ) {
InternalFactHandle handle = entry.getFactHandle();
- this.constraints.updateFromFactHandle( handle );
- if ( this.constraints.isAllowed( ) ) {
+ if ( this.constraints.isAllowedCachedLeft( handle.getObject() ) ) {
sink.assertTuple( new ReteTuple( tuple, handle), 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-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -119,8 +119,7 @@
int matches = 0;
for ( FactEntry entry = ( FactEntry ) it.next(); entry != null; entry = ( FactEntry ) it.next() ) {
InternalFactHandle handle = entry.getFactHandle();
- this.constraints.updateFromFactHandle( handle );
- if ( this.constraints.isAllowed( ) ) {
+ if ( this.constraints.isAllowedCachedLeft( handle.getObject() ) ) {
matches++;
}
}
@@ -155,8 +154,7 @@
Iterator it = memory.getTupleMemory().iterator();
this.constraints.updateFromFactHandle( handle );
for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
- this.constraints.updateFromTuple( tuple );
- if ( this.constraints.isAllowed( ) ) {
+ if ( this.constraints.isAllowedCachedRight( tuple ) ) {
int matches = tuple.getMatches();
tuple.setMatches( matches + 1 );
this.sink.propagateRetractTuple( tuple, context, workingMemory );
@@ -191,8 +189,7 @@
Iterator it = memory.getTupleMemory().iterator();
this.constraints.updateFromFactHandle( handle );
for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
- this.constraints.updateFromTuple( tuple );
- if ( this.constraints.isAllowed( ) ) {
+ if ( this.constraints.isAllowedCachedRight( tuple ) ) {
tuple.setMatches( tuple.getMatches() - 1 );
if ( tuple.getMatches() == 0 ) {
this.sink.propagateAssertTuple( tuple, context, workingMemory );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -6,8 +6,13 @@
import org.drools.util.LinkedListNode;
public interface ContextEntry {
+
public ContextEntry getNext();
- public void setNext(ContextEntry entry);
- public void updateFromTuple(ReteTuple tuple);
+
+ public void setNext(ContextEntry entry);
+
+ public void updateFromTuple(ReteTuple tuple);
+
public void updateFromFactHandle(InternalFactHandle handle);
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -107,31 +107,5 @@
final LiteralConstraint other = (LiteralConstraint) object;
return this.extractor.equals( other.extractor ) && this.restriction.equals( other.restriction );
- }
-
- public static class LiteralContextEntry implements ContextEntry {
- public Object object;
-
- private FieldExtractor extractor;
-
-
- public LiteralContextEntry(FieldExtractor extractor) {
- this.extractor = extractor;
- }
-
- public ContextEntry getNext() {
- return null;
- }
-
- public void setNext(ContextEntry entry) {
- }
-
- public void updateFromFactHandle(InternalFactHandle handle) {
- this.object = this.extractor.getValue( handle.getObject() );
-
- }
-
- public void updateFromTuple(ReteTuple tuple) {
- }
- }
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -18,6 +18,8 @@
import org.drools.WorkingMemory;
import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteTuple;
+import org.drools.rule.VariableConstraint.VariableContextEntry;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldValue;
import org.drools.spi.Restriction;
@@ -56,11 +58,15 @@
InternalWorkingMemory workingMemoiry) {
return this.evaluator.evaluate( object, field );
}
-
- public boolean isAllowed(ContextEntry context) {
- throw new UnsupportedOperationException("cannot call isAllowed(ContextEntry context)");
+
+ public boolean isAllowedCachedLeft(ContextEntry context, Object object) {
+ throw new UnsupportedOperationException("cannot call isAllowed(ContextEntry context)");
}
-
+
+ public boolean isAllowedCachedRight(ReteTuple tuple, ContextEntry context) {
+ throw new UnsupportedOperationException("cannot call isAllowed(ContextEntry context)");
+ }
+
/**
* Literal constraints cannot have required declarations, so always return an empty array.
* @return
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -33,7 +33,7 @@
/**
*
*/
- private static final long serialVersionUID = 320;
+ private static final long serialVersionUID = 320L;
private final FieldExtractor fieldExtractor;
private final VariableRestriction restriction;
@@ -63,11 +63,15 @@
public Evaluator getEvaluator() {
return this.restriction.getEvaluator();
}
+
+ public boolean isAllowedCachedLeft(ContextEntry context, Object object ) {
+ return this.restriction.isAllowedCachedLeft( context, this.fieldExtractor.getValue( object ) );
+ }
- public boolean isAllowed(ContextEntry context) {
- return this.restriction.isAllowed( context );
- }
-
+ public boolean isAllowedCachedRight(ReteTuple tuple, ContextEntry context) {
+ return this.restriction.isAllowedCachedRight( tuple, context );
+ }
+
public String toString() {
return "[VariableConstraint fieldExtractor=" + this.fieldExtractor + " declaration=" + getRequiredDeclarations() + "]";
}
@@ -111,7 +115,7 @@
public VariableContextEntry(FieldExtractor extractor, Declaration declaration) {
this.extractor = extractor;
this.declaration = declaration;
- }
+ }
public ContextEntry getNext() {
return this.entry;
@@ -119,16 +123,16 @@
public void setNext(ContextEntry entry) {
this.entry = entry;
+ }
+
+ public void updateFromTuple(ReteTuple tuple) {
+ this.left = this.declaration.getValue( tuple.get( this.declaration ).getObject() );
}
public void updateFromFactHandle(InternalFactHandle handle) {
- this.left = this.extractor.getValue( handle.getObject() );
+ this.right = this.extractor.getValue( handle.getObject() );
- }
-
- public void updateFromTuple(ReteTuple tuple) {
- this.right = this.declaration.getValue( tuple.get( this.declaration ).getObject() );
- }
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -20,6 +20,7 @@
import org.drools.WorkingMemory;
import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteTuple;
import org.drools.rule.VariableConstraint.VariableContextEntry;
import org.drools.spi.Evaluator;
import org.drools.spi.Restriction;
@@ -53,13 +54,15 @@
public Evaluator getEvaluator() {
return this.evaluator;
- }
+ }
- public boolean isAllowed(ContextEntry context) {
- VariableContextEntry variableContext = ( VariableContextEntry ) context;
- return this.evaluator.evaluate( variableContext.left,
- variableContext.right );
- }
+ public boolean isAllowedCachedLeft(ContextEntry context, Object object) {
+ return this.evaluator.evaluate( ((VariableContextEntry) context).left, object );
+ }
+
+ public boolean isAllowedCachedRight(ReteTuple tuple, ContextEntry context) {
+ return this.evaluator.evaluate( this.declaration.getValue( tuple.get( this.declaration ).getObject() ), ((VariableContextEntry) context).right );
+ }
public String toString() {
return "[VariableRestriction declaration=" + this.declaration + "]";
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -16,16 +16,17 @@
* limitations under the License.
*/
-import org.drools.WorkingMemory;
+import org.drools.reteoo.ReteTuple;
import org.drools.rule.ContextEntry;
-import org.drools.rule.Declaration;
public interface BetaNodeFieldConstraint
extends
Constraint {
- public boolean isAllowed(ContextEntry context);
+ public boolean isAllowedCachedLeft(ContextEntry context, Object object );
+ public boolean isAllowedCachedRight(ReteTuple tuple, ContextEntry context);
+
public ContextEntry getContextEntry();
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -4,13 +4,17 @@
import org.drools.WorkingMemory;
import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteTuple;
import org.drools.rule.ContextEntry;
import org.drools.rule.Declaration;
+import org.drools.rule.VariableConstraint.VariableContextEntry;
public interface Restriction extends Serializable {
Declaration[] getRequiredDeclarations();
public boolean isAllowed(Object object, InternalWorkingMemory workingMemoiry);
- public boolean isAllowed(ContextEntry context);
+ public boolean isAllowedCachedLeft(ContextEntry context, Object object);
+
+ public boolean isAllowedCachedRight(ReteTuple tuple, ContextEntry context);
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java 2006-10-11 15:52:39 UTC (rev 6746)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java 2006-10-11 18:08:10 UTC (rev 6747)
@@ -66,8 +66,7 @@
};
//workingMemory.addEventListener(listener );
-
- final InputStream is = getClass().getResourceAsStream( "/manners64.dat" );
+ final InputStream is = getClass().getResourceAsStream( "/manners128.dat" );
final List list = getInputObjects( is );
for ( final Iterator it = list.iterator(); it.hasNext(); ) {
final Object object = it.next();
More information about the jboss-svn-commits
mailing list