[jboss-svn-commits] JBL Code SVN: r17090 - in labs/jbossrules/branches/temporal_rete/drools-compiler/src: main/java/org/drools/lang and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Dec 7 09:11:17 EST 2007
Author: tirelli
Date: 2007-12-07 09:11:16 -0500 (Fri, 07 Dec 2007)
New Revision: 17090
Modified:
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/eventgenerator/SimpleEventGenerator.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl
Log:
JBRULES-1356: adding support to pluggable evaluators in core
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -25,6 +25,8 @@
import org.drools.RuntimeDroolsException;
import org.drools.base.accumulators.AccumulateFunction;
+import org.drools.base.evaluators.EvaluatorDefinition;
+import org.drools.base.evaluators.EvaluatorDefinitionRegistry;
import org.drools.util.ChainedProperties;
/**
@@ -38,6 +40,7 @@
*
* drools.dialect.default = <String>
* drools.accumulate.function.<function name> = <qualified class>
+ * drools.evaluator.<ident> = <qualified class>
*
* default dialect is java.
* Available preconfigured Accumulate functions are:
@@ -51,6 +54,8 @@
private static final String ACCUMULATE_FUNCTION_PREFIX = "drools.accumulate.function.";
+ private static final String EVALUATOR_DEFINITION_PREFIX = "drools.evaluator.";
+
private Map dialectConfigurations;
private String defaultDialect;
@@ -59,7 +64,9 @@
private ChainedProperties chainedProperties;
- private Map accumulateFunctions;
+ private Map<String, String> accumulateFunctions;
+
+ private EvaluatorDefinitionRegistry evaluatorDefinitionRegistry;
/**
* Constructor that sets the parent class loader for the package being built/compiled
@@ -117,6 +124,8 @@
buildDialectConfigurationMap();
buildAccumulateFunctionsMap();
+
+ buildEvaluatorRegistry();
}
public ChainedProperties getChainedProperties() {
@@ -199,7 +208,7 @@
}
private void buildAccumulateFunctionsMap() {
- this.accumulateFunctions = new HashMap();
+ this.accumulateFunctions = new HashMap<String, String>();
Map temp = new HashMap();
this.chainedProperties.mapStartsWith( temp,
ACCUMULATE_FUNCTION_PREFIX,
@@ -208,11 +217,11 @@
Map.Entry entry = (Map.Entry) it.next();
String identifier = ((String) entry.getKey()).trim().substring( ACCUMULATE_FUNCTION_PREFIX.length() );
this.accumulateFunctions.put( identifier,
- entry.getValue() );
+ (String) entry.getValue() );
}
}
- public Map getAccumulateFunctionsMap() {
+ public Map<String, String> getAccumulateFunctionsMap() {
return Collections.unmodifiableMap( this.accumulateFunctions );
}
@@ -229,7 +238,7 @@
}
public AccumulateFunction getAccumulateFunction(String identifier) {
- String className = (String) this.accumulateFunctions.get( identifier );
+ String className = this.accumulateFunctions.get( identifier );
if ( className == null ) {
throw new RuntimeDroolsException( "No accumulator function found for identifier: " + identifier );
}
@@ -240,12 +249,59 @@
throw new RuntimeDroolsException( "Error loading accumulator function for identifier " + identifier + ". Class " + className + " not found",
e );
} catch ( InstantiationException e ) {
- throw new RuntimeDroolsException( "Error loading accumulator function for identifier " + identifier + ". Class " + className + " not found",
+ throw new RuntimeDroolsException( "Error loading accumulator function for identifier " + identifier + ". Instantiation failed for class " + className,
e );
} catch ( IllegalAccessException e ) {
- throw new RuntimeDroolsException( "Error loading accumulator function for identifier " + identifier + ". Class " + className + " not found",
+ throw new RuntimeDroolsException( "Error loading accumulator function for identifier " + identifier + ". Illegal access to class " + className,
e );
}
}
+ private void buildEvaluatorRegistry() {
+ this.evaluatorDefinitionRegistry = new EvaluatorDefinitionRegistry( this.classLoader );
+ Map temp = new HashMap();
+ this.chainedProperties.mapStartsWith( temp,
+ EVALUATOR_DEFINITION_PREFIX,
+ true );
+ for ( Iterator it = temp.values().iterator(); it.hasNext(); ) {
+ String className = (String) it.next();
+ this.evaluatorDefinitionRegistry.addEvaluatorDefinition( className );
+ }
+ }
+
+ /**
+ * Returns the evaluator registry for this package builder configuration
+ * @return
+ */
+ public EvaluatorDefinitionRegistry getEvaluatorRegistry() {
+ return this.evaluatorDefinitionRegistry;
+ }
+
+ /**
+ * Adds an evaluator definition class to the registry using the
+ * evaluator class name. The class will be loaded and the corresponting
+ * evaluator ID will be added to the registry. In case there exists
+ * an implementation for that ID already, the new implementation will
+ * replace the previous one.
+ *
+ * @param className the name of the class for the implementation definition.
+ * The class must implement the EvaluatorDefinition interface.
+ *
+ */
+ public void addEvaluatorDefinition( String className ) {
+ this.evaluatorDefinitionRegistry.addEvaluatorDefinition( className );
+ }
+
+ /**
+ * Adds an evaluator definition class to the registry. In case there exists
+ * an implementation for that evaluator ID already, the new implementation will
+ * replace the previous one.
+ *
+ * @param def the evaluator definition to be added.
+ *
+ */
+ public void addEvaluatorDefinition( EvaluatorDefinition def ) {
+ this.evaluatorDefinitionRegistry.addEvaluatorDefinition( def );
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/lang/MVELDumper.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -118,31 +118,31 @@
boolean isNegated,
String value) {
Operator op = Operator.determineOperator( evaluator, isNegated );
- if( op == Operator.MEMBEROF ) {
+ if( op == Operator.determineOperator( "memberOf", false ) ) {
evaluator = "contains";
return evaluatorPrefix( evaluator ) +
value + " " +
evaluator( evaluator ) + " " +
this.fieldName + evaluatorSufix( evaluator );
- } else if(op == Operator.NOTMEMBEROF) {
+ } else if(op == Operator.determineOperator( "memberOf", true )) {
evaluator = "not contains";
return evaluatorPrefix( evaluator ) +
value + " " +
evaluator( evaluator ) + " " +
this.fieldName + evaluatorSufix( evaluator );
- } else if(op == Operator.EXCLUDES) {
+ } else if(op == Operator.determineOperator( "excludes", false ) ) {
evaluator = "not contains";
return evaluatorPrefix( evaluator ) +
this.fieldName + " " +
evaluator( evaluator ) + " " +
value + evaluatorSufix( evaluator );
- } else if(op == Operator.MATCHES) {
+ } else if(op == Operator.determineOperator( "matches", false )) {
evaluator = "~=";
return evaluatorPrefix( evaluator ) +
this.fieldName + " " +
evaluator( evaluator ) + " " +
value.replaceAll( "\\\\", "\\\\\\\\" ) + evaluatorSufix( evaluator );
- } else if(op == Operator.NOT_MATCHES) {
+ } else if(op == Operator.determineOperator( "matches", true )) {
evaluator = "not ~=";
return evaluatorPrefix( evaluator ) +
this.fieldName + " " +
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -24,7 +24,7 @@
import org.drools.base.ClassObjectType;
import org.drools.base.FieldFactory;
import org.drools.base.ValueType;
-import org.drools.base.evaluators.Operator;
+import org.drools.base.evaluators.EvaluatorDefinition;
import org.drools.compiler.Dialect;
import org.drools.compiler.RuleError;
import org.drools.facttemplates.FactTemplate;
@@ -122,7 +122,8 @@
try {
final Class userProvidedClass = context.getDialect().getTypeResolver().resolveType( patternDescr.getObjectType() );
final boolean isEvent = context.getPkg().isEvent( userProvidedClass );
- objectType = new ClassObjectType( userProvidedClass, isEvent );
+ objectType = new ClassObjectType( userProvidedClass,
+ isEvent );
} catch ( final ClassNotFoundException e ) {
context.getErrors().add( new RuleError( context.getRule(),
patternDescr,
@@ -147,7 +148,7 @@
0, // offset is 0 by default
objectType,
patternDescr.getIdentifier(),
- patternDescr.isInternalFact());
+ patternDescr.isInternalFact() );
} else {
pattern = new Pattern( context.getNextPatternId(),
0, // offset is 0 by default
@@ -274,7 +275,7 @@
fieldName,
false );
if ( extractor == null ) {
- if( fieldConstraintDescr.getFieldName().startsWith( "this." ) ) {
+ if ( fieldConstraintDescr.getFieldName().startsWith( "this." ) ) {
// it may still be MVEL special syntax, like map key syntax, so try eval
rewriteToEval( context,
pattern,
@@ -287,7 +288,7 @@
context.getErrors().add( new RuleError( context.getRule(),
fieldConstraintDescr,
null,
- "Unable to create Field Extractor for '" + fieldName + "' of '"+pattern.getObjectType().toString()+"' in rule '"+context.getRule().getName()+"'" ) );
+ "Unable to create Field Extractor for '" + fieldName + "' of '" + pattern.getObjectType().toString() + "' in rule '" + context.getRule().getName() + "'" ) );
return;
}
}
@@ -320,7 +321,7 @@
context.getErrors().add( new RuleError( context.getRule(),
fieldConstraintDescr,
null,
- "This is a bug: Unkown restriction type '" + restriction.getClass() + "' for pattern '"+pattern.getObjectType().toString()+"' in rule '"+context.getRule().getName()+"'" ) );
+ "This is a bug: Unkown restriction type '" + restriction.getClass() + "' for pattern '" + pattern.getObjectType().toString() + "' in rule '" + context.getRule().getName() + "'" ) );
}
if ( container == null ) {
@@ -377,15 +378,15 @@
} else {
restrictions[index] = buildRestriction( context,
- pattern,
- extractor,
- fieldConstraintDescr,
- restrictionDescr );
- if( restrictions[index] == null ) {
+ pattern,
+ extractor,
+ fieldConstraintDescr,
+ restrictionDescr );
+ if ( restrictions[index] == null ) {
context.getErrors().add( new RuleError( context.getRule(),
fieldConstraintDescr,
null,
- "Unable to create restriction '" + restrictionDescr.toString() + "' for field '"+ fieldConstraintDescr.getFieldName() +"' in the rule '" + context.getRule().getName() + "'" ) );
+ "Unable to create restriction '" + restrictionDescr.toString() + "' for field '" + fieldConstraintDescr.getFieldName() + "' in the rule '" + context.getRule().getName() + "'" ) );
}
index++;
}
@@ -401,7 +402,8 @@
context.getErrors().add( new RuleError( context.getRule(),
fieldConstraintDescr,
null,
- "This is a bug: Impossible to create a composite restriction for connective: " + top.getConnective()+ "' for field '"+ fieldConstraintDescr.getFieldName() +"' in the rule '" + context.getRule().getName() + "'" ) );
+ "This is a bug: Impossible to create a composite restriction for connective: " + top.getConnective() + "' for field '" + fieldConstraintDescr.getFieldName() + "' in the rule '"
+ + context.getRule().getName() + "'" ) );
}
return composite;
@@ -411,7 +413,7 @@
context.getErrors().add( new RuleError( context.getRule(),
fieldConstraintDescr,
null,
- "This is a bug: trying to create a restriction for an empty restriction list for field '"+ fieldConstraintDescr.getFieldName() +"' in the rule '" + context.getRule().getName() + "'" ) );
+ "This is a bug: trying to create a restriction for an empty restriction list for field '" + fieldConstraintDescr.getFieldName() + "' in the rule '" + context.getRule().getName() + "'" ) );
return null;
}
@@ -700,8 +702,8 @@
}
}
}
-
- if( implicit != null ) {
+
+ if ( implicit != null ) {
final Evaluator evaluator = getEvaluator( context,
qiRestrictionDescr,
extractor.getValueType(),
@@ -843,15 +845,26 @@
final BaseDescr descr,
final ValueType valueType,
final String evaluatorString,
- final boolean isNegated ) {
+ final boolean isNegated) {
- final Evaluator evaluator = valueType.getEvaluator( Operator.determineOperator( evaluatorString, isNegated ) );
+ final EvaluatorDefinition def = context.getConfiguration().getEvaluatorRegistry().getEvaluatorDefinition( evaluatorString );
+ if ( def == null ) {
+ context.getErrors().add( new RuleError( context.getRule(),
+ descr,
+ null,
+ "Unable to determine the Evaluator for ID '" + evaluatorString + "'" ) );
+ }
+ final Evaluator evaluator = def.getEvaluator( valueType,
+ evaluatorString,
+ isNegated,
+ null );
+
if ( evaluator == null ) {
context.getErrors().add( new RuleError( context.getRule(),
descr,
null,
- "Unable to determine the Evaluator for '" + valueType + "' and '" + evaluatorString + "'" ) );
+ "Evaluator '" + (isNegated ? "not " : "") + evaluatorString + "' does not support type '" + valueType ) );
}
return evaluator;
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -25,13 +25,16 @@
objectType,
null );
ClassLoader classloader = context.getPkg().getPackageCompilationData().getClassLoader();
- final FieldExtractor extractor = context.getDialect().getClassFieldExtractorCache().getExtractor( DroolsQuery.class, "name", classloader );
+ final FieldExtractor extractor = context.getDialect().getClassFieldExtractorCache().getExtractor( DroolsQuery.class,
+ "name",
+ classloader );
final FieldValue field = FieldFactory.getFieldValue( queryDescr.getName(),
ValueType.STRING_TYPE );
final LiteralConstraint constraint = new LiteralConstraint( extractor,
- ValueType.STRING_TYPE.getEvaluator( Operator.EQUAL ),
+ context.getConfiguration().getEvaluatorRegistry().getEvaluator( ValueType.STRING_TYPE,
+ Operator.EQUAL ),
field );
// adds appropriate constraint to the pattern
pattern.addConstraint( constraint );
@@ -52,17 +55,17 @@
String[] types = queryDescr.getParameterTypes();
int i = 0;
try {
- for ( i = 0; i < params.length; i++ ) {
- pattern.addDeclaration( params[i],
- new ArrayExtractor( arrayExtractor,
- i,
- context.getDialect().getTypeResolver().resolveType( types[i] ) ) );
- }
+ for ( i = 0; i < params.length; i++ ) {
+ pattern.addDeclaration( params[i],
+ new ArrayExtractor( arrayExtractor,
+ i,
+ context.getDialect().getTypeResolver().resolveType( types[i] ) ) );
+ }
} catch ( ClassNotFoundException e ) {
context.getErrors().add( new RuleError( context.getRule(),
queryDescr,
e,
- "Unable to resolve type '" + types[i] + " for parameter" + params[i] ) );
+ "Unable to resolve type '" + types[i] + " for parameter" + params[i] ) );
}
return pattern;
}
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -24,9 +24,7 @@
import java.util.Map;
import java.util.Stack;
-import org.drools.base.evaluators.DateFactory;
import org.drools.compiler.Dialect;
-import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.AttributeDescr;
@@ -36,6 +34,7 @@
import org.drools.rule.Query;
import org.drools.rule.Rule;
import org.drools.spi.DeclarationScopeResolver;
+import org.drools.util.DateUtils;
/**
* A context for the current build
@@ -319,11 +318,11 @@
}
} else if ( name.equals( "date-effective" ) ) {
final Calendar cal = Calendar.getInstance();
- cal.setTime( DateFactory.parseDate( attributeDescr.getValue() ) );
+ cal.setTime( DateUtils.parseDate( attributeDescr.getValue() ) );
rule.setDateEffective( cal );
} else if ( name.equals( "date-expires" ) ) {
final Calendar cal = Calendar.getInstance();
- cal.setTime( DateFactory.parseDate( attributeDescr.getValue() ) );
+ cal.setTime( DateUtils.parseDate( attributeDescr.getValue() ) );
rule.setDateExpires( cal );
} else if ( name.equals( "dialect" ) ) {
rule.setDialect( attributeDescr.getValue() );
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf 2007-12-07 14:11:16 UTC (rev 17090)
@@ -10,3 +10,10 @@
drools.accumulate.function.min = org.drools.base.accumulators.MinAccumulateFunction
drools.accumulate.function.count = org.drools.base.accumulators.CountAccumulateFunction
drools.accumulate.function.sum = org.drools.base.accumulators.SumAccumulateFunction
+
+drools.evaluator.after = org.drools.base.evaluators.AfterEvaluatorDefinition
+drools.evaluator.equality = org.drools.base.evaluators.EqualityEvaluatorsDefinition
+drools.evaluator.comparable = org.drools.base.evaluators.ComparableEvaluatorsDefinition
+drools.evaluator.set = org.drools.base.evaluators.SetEvaluatorsDefinition
+drools.evaluator.matches = org.drools.base.evaluators.MatchesEvaluatorsDefinition
+drools.evaluator.soundslike = org.drools.base.evaluators.SoundslikeEvaluatorsDefinition
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2007-12-07 14:11:16 UTC (rev 17090)
@@ -231,6 +231,7 @@
| r=rule { this.packageDescr.addRule( $r.rule ); }
| q=query { this.packageDescr.addRule( $q.query ); }
;
+
package_statement returns [String packageName]
@init{
$packageName = null;
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -110,6 +110,64 @@
}
+ public void FIXME_testTimeRelationalOperators() throws Exception {
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_TimeRelationalOperators.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final TemporalSession<SessionPseudoClock> wm = ruleBase.newTemporalSession( ClockType.PSEUDO_CLOCK );
+ final SessionPseudoClock clock = wm.getSessionClock();
+
+ clock.setStartupTime( 1000 );
+ final List results = new ArrayList();
+
+ wm.setGlobal( "results",
+ results );
+
+ StockTick tick1 = new StockTick( 1,
+ "DROO",
+ 50,
+ System.currentTimeMillis() );
+ StockTick tick2 = new StockTick( 2,
+ "ACME",
+ 10,
+ System.currentTimeMillis() );
+ StockTick tick3 = new StockTick( 3,
+ "ACME",
+ 10,
+ System.currentTimeMillis() );
+ StockTick tick4 = new StockTick( 4,
+ "DROO",
+ 50,
+ System.currentTimeMillis() );
+
+ InternalFactHandle handle1 = (InternalFactHandle) wm.insert( tick1 );
+ clock.advanceTime( 4 );
+ InternalFactHandle handle2 = (InternalFactHandle) wm.insert( tick2 );
+ clock.advanceTime( 4 );
+ InternalFactHandle handle3 = (InternalFactHandle) wm.insert( tick3 );
+ clock.advanceTime( 4 );
+ InternalFactHandle handle4 = (InternalFactHandle) wm.insert( tick4 );
+
+ assertNotNull( handle1 );
+ assertNotNull( handle2 );
+ assertNotNull( handle3 );
+ assertNotNull( handle4 );
+
+ assertTrue( handle1.isEvent() );
+ assertTrue( handle2.isEvent() );
+ assertTrue( handle3.isEvent() );
+ assertTrue( handle4.isEvent() );
+
+ wm.fireAllRules();
+
+ assertEquals( 1,
+ results.size() );
+ assertEquals( tick3,
+ results.get( 0 ) );
+
+ }
+
public void testSimpleTimeWindow() throws Exception {
// read in the source
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_SimpleTimeWindow.drl" ) );
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -19,13 +19,13 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.evaluators.DateFactory;
import org.drools.common.DroolsObjectInputStream;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.lang.descr.PackageDescr;
import org.drools.rule.Package;
+import org.drools.util.DateUtils;
import org.mvel.MVEL;
public class MVELTest extends TestCase {
@@ -67,7 +67,7 @@
assertEquals( "hello world", list2.get(0));
- Date dt = DateFactory.parseDate( "10-Jul-1974" );
+ Date dt = DateUtils.parseDate( "10-Jul-1974" );
assertEquals(dt, c.getUsedBy());
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/eventgenerator/SimpleEventGenerator.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/eventgenerator/SimpleEventGenerator.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/eventgenerator/SimpleEventGenerator.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -231,7 +231,6 @@
class EventGenerationTimeComparator implements Comparator<EventOccurrence>{
- @Override
public int compare(EventOccurrence o1, EventOccurrence o2) {
return (int)(o1.getNextOccurrenceTime()-o2.getNextOccurrenceTime());
}
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -14,7 +14,6 @@
import org.drools.base.ClassObjectType;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
-import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.PredicateDescr;
@@ -105,20 +104,21 @@
final Cheese cheddar = new Cheese( "cheddar",
10 );
final InternalFactHandle f0 = (InternalFactHandle) wm.insert( cheddar );
+ final InternalFactHandle f1 = (InternalFactHandle) wm.insert( stilton );
final ReteTuple tuple = new ReteTuple( f0 );
final PredicateContextEntry predicateContext = new PredicateContextEntry();
predicateContext.leftTuple = tuple;
assertTrue( predicate.isAllowedCachedLeft( predicateContext,
- stilton ) );
+ f1 ) );
cheddar.setPrice( 9 );
wm.update( f0,
cheddar );
assertFalse( predicate.isAllowedCachedLeft( predicateContext,
- stilton ) );
+ f1 ) );
}
}
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2007-12-07 14:11:16 UTC (rev 17090)
@@ -16,7 +16,6 @@
import org.drools.base.evaluators.Operator;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
-import org.drools.compiler.DialectConfiguration;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.ReturnValueRestrictionDescr;
@@ -29,7 +28,7 @@
import org.drools.spi.FieldExtractor;
public class MVELReturnValueBuilderTest extends TestCase {
-
+
private ClassFieldExtractorCache cache;
public void setUp() {
@@ -42,18 +41,19 @@
PackageBuilder pkgBuilder = new PackageBuilder( pkg );
final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
- MVELDialect mvelDialect = ( MVELDialect ) pkgBuilder.getDialectRegistry().getDialect( "mvel" );
+ MVELDialect mvelDialect = (MVELDialect) pkgBuilder.getDialectRegistry().getDialect( "mvel" );
final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
pkg,
ruleDescr,
pkgBuilder.getDialectRegistry(),
mvelDialect );
-
+
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
- final FieldExtractor extractor = cache.getExtractor( Cheese.class, "price",
- getClass().getClassLoader() );
-
+ final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ "price",
+ getClass().getClassLoader() );
+
final Pattern patternA = new Pattern( 0,
new ClassObjectType( int.class ) );
@@ -92,7 +92,8 @@
previousDeclarations,
localDeclarations,
requiredGlobals,
- ValueType.PINTEGER_TYPE.getEvaluator( Operator.EQUAL ) );
+ context.getConfiguration().getEvaluatorRegistry().getEvaluator( ValueType.PINTEGER_TYPE,
+ Operator.EQUAL ) );
builder.build( context,
usedIdentifiers,
@@ -118,14 +119,17 @@
final Cheese brie = new Cheese( "brie",
20 );
+ final InternalFactHandle f2 = (InternalFactHandle) wm.insert( brie );
+
assertTrue( returnValue.isAllowed( extractor,
- brie,
+ f2,
tuple,
wm ) );
brie.setPrice( 18 );
+ wm.update( f2, brie );
assertFalse( returnValue.isAllowed( extractor,
- brie,
+ f2,
tuple,
wm ) );
}
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl 2007-12-07 14:10:27 UTC (rev 17089)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleTimeWindow.drl 2007-12-07 14:11:16 UTC (rev 17090)
@@ -5,7 +5,6 @@
global java.util.List results;
rule "average over threshold"
- //time-window 30 seconds
when
Number( $avg : intValue >= 50 ) from accumulate(
OrderEvent( $amt : total ),
More information about the jboss-svn-commits
mailing list