[jboss-svn-commits] JBL Code SVN: r5920 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base/dataproviders main/java/org/drools/common main/java/org/drools/leaps main/java/org/drools/reteoo main/java/org/drools/reteoo/beta main/java/org/drools/rule main/java/org/drools/spi test/java/org/drools/base/dataproviders test/java/org/drools/facttemplates test/java/org/drools/reteoo test/java/org/drools/reteoo/beta test/java/org/drools/rule
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Aug 16 14:08:16 EDT 2006
Author: /services/svn/bin/commit-email.pl: `/opt/subversion/bin/svnlook info /services/jbf-svn/code -r 5920' failed with this output:
Date: svnlook: Inconsistent line ending style
New Revision: 5920
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsTuple.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Token.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/ReteTuple.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/ReteooRuleBase.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/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/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
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/EvalCondition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Exists.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/From.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java
Log:
2006-08-16 14:07:59 -0400 (Wed, 16 Aug 2006)
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -23,65 +23,67 @@
implements
DataProvider {
- private final Declaration[] requiredDeclarations;
- private final boolean variableIsDeclaration;
- private final Declaration variableDeclaration;
- private final String variableName;
-
- private final ValueHandler[] valueHandlers;
+ private final Declaration[] requiredDeclarations;
+ private final boolean variableIsDeclaration;
+ private final Declaration variableDeclaration;
+ private final String variableName;
- private final Method method;
- private final Class variableClass;
+ private final ValueHandler[] valueHandlers;
+ private final Method method;
+ private final Class variableClass;
+
public MethodDataProvider(String variableName,
String methodName,
List arguments,
Map declarations,
Map globals) {
-
+
List requiredDecs = new ArrayList();
-
+
//work out where variable comes from, is it a dec or a global
- this.variableName = variableName;
- if (declarations.containsKey( variableName )) {
+ this.variableName = variableName;
+ if ( declarations.containsKey( variableName ) ) {
variableDeclaration = (Declaration) declarations.get( variableName );
requiredDecs.add( variableDeclaration );
variableIsDeclaration = true;
this.variableClass = variableDeclaration.getExtractor().getExtractToClass();
- } else if (globals.containsKey( variableName )) {
+ } else if ( globals.containsKey( variableName ) ) {
variableIsDeclaration = false;
this.variableClass = (Class) globals.get( variableName );
variableDeclaration = null;
} else {
variableDeclaration = null;
- throw new IllegalArgumentException("The variable name [" + variableName + "] was not a global or declaration.");
+ throw new IllegalArgumentException( "The variable name [" + variableName + "] was not a global or declaration." );
}
//now handle arguments
- List argumentData = new ArrayList();
-
+ List argumentData = new ArrayList();
+
for ( Iterator iter = arguments.iterator(); iter.hasNext(); ) {
ArgumentValueDescr desc = (ArgumentValueDescr) iter.next();
if ( desc.getType() == ArgumentValueDescr.VARIABLE ) {
if ( declarations.containsKey( desc.getValue() ) ) {
Declaration dec = (Declaration) declarations.get( desc.getValue() );
requiredDecs.add( dec );
- argumentData.add( new DeclaredVariable(dec) );
+ argumentData.add( new DeclaredVariable( dec ) );
} else if ( globals.containsKey( desc.getValue() ) ) {
- argumentData.add( new GlobalVariable(desc.getValue()) );
+ argumentData.add( new GlobalVariable( desc.getValue() ) );
} else {
throw new IllegalArgumentException( "Uknown variable: " + desc.getValue() );
}
} else {
// handling a literal
- argumentData.add( new LiteralValue(desc.getValue()) );
+ argumentData.add( new LiteralValue( desc.getValue() ) );
}
}
//now find the method
- method = configureMethod(methodName, variableClass, arguments.size());
-
- valueHandlers = (ValueHandler[]) argumentData.toArray(new ValueHandler[argumentData.size()]);
+ this.method = configureMethod( methodName,
+ variableClass,
+ arguments.size() );
+
+ valueHandlers = (ValueHandler[]) argumentData.toArray( new ValueHandler[argumentData.size()] );
requiredDeclarations = new Declaration[requiredDecs.size()];
requiredDecs.toArray( requiredDeclarations );
}
@@ -89,11 +91,13 @@
/**
* work out what method we will be calling at runtime, based on the name and number of parameters.
*/
- private Method configureMethod(String methodName, Class variableClass, int numOfArgs) {
+ private Method configureMethod(String methodName,
+ Class variableClass,
+ int numOfArgs) {
Method[] methods = this.variableClass.getMethods();
for ( int i = 0; i < methods.length; i++ ) {
- if (methods[i].getName().equals(methodName)) {
- if (methods[i].getParameterTypes().length == numOfArgs) {
+ if ( methods[i].getName().equals( methodName ) ) {
+ if ( methods[i].getParameterTypes().length == numOfArgs ) {
return methods[i];
}
}
@@ -113,139 +117,148 @@
//get the variable value that we are operating on
Object variable = null;
- if (variableIsDeclaration) {
- variable = tuple.get( this.variableDeclaration ).getObject();
+ if ( variableIsDeclaration ) {
+ variable = tuple.get( this.variableDeclaration ).getObject();
} else {
variable = wm.getGlobal( this.variableName );
}
+
if (variable == null) {
throw new IllegalArgumentException("Unable to resolve the variable: [" + this.variableName + "]");
}
-
+
//the types we have to convert the arguments to
Class[] parameterTypes = this.method.getParameterTypes();
-
+
//the args values that we will pass
Object[] args = new Object[this.valueHandlers.length];
-
-
+
//now we need to set all the values, convert if literal
for ( int i = 0; i < this.valueHandlers.length; i++ ) {
ValueHandler handler = valueHandlers[i];
- if (handler instanceof LiteralValue) {
- String text = (String) handler.getValue( tuple, wm );
+ if ( handler instanceof LiteralValue ) {
+ String text = (String) handler.getValue( tuple,
+ wm );
Class type = parameterTypes[i];
- if (type == String.class) {
+ if ( type == String.class ) {
args[i] = text;
} else {
- args[i] = convert(text, type);
+ args[i] = convert( text,
+ type );
}
} else {
- args[i] = handler.getValue( tuple, wm );
+ args[i] = handler.getValue( tuple,
+ wm );
}
}
-
+
//now the actual invoking of the method
try {
- Object result = this.method.invoke( variable, args );
- if (result instanceof Collection) {
+ Object result = this.method.invoke( variable,
+ args );
+ if ( result instanceof Collection ) {
return ((Collection) result).iterator();
- } else if (result instanceof Iterator) {
+ } else if ( result instanceof Iterator ) {
return (Iterator) result;
} else {
- List resultAsList = new ArrayList(1);
+ List resultAsList = new ArrayList( 1 );
resultAsList.add( result );
return resultAsList.iterator();
}
} catch ( IllegalArgumentException e ) {
- throw new RuntimeDroolsException(e);
+ throw new RuntimeDroolsException( e );
} catch ( IllegalAccessException e ) {
- throw new RuntimeDroolsException(e);
+ throw new RuntimeDroolsException( e );
} catch ( InvocationTargetException e ) {
- throw new RuntimeDroolsException(e);
+ throw new RuntimeDroolsException( e );
}
}
-
-
+
/** Attempt to convert text to the target class type */
private Object convert(String text,
Class type) {
- if ( type == Integer.class || type == int.class) {
- return new Integer( text ) ;
+ if ( type == Integer.class || type == int.class ) {
+ return new Integer( text );
} else if ( text == "null" ) {
return null;
} else if ( type == Character.class || type == char.class ) {
- return ( new Character( text.charAt( 0 ) ) );
- } else if ( type == Short.class || type == short.class) {
+ return (new Character( text.charAt( 0 ) ));
+ } else if ( type == Short.class || type == short.class ) {
return new Short( text );
} else if ( type == Long.class || type == long.class ) {
return new Long( text );
- } else if ( type == Float.class || type == float.class) {
+ } else if ( type == Float.class || type == float.class ) {
return new Float( text );
- } else if ( type == Double.class || type == double.class) {
+ } else if ( type == Double.class || type == double.class ) {
return new Double( text );
- } else if ( type == Boolean.class || type == boolean.class) {
+ } else if ( type == Boolean.class || type == boolean.class ) {
return new Boolean( text );
- } else if ( type == Date.class ) {
+ } else if ( type == Date.class ) {
return DateFactory.parseDate( text );
} else if ( type == BigDecimal.class ) {
- return new BigDecimal(text);
+ return new BigDecimal( text );
} else if ( type == BigInteger.class ) {
- return new BigInteger(text);
+ return new BigInteger( text );
} else {
- throw new IllegalArgumentException("Unable to convert [" + text + "] to type: [" + type.getName() + "]");
+ throw new IllegalArgumentException( "Unable to convert [" + text + "] to type: [" + type.getName() + "]" );
}
}
+ static interface ValueHandler {
- static interface ValueHandler {
-
- Object getValue(Tuple tuple, WorkingMemory wm);
+ Object getValue(Tuple tuple,
+ WorkingMemory wm);
}
-
- static class GlobalVariable implements ValueHandler {
+
+ static class GlobalVariable
+ implements
+ ValueHandler {
public String globalName;
+
public GlobalVariable(String name) {
this.globalName = name;
}
+
public Object getValue(Tuple tuple,
WorkingMemory wm) {
return wm.getGlobal( globalName );
-
+
}
}
-
- static class DeclaredVariable implements ValueHandler {
+ static class DeclaredVariable
+ implements
+ ValueHandler {
+
private Declaration declaration;
public DeclaredVariable(Declaration dec) {
this.declaration = dec;
}
-
+
public Object getValue(Tuple tuple,
WorkingMemory wm) {
return tuple.get( this.declaration ).getObject();
}
-
+
}
-
- static class LiteralValue implements ValueHandler {
+ static class LiteralValue
+ implements
+ ValueHandler {
+
private String value;
public LiteralValue(String value) {
this.value = value;
}
-
+
public Object getValue(Tuple tuple,
- WorkingMemory wm) {
+ WorkingMemory wm) {
return value;
}
-
+
}
-
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -311,6 +311,10 @@
// the firing for any other assertObject(..) that get
// nested inside, avoiding concurrent-modification
// exceptions, depending on code paths of the actions.
+
+ if ( !this.factQueue.isEmpty() ) {
+ propagateQueuedActions();
+ }
if ( !this.firing ) {
try {
@@ -793,17 +797,21 @@
}
}
+
+ public void queueWorkingMemoryAction( WorkingMemoryAction action ) {
+ this.factQueue.add( action );
+ }
public void queueRetractAction(final InternalFactHandle factHandle,
final boolean removeLogical,
final boolean updateEqualsMap,
final Rule ruleOrigin,
final Activation activationOrigin) {
- this.factQueue.add( new WorkingMemoryRetractAction( factHandle,
- false,
- true,
- ruleOrigin,
- activationOrigin ) );
+ queueWorkingMemoryAction( new WorkingMemoryRetractAction( factHandle,
+ false,
+ true,
+ ruleOrigin,
+ activationOrigin ) );
}
/**
@@ -919,4 +927,5 @@
this.activationOrigin );
}
}
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsTuple.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsTuple.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -117,7 +117,7 @@
* @see org.drools.spi.Tuple
*/
public InternalFactHandle get(final Declaration declaration) {
- return this.get( declaration.getColumn() );
+ return this.get( declaration.getColumn().getFactIndex() );
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Token.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Token.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Token.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -178,7 +178,7 @@
* @see org.drools.spi.Tuple
*/
public InternalFactHandle get( final Declaration declaration ) {
- return this.get( declaration.getColumn( ) );
+ return this.get( declaration.getColumn( ).getFactIndex() );
}
/**
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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -59,7 +59,7 @@
/**
*
*/
- private static final long serialVersionUID = 4075809540597599706L;
+ private static final long serialVersionUID = 320;
/**
* Construct.
Modified: 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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -164,7 +164,7 @@
* @see org.drools.spi.Tuple#get(org.drools.rule.Declaration)
*/
public InternalFactHandle get(final Declaration declaration) {
- return get( declaration.getColumn() );
+ return get( declaration.getColumn().getFactIndex() );
}
public void setActivation(final Activation activation) {
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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -230,6 +230,7 @@
if ( temp != null ) {
and.getChildren().addAll( temp.getChildren() );
}
+ this.currentOffsetAdjustment = 1;
}
private void addRule(final And and,
@@ -255,8 +256,8 @@
continue;
}
- BetaNodeBinder binder;
- Column column;
+ BetaNodeBinder binder = null;
+ Column column = null;
if ( object instanceof Column ) {
column = (Column) object;
@@ -279,7 +280,7 @@
// reference.
this.objectSource = null;
}
- } else {
+ } else if ( object instanceof GroupElement ) {
// If its not a Column or EvalCondition then it can either be a Not or an Exists
GroupElement ce = (GroupElement) object;
while ( !(ce.getChildren().get( 0 ) instanceof Column) ) {
@@ -307,18 +308,21 @@
false );
}
- if ( object instanceof Not ) {
+ if ( object.getClass() == Not.class ) {
attachNot( this.tupleSource,
(Not) object,
this.objectSource,
binder,
column );
- } else if ( object instanceof Exists ) {
+ } else if ( object.getClass() == Exists.class ) {
attachExists( this.tupleSource,
(Exists) object,
this.objectSource,
binder,
column );
+ } else if ( object.getClass() == From.class ) {
+ attachFrom( this.tupleSource,
+ (From) object );
} else if ( this.objectSource != null ) {
this.tupleSource = attachNode( new JoinNode( this.id++,
this.tupleSource,
@@ -555,14 +559,29 @@
return node;
}
-
+
private void attachFrom(final TupleSource tupleSource,
final From from) {
Column column = from.getColumn();
+
+ // If a tupleSource does not exist then we need to adapt an
+ // InitialFact into a a TupleSource using LeftInputAdapterNode
+ if ( this.tupleSource == null ) {
+ // adjusting offset as all tuples will now contain initial-fact at index 0
+ this.currentOffsetAdjustment = 1;
+
+ final ObjectSource objectSource = attachNode( new ObjectTypeNode( this.id++,
+ this.sinklistFactory.newObjectSinkList( ObjectTypeNode.class ),
+ new ClassObjectType( InitialFact.class ),
+ this.rete ) );
+
+ this.tupleSource = attachNode( new LeftInputAdapterNode( this.id++,
+ objectSource ) );
+ }
// Adjusting offset in case a previous Initial-Fact was added to the network
column.adjustOffset( this.currentOffsetAdjustment );
-
+
final List constraints = column.getConstraints();
// Check if the Column is bound
@@ -575,7 +594,7 @@
final List predicateConstraints = new ArrayList();
final List alphaNodeConstraints = new ArrayList();
-
+
for ( final Iterator it = constraints.iterator(); it.hasNext(); ) {
final Object object = it.next();
// Check if its a declaration
@@ -595,8 +614,7 @@
predicateConstraints.add( fieldConstraint );
}
}
-
-
+
BetaNodeBinder binder;
if ( !predicateConstraints.isEmpty() ) {
@@ -604,15 +622,15 @@
} else {
binder = new BetaNodeBinder();
}
-
- FromNode node = new FromNode( id,
- from.getDataProvider(),
- this.tupleSource,
- ( FieldConstraint[] ) alphaNodeConstraints.toArray( new FieldConstraint[ alphaNodeConstraints.size() ] ),
- binder );
-
- }
+ this.tupleSource = attachNode( new FromNode( id++,
+ from.getDataProvider(),
+ this.tupleSource,
+ (FieldConstraint[]) alphaNodeConstraints.toArray( new FieldConstraint[alphaNodeConstraints.size()] ),
+ binder ) );
+
+ }
+
private ObjectSource attachNode(final ObjectSource candidate) {
ObjectSource node = (ObjectSource) this.attachedNodes.get( candidate );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -31,6 +31,7 @@
import org.drools.common.AbstractRuleBase;
import org.drools.common.DefaultFactHandle;
import org.drools.common.PropagationContextImpl;
+import org.drools.common.AbstractWorkingMemory.WorkingMemoryRetractAction;
import org.drools.rule.CompositePackageClassLoader;
import org.drools.rule.InvalidPatternException;
import org.drools.rule.Rule;
@@ -68,26 +69,26 @@
* will result in an invalid state for the instance.
*/
public ReteooRuleBase() {
-
+
}
-
+
/**
* Construct.
*
* @param rete
* The rete network.
*/
- public ReteooRuleBase(final String id) {
+ public ReteooRuleBase(final String id) {
this( id,
null,
new ReteooFactHandleFactory() );
}
-
/**
* @param factHandleFactory
*/
- public ReteooRuleBase(final String id, final FactHandleFactory factHandleFactory) {
+ public ReteooRuleBase(final String id,
+ final FactHandleFactory factHandleFactory) {
this( id,
null,
factHandleFactory );
@@ -232,17 +233,19 @@
super.addWorkingMemory( workingMemory,
keepReference );
- final InitialFactHandle handle = new InitialFactHandle( workingMemory.getFactHandleFactory().newFactHandle( new Serializable() {} ) );
+ final InitialFactHandle handle = new InitialFactHandle( workingMemory.getFactHandleFactory().newFactHandle( new Serializable() {
+ } ) );
final PropagationContext propagationContext = new PropagationContextImpl( workingMemory.getNextPropagationIdCounter(),
PropagationContext.ASSERTION,
null,
null );
- assertObject( handle,
- handle.getObject(),
- propagationContext,
- workingMemory );
+ workingMemory.queueWorkingMemoryAction( workingMemory.new WorkingMemoryReteAssertAction( handle,
+ false,
+ true,
+ null,
+ null ) );
return workingMemory;
}
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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -31,6 +31,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.common.PropagationContextImpl;
+import org.drools.common.AbstractWorkingMemory.WorkingMemoryAction;
import org.drools.rule.Query;
import org.drools.rule.Rule;
import org.drools.spi.Activation;
@@ -56,7 +57,7 @@
* @param ruleBase
* The backing rule-base.
*/
- public ReteooWorkingMemory(final int id,
+ public ReteooWorkingMemory(final int id,
final InternalRuleBase ruleBase) {
super( id,
ruleBase,
@@ -98,7 +99,7 @@
// and we cannot assert a null object
return;
}
-
+
// set anyway, so that it updates the hashCodes
handle.setObject( object );
@@ -126,7 +127,7 @@
} else {
key.addFactHandle( handle );
}
-
+
handle.setEqualityKey( key );
this.handleFactory.increaseFactHandleRecency( handle );
@@ -181,4 +182,42 @@
node );
}
+ public class WorkingMemoryReteAssertAction
+ implements
+ WorkingMemoryAction {
+ private InternalFactHandle factHandle;
+
+ private boolean removeLogical;
+
+ private boolean updateEqualsMap;
+
+ private Rule ruleOrigin;
+
+ private Activation activationOrigin;
+
+ public WorkingMemoryReteAssertAction(final InternalFactHandle factHandle,
+ final boolean removeLogical,
+ final boolean updateEqualsMap,
+ final Rule ruleOrigin,
+ final Activation activationOrigin) {
+ super();
+ this.factHandle = factHandle;
+ this.removeLogical = removeLogical;
+ this.updateEqualsMap = updateEqualsMap;
+ this.ruleOrigin = ruleOrigin;
+ this.activationOrigin = activationOrigin;
+ }
+
+ public void propagate() {
+
+ PropagationContext context = new PropagationContextImpl( ReteooWorkingMemory.this.propagationIdCounter++,
+ PropagationContext.ASSERTION,
+ this.ruleOrigin,
+ this.activationOrigin );
+ ReteooWorkingMemory.this.ruleBase.assertObject( factHandle,
+ factHandle.getObject(),
+ context,
+ ReteooWorkingMemory.this );
+ }
+ }
}
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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -23,6 +23,7 @@
import org.drools.base.evaluators.Operator;
import org.drools.common.InternalFactHandle;
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;
@@ -50,7 +51,7 @@
private FieldExtractor extractor = null;
private Declaration declaration = null;
- private int column;
+ private Column column;
private Evaluator evaluator = null;
public BooleanConstrainedLeftMemory(final FieldExtractor extractor,
@@ -82,7 +83,7 @@
*/
public final void add(final WorkingMemory workingMemory,
final ReteTuple tuple) {
- final boolean select = ((Boolean) this.declaration.getValue( tuple.get( this.column ).getObject() )).booleanValue();
+ final boolean select = ((Boolean) this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() )).booleanValue();
if ( select == true ) {
this.trueList.add( tuple );
} else {
@@ -116,7 +117,7 @@
*/
public final void add(final WorkingMemory workingMemory,
final MultiLinkedListNodeWrapper tuple) {
- final boolean partition = ((Boolean) this.declaration.getValue( ((ReteTuple) tuple.getNode()).get( this.column ).getObject() )).booleanValue();
+ final boolean partition = ((Boolean) this.declaration.getValue( ((ReteTuple) tuple.getNode()).get( this.column.getFactIndex() ).getObject() )).booleanValue();
if ( partition == true ) {
this.trueList.add( tuple );
} else {
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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BooleanConstrainedRightMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -26,6 +26,7 @@
import org.drools.common.DefaultFactHandle;
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;
@@ -52,7 +53,7 @@
private FieldExtractor extractor = null;
private Declaration declaration = null;
- private int column;
+ private Column column;
private Evaluator evaluator = null;
public BooleanConstrainedRightMemory(final FieldExtractor extractor,
@@ -215,7 +216,7 @@
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
final ReteTuple tuple) {
- boolean select = ((Boolean) this.declaration.getValue( tuple.get( this.column ).getObject() )).booleanValue();
+ 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/ObjectEqualConstrLeftMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -27,6 +27,7 @@
import org.drools.WorkingMemory;
import org.drools.common.InternalFactHandle;
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;
@@ -55,7 +56,7 @@
private FieldExtractor extractor = null;
private Declaration declaration = null;
- private int column;
+ private Column column;
public ObjectEqualConstrLeftMemory(final FieldExtractor extractor,
final Declaration declaration,
@@ -305,7 +306,7 @@
*/
private final Integer getTupleHash(final WorkingMemory workingMemory,
final ReteTuple tuple) {
- final Object select = this.declaration.getValue( tuple.get( this.column ).getObject() );
+ 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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -29,6 +29,7 @@
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;
@@ -56,7 +57,7 @@
private FieldExtractor extractor = null;
private Declaration declaration = null;
- private int column;
+ private Column column;
public ObjectEqualConstrRightMemory(final FieldExtractor extractor,
final Declaration declaration,
@@ -232,7 +233,7 @@
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
final ReteTuple tuple) {
- final Object select = this.declaration.getValue( tuple.get( this.column ).getObject() );
+ 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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -24,6 +24,7 @@
import org.drools.WorkingMemory;
import org.drools.common.InternalFactHandle;
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;
@@ -51,7 +52,7 @@
private FieldExtractor extractor = null;
private Declaration declaration = null;
- private int column;
+ private Column column;
public ObjectNotEqualConstrLeftMemory(final FieldExtractor extractor,
final Declaration declaration,
@@ -300,7 +301,7 @@
*/
private final Object getTupleKey(final WorkingMemory workingMemory,
final ReteTuple tuple) {
- final Object select = this.declaration.getValue( tuple.get( this.column ).getObject() );
+ 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-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -25,6 +25,7 @@
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;
@@ -51,7 +52,7 @@
private FieldExtractor extractor = null;
private Declaration declaration = null;
- private int column;
+ private Column column;
public ObjectNotEqualConstrRightMemory(final FieldExtractor extractor,
final Declaration declaration,
@@ -259,7 +260,7 @@
*/
public final void selectPossibleMatches(final WorkingMemory workingMemory,
final ReteTuple tuple) {
- final Object select = this.declaration.getValue( tuple.get( this.column ).getObject() );
+ 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 );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -70,7 +70,7 @@
if ( identifier != null ) {
this.declaration = new Declaration( identifier,
new ColumnExtractor( objectType ),
- this.getFactIndex() );
+ this );
} else {
this.declaration = null;
}
@@ -98,7 +98,7 @@
}
final Declaration declaration = new Declaration( identifier,
extractor,
- this.getFactIndex() );
+ this );
this.constraints.add( declaration );
return declaration;
@@ -135,12 +135,12 @@
this.offset += adjust;
if ( this.declaration != null ) {
- this.declaration.setColumn( this.getFactIndex() );
+ this.declaration.setColumn( this );
}
for ( final Iterator i = this.constraints.iterator(); i.hasNext(); ) {
final Object constr = i.next();
if ( constr instanceof Declaration ) {
- ((Declaration) constr).setColumn( this.getFactIndex() );
+ ((Declaration) constr).setColumn( this );
}
}
}
@@ -149,4 +149,54 @@
return "Column type='" + this.objectType + "', index='" + this.index + "', offset='" + this.getOffset() + "', identifer='" + this.declaration.getIdentifier() + "'";
}
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + this.constraints.hashCode();
+ result = PRIME * result + ((this.declaration == null) ? 0 : this.declaration.hashCode());
+ result = PRIME * result + this.index;
+ result = PRIME * result + this.objectType.hashCode();
+ result = PRIME * result + this.offset;
+ return result;
+ }
+
+ public boolean equals(Object object) {
+ if ( this == object ) {
+ return true;
+ }
+
+ if ( object == null || getClass() != object.getClass() ) {
+ return false;
+ }
+
+ final Column other = (Column) object;
+
+ if ( !this.constraints.equals( other.constraints ) ) {
+ return false;
+ }
+
+ if ( this.declaration == null ) {
+ if ( other.declaration != null ) {
+ return false;
+ }
+ } else if ( !this.declaration.equals( other.declaration ) ) {
+ return false;
+ }
+
+ if ( this.index != other.index ) {
+ return false;
+ }
+
+
+ if ( !this.objectType.equals( other.objectType ) ) {
+ return false;
+ }
+ if ( this.offset != other.offset ) {
+ return false;
+ }
+ return true;
+ }
+
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -84,7 +84,7 @@
private final Extractor extractor;
- private int column;
+ private Column column;
// ------------------------------------------------------------
// Constructors
@@ -102,7 +102,7 @@
*/
public Declaration(final String identifier,
final Extractor extractor,
- final int column) {
+ final Column column) {
this.identifier = identifier;
this.extractor = extractor;
this.column = column;
@@ -135,11 +135,11 @@
*
* @return the column
*/
- public int getColumn() {
+ public Column getColumn() {
return this.column;
}
- public void setColumn(final int column) {
+ public void setColumn(final Column column) {
this.column = column;
}
@@ -165,7 +165,7 @@
public int hashCode() {
final int PRIME = 31;
int result = 1;
- result = PRIME * result + this.column;
+ result = PRIME * this.column.getFactIndex();
result = PRIME * this.extractor.hashCode();
result = PRIME * this.identifier.hashCode();
return result;
@@ -180,9 +180,9 @@
return false;
}
- final Declaration other = (Declaration) object;
-
- return this.column == other.column && this.identifier.equals( other.identifier ) && this.extractor.equals( other.extractor );
+ final Declaration other = (Declaration) object;
+
+ return this.column.getFactIndex() == other.column.getFactIndex() && this.identifier.equals( other.identifier ) && this.extractor.equals( other.extractor );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/EvalCondition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/EvalCondition.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/EvalCondition.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -99,7 +99,7 @@
}
for ( int i = 0, length = this.requiredDeclarations.length; i < length; i++ ) {
- if ( this.requiredDeclarations[i].getColumn() != other.requiredDeclarations[i].getColumn() ) {
+ if ( this.requiredDeclarations[i].getColumn().getFactIndex() != other.requiredDeclarations[i].getColumn().getFactIndex() ) {
return false;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Exists.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Exists.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Exists.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -20,7 +20,7 @@
/**
*
*/
- private static final long serialVersionUID = -2731485078261324186L;
+ private static final long serialVersionUID = 320;
public Object getChild() {
return getChildren().get( 0 );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/From.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/From.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/From.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -4,7 +4,7 @@
import org.drools.spi.DataProvider;
-public class From implements Serializable{
+public class From extends ConditionalElement implements Serializable {
private Column column;
private DataProvider dataProvider;
@@ -21,5 +21,10 @@
public DataProvider getDataProvider() {
return dataProvider;
+ }
+
+ public Object clone() {
+ // TODO Auto-generated method stub
+ return null;
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -118,7 +118,7 @@
return false;
}
- if ( this.declaration.getColumn() != other.declaration.getColumn() ) {
+ if ( this.declaration.getColumn().getFactIndex() != other.declaration.getColumn().getFactIndex() ) {
return false;
}
@@ -127,7 +127,7 @@
}
for ( int i = 0, length = this.requiredDeclarations.length; i < length; i++ ) {
- if ( this.requiredDeclarations[i].getColumn() != other.requiredDeclarations[i].getColumn() ) {
+ if ( this.requiredDeclarations[i].getColumn().getFactIndex() != other.requiredDeclarations[i].getColumn().getFactIndex() ) {
return false;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -45,7 +45,7 @@
/**
*
*/
- private static final long serialVersionUID = 7952983928232702826L;
+ private static final long serialVersionUID = 320;
/** */
// ------------------------------------------------------------
@@ -296,6 +296,8 @@
public void addPattern(final ConditionalElement ce) {
if ( ce instanceof GroupElement ) {
addDeclarations( (GroupElement) ce );
+ } else if ( ce.getClass() == From.class ) {
+ addDeclarations( ((From) ce ).getColumn());
}
this.lhsRoot.addChild( ce );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -6,8 +6,9 @@
import org.drools.rule.Declaration;
public interface DataProvider {
-
+
public Declaration[] getRequiredDeclarations();
- public Iterator getResults(Tuple tuple, WorkingMemory wm, PropagationContext ctx);
+ public Iterator getResults(Tuple tuple, WorkingMemory wm, PropagationContext ctx);
+
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -8,6 +8,7 @@
import junit.framework.TestCase;
+import org.drools.Cheese;
import org.drools.FactHandle;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
@@ -18,6 +19,7 @@
import org.drools.reteoo.ReteTuple;
import org.drools.reteoo.ReteooRuleBase;
import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.rule.Package;
import org.drools.spi.ColumnExtractor;
@@ -45,12 +47,16 @@
public void testWithDeclarationsHelloWorld() throws Exception {
+ Column column = new Column(0, new ClassObjectType( Cheese.class ) );
+
Extractor ex = new ColumnExtractor(new ClassObjectType(TestVariable.class));
- Declaration varDec = new Declaration("var", ex, 0);
+ Declaration varDec = new Declaration("var", ex, column);
declarations.put("var", varDec);
+
+ column = new Column(1, new ClassObjectType( Cheese.class ) );
ex = new ColumnExtractor(new ClassObjectType(String.class));
- Declaration var2Dec = new Declaration("var2", ex, 1);
+ Declaration var2Dec = new Declaration("var2", ex, column);
declarations.put( "var2", var2Dec );
List args = new ArrayList();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -2,6 +2,9 @@
import junit.framework.TestCase;
+import org.drools.Cheese;
+import org.drools.base.ClassObjectType;
+import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.rule.Package;
import org.drools.spi.Extractor;
@@ -68,9 +71,11 @@
Extractor extractName = new FactTemplateFieldExtractor( cheese,
0 );
+ Column column = new Column(0, new FactTemplateObjectType( cheese ) );
+
final Declaration declaration = new Declaration( "typeOfCheese",
extractName,
- 0 );
+ column );
Fact brie = cheese.createFact( 12 );
brie.setFieldValue( "name",
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -12,10 +12,12 @@
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
import org.drools.common.PropagationContextImpl;
+import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.rule.LiteralConstraint;
import org.drools.rule.VariableConstraint;
@@ -131,10 +133,12 @@
final ClassFieldExtractor ageExtractor = new ClassFieldExtractor( Person.class,
"age" );
+
+ Column column = new Column(0, new ClassObjectType( Person.class ) );
Declaration declaration = new Declaration( "age",
ageExtractor,
- 0 );
+ column );
VariableConstraint variableConstraint = new VariableConstraint( priceExtractor,
declaration,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -21,11 +21,14 @@
import junit.framework.Assert;
+import org.drools.Cheese;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
import org.drools.reteoo.ReteTuple;
+import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -45,9 +48,12 @@
super.setUp();
final ClassFieldExtractor extractor = new ClassFieldExtractor( DummyValueObject.class,
"booleanAttr" );
+
+ Column column = new Column(0, new ClassObjectType( DummyValueObject.class ) );
+
final Declaration declaration = new Declaration( "myBoolean",
extractor,
- 0 );
+ column );
final Evaluator evaluator = ValueType.BOOLEAN_TYPE.getEvaluator( Operator.EQUAL );
this.memory = new BooleanConstrainedLeftMemory( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -22,11 +22,13 @@
import junit.framework.Assert;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
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.util.MultiLinkedListNodeWrapper;
@@ -46,9 +48,12 @@
super.setUp();
final ClassFieldExtractor extractor = new ClassFieldExtractor( DummyValueObject.class,
"booleanAttr" );
+
+ Column column = new Column(0, new ClassObjectType( DummyValueObject.class ) );
+
final Declaration declaration = new Declaration( "myBoolean",
extractor,
- 0 );
+ column );
final Evaluator evaluator = ValueType.BOOLEAN_TYPE.getEvaluator( Operator.EQUAL );
this.memory = new BooleanConstrainedRightMemory( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -22,10 +22,12 @@
import junit.framework.Assert;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
import org.drools.reteoo.ReteTuple;
+import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -44,9 +46,12 @@
super.setUp();
final ClassFieldExtractor extractor = new ClassFieldExtractor( DummyValueObject.class,
"objectAttr" );
+
+ Column column = new Column(0, new ClassObjectType( DummyValueObject.class ) );
+
final Declaration declaration = new Declaration( "myObject",
extractor,
- 0 );
+ column );
final Evaluator evaluator = ValueType.OBJECT_TYPE.getEvaluator( Operator.EQUAL );
this.memory = new ObjectEqualConstrLeftMemory( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -22,11 +22,13 @@
import junit.framework.Assert;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
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.util.MultiLinkedListNodeWrapper;
@@ -46,9 +48,12 @@
super.setUp();
final ClassFieldExtractor extractor = new ClassFieldExtractor( DummyValueObject.class,
"objectAttr" );
+
+ Column column = new Column(0, new ClassObjectType( DummyValueObject.class ) );
+
final Declaration declaration = new Declaration( "myObject",
extractor,
- 0 );
+ column );
final Evaluator evaluator = ValueType.OBJECT_TYPE.getEvaluator( Operator.EQUAL );
this.memory = new ObjectEqualConstrRightMemory( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -22,10 +22,12 @@
import junit.framework.Assert;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
import org.drools.reteoo.ReteTuple;
+import org.drools.rule.Column;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
import org.drools.util.MultiLinkedListNodeWrapper;
@@ -45,9 +47,12 @@
super.setUp();
final ClassFieldExtractor extractor = new ClassFieldExtractor( DummyValueObject.class,
"objectAttr" );
+
+ Column column = new Column(0, new ClassObjectType( DummyValueObject.class ) );
+
final Declaration declaration = new Declaration( "myObject",
extractor,
- 0 );
+ column );
final Evaluator evaluator = ValueType.OBJECT_TYPE.getEvaluator( Operator.NOT_EQUAL );
this.memory = new ObjectNotEqualConstrLeftMemory( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -22,11 +22,13 @@
import junit.framework.Assert;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.DefaultFactHandle;
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.util.MultiLinkedListNodeWrapper;
@@ -46,9 +48,13 @@
super.setUp();
final ClassFieldExtractor extractor = new ClassFieldExtractor( DummyValueObject.class,
"objectAttr" );
+
+ Column column = new Column(0, new ClassObjectType( DummyValueObject.class ) );
+
final Declaration declaration = new Declaration( "myObject",
extractor,
- 0 );
+ column );
+
final Evaluator evaluator = ValueType.OBJECT_TYPE.getEvaluator( Operator.NOT_EQUAL );
this.memory = new ObjectNotEqualConstrRightMemory( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -24,6 +24,7 @@
import org.drools.Cheese;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.spi.FieldExtractor;
public class DeclarationTest extends TestCase {
@@ -31,12 +32,14 @@
public void testDeclaration() throws IntrospectionException {
final FieldExtractor extractor = new ClassFieldExtractor( Cheese.class,
"type" );
-
+
+ Column column = new Column(5, new ClassObjectType( Cheese.class ) );
+
/* Bind the extractor to a decleration */
/* Declarations know the column they derive their value from */
final Declaration declaration = new Declaration( "typeOfCheese",
extractor,
- 5 );
+ column );
assertEquals( "typeOfCheese",
declaration.getIdentifier() );
@@ -48,7 +51,7 @@
declaration.getExtractor() );
assertEquals( 5,
- declaration.getColumn() );
+ declaration.getColumn().getFactIndex() );
}
@@ -56,11 +59,13 @@
final FieldExtractor extractor = new ClassFieldExtractor( Cheese.class,
"type" );
- /* Bind the extractor to a decleration */
- /* Declarations know the column they derive their value from */
+ Column column = new Column(5, new ClassObjectType( Cheese.class ) );
+
+ // Bind the extractor to a decleration
+ // Declarations know the column they derive their value from
final Declaration declaration = new Declaration( "typeOfCheese",
extractor,
- 5 );
+ column );
/* Create some facts */
final Cheese cheddar = new Cheese( "cheddar",
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java 2006-08-16 18:06:31 UTC (rev 5919)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java 2006-08-16 18:07:59 UTC (rev 5920)
@@ -25,6 +25,7 @@
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
import org.drools.common.InternalFactHandle;
@@ -112,17 +113,22 @@
final FieldExtractor priceExtractor = new ClassFieldExtractor( Cheese.class,
"price" );
+ Column column = new Column(0, new ClassObjectType( Cheese.class ) );
+
// Bind the extractor to a decleration
// Declarations know the column they derive their value form
final Declaration price1Declaration = new Declaration( "price1",
priceExtractor,
- 0 );
+ column );
+
+ column = new Column(1, new ClassObjectType( Cheese.class ) );
+
// Bind the extractor to a decleration
// Declarations know the column they derive their value form
final Declaration price2Declaration = new Declaration( "price2",
priceExtractor,
- 1 );
+ column );
final PredicateExpression evaluator = new PredicateExpression() {
@@ -184,12 +190,14 @@
final FieldExtractor priceExtractor = new ClassFieldExtractor( Cheese.class,
"price" );
+
+ Column column = new Column(0, new ClassObjectType( Cheese.class ) );
// Bind the extractor to a decleration
// Declarations know the column they derive their value form
final Declaration priceDeclaration = new Declaration( "price1",
priceExtractor,
- 0 );
+ column );
final ReturnValueExpression isDoubleThePrice = new ReturnValueExpression() {
/**
More information about the jboss-svn-commits
mailing list