[jboss-svn-commits] JBL Code SVN: r30651 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/command and 17 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Dec 14 18:20:18 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-12-14 18:20:16 -0500 (Mon, 14 Dec 2009)
New Revision: 30651
Added:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DateFormats.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/builder/impl/DateFormatsImpl.java
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Calendars.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/EnvironmentName.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCalendarCoercion.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDateCoercion.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/CronTrigger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/IntervalTrigger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/PointInTimeTrigger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/DateUtils.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELCalendarCoercionTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELDateCoercionTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java
Log:
JBRULES-2373 Add String converter
-Added various points for String based conversion, but not working yet, just basic plumbing.
Currently hard coded to dates.
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DateFormats.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DateFormats.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DateFormats.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -0,0 +1,13 @@
+package org.drools.builder;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+public interface DateFormats {
+ DateFormat get(String identifier);
+
+ void set(String identifier,
+ DateFormat value);
+
+ Date parse(String identifer, String date);
+}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -18,8 +18,8 @@
* drools-transformer-xstream is added then the PipelineFactory can be used in conjunction with the BatchExecutionHelper to marshall to and from XML. BatchExecutionHelper
* also provides additional documentation on the supported XML format.
* </p>
+ *`
*
- *
* <p>This api is experimental and thus the classes and the interfaces returned are subject to change.</p>
*/
public class CommandFactory {
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Calendars.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Calendars.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Calendars.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -6,5 +6,5 @@
Calendar get(String identifier);
void set(String identifier,
- Calendar value);
+ Calendar value);
}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/EnvironmentName.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/EnvironmentName.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/EnvironmentName.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -6,4 +6,6 @@
public static final String TRANSACTION_MANAGER = "drools.persistence.jpa.TransactionManager";
public static final String OBJECT_MARSHALLING_STRATEGIES = "drools.marshalling.ObjectMarshallingStrategies";
public static final String GLOBALS = "drools.Globals";
+ public static final String CALENDARS = "org.drools.time.Calendars";
+ public static final String DATE_FORMATS = "org.drools.build.DateFormats";
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -41,9 +41,11 @@
import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassFieldAccessorStore;
import org.drools.base.evaluators.TimeIntervalParser;
+import org.drools.builder.DateFormats;
import org.drools.builder.DecisionTableConfiguration;
import org.drools.builder.ResourceConfiguration;
import org.drools.builder.ResourceType;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.common.InternalRuleBase;
import org.drools.commons.jci.problems.CompilationProblem;
import org.drools.definition.process.Process;
@@ -86,6 +88,7 @@
import org.drools.rule.TypeDeclaration;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.RuleBuilder;
+import org.drools.runtime.EnvironmentName;
import org.drools.spi.InternalReadAccessor;
import org.drools.util.DroolsStreamUtils;
import org.drools.xml.XmlChangeSetReader;
@@ -133,6 +136,8 @@
private List<DSLTokenizedMappingFile> dslFiles;
private TimeIntervalParser timeParser;
+
+ protected DateFormats dateFormats;
/**
* Use this when package is starting from scratch.
@@ -178,6 +183,12 @@
} else {
this.configuration = configuration;
}
+
+ this.dateFormats = null;//(DateFormats) this.environment.get( EnvironmentName.DATE_FORMATS );
+ if ( this.dateFormats == null ) {
+ this.dateFormats = new DateFormatsImpl();
+ //this.environment.set( EnvironmentName.DATE_FORMATS , this.dateFormats );
+ }
this.rootClassLoader = new CompositeClassLoader( this.configuration.getClassLoader() );
@@ -208,6 +219,12 @@
} else {
this.rootClassLoader = new CompositeClassLoader( this.configuration.getClassLoader() );
}
+
+ this.dateFormats = null;//(DateFormats) this.environment.get( EnvironmentName.DATE_FORMATS );
+ if ( this.dateFormats == null ) {
+ this.dateFormats = new DateFormatsImpl();
+ //this.environment.set( EnvironmentName.DATE_FORMATS , this.dateFormats );
+ }
// FIXME, we need to get drools to support "default" namespace.
//this.defaultNamespace = pkg.getName();
@@ -1202,6 +1219,10 @@
public Map<String, PackageRegistry> getPackageRegistry() {
return this.pkgRegistryMap;
}
+
+ public DateFormats getDateFormats() {
+ return this.dateFormats;
+ }
/**
* Returns an expander for DSLs (only if there is a DSL configured for this package).
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -806,7 +806,8 @@
}
field = FieldFactory.getFieldValue( value,
- extractor.getValueType() );
+ extractor.getValueType(),
+ context.getPackageBuilder().getDateFormats() );
} catch ( final Exception e ) {
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
literalRestrictionDescr,
@@ -899,7 +900,8 @@
try {
final Class staticClass = context.getDialect().getTypeResolver().resolveType( className );
field = FieldFactory.getFieldValue( staticClass.getField( fieldName ).get( null ),
- extractor.getValueType() );
+ extractor.getValueType(),
+ context.getPackageBuilder().getDateFormats() );
if ( field.isObjectField() ) {
((ObjectFieldImpl) field).setEnum( true );
((ObjectFieldImpl) field).setEnumName( staticClass.getName() );
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -28,7 +28,8 @@
final InternalReadAccessor extractor = PatternBuilder.getFieldReadAccessor( context, queryDescr, objectType, "name", null, true );
final FieldValue field = FieldFactory.getFieldValue( queryDescr.getName(),
- ValueType.STRING_TYPE );
+ ValueType.STRING_TYPE,
+ context.getPackageBuilder().getDateFormats() );
final LiteralConstraint constraint = new LiteralConstraint( extractor,
context.getConfiguration().getEvaluatorRegistry().getEvaluator( ValueType.STRING_TYPE,
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -125,11 +125,13 @@
buildCalendars( rule, attributeDescr.getValue(), context );
} else if ( name.equals( "date-effective" ) ) {
final Calendar cal = Calendar.getInstance();
- cal.setTime( DateUtils.parseDate( attributeDescr.getValue() ) );
+ cal.setTime( DateUtils.parseDate( attributeDescr.getValue(),
+ context.getPackageBuilder().getDateFormats() ) );
rule.setDateEffective( cal );
} else if ( name.equals( "date-expires" ) ) {
final Calendar cal = Calendar.getInstance();
- cal.setTime( DateUtils.parseDate( attributeDescr.getValue() ) );
+ cal.setTime( DateUtils.parseDate( attributeDescr.getValue(),
+ context.getPackageBuilder().getDateFormats() ) );
rule.setDateExpires( cal );
}
}
@@ -242,7 +244,8 @@
}
int equalsPos = timerString.indexOf( '=', startPos );
- startDate = DateUtils.parseDate( timerString.substring( equalsPos + 1, p ).trim() );
+ startDate = DateUtils.parseDate( timerString.substring( equalsPos + 1, p ).trim(),
+ context.getPackageBuilder().getDateFormats() );
}
if ( endPos != -1 ) {
@@ -256,7 +259,8 @@
}
int equalsPos = timerString.indexOf( '=', endPos );
- endDate = DateUtils.parseDate( timerString.substring( equalsPos + 1, p ).trim() );
+ endDate = DateUtils.parseDate( timerString.substring( equalsPos + 1, p ).trim(),
+ context.getPackageBuilder().getDateFormats() );
}
if ( repeatPos != -1 ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -27,6 +27,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
@@ -69,7 +70,8 @@
assertEquals( "hello world",
list2.get( 0 ) );
- Date dt = DateUtils.parseDate( "10-Jul-1974" );
+ Date dt = DateUtils.parseDate( "10-Jul-1974",
+ new DateFormatsImpl() );
assertEquals( dt,
c.getUsedBy() );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -350,19 +350,23 @@
public void testMVELSoundex() throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "MVEL_soundex.drl" ) );
- RuleBase ruleBase = loadRuleBase( reader );
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "MVEL_soundex.drl", getClass() ), ResourceType.DRL );
- ruleBase = SerializationHelper.serializeObject( ruleBase );
- StatefulSession session = ruleBase.newStatefulSession();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ kbase = SerializationHelper.serializeObject( kbase );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- session = SerializationHelper.getSerialisedStatefulSession( session,
- ruleBase );
+ ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession( ksession, true );
+
Cheese c = new Cheese( "fubar",
2 );
- session.insert( c );
- session.fireAllRules();
+ ksession.insert( c );
+ ksession.fireAllRules();
assertEquals( 42,
c.getPrice() );
}
@@ -370,16 +374,17 @@
public void testMVELRewrite() throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_MVELrewrite.drl" ) );
- RuleBase ruleBase = loadRuleBase( reader );
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_MVELrewrite.drl", getClass() ), ResourceType.DRL );
- ruleBase = SerializationHelper.serializeObject( ruleBase );
- StatefulSession session = ruleBase.newStatefulSession();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- session = SerializationHelper.getSerialisedStatefulSession( session,
- ruleBase );
+ ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession( ksession, true );
List results = new ArrayList();
- session.setGlobal( "results",
+ ksession.setGlobal( "results",
results );
Cheese brie = new Cheese( "brie",
@@ -390,8 +395,8 @@
cheesery.addCheese( brie );
cheesery.addCheese( stilton );
- session.insert( cheesery );
- session.fireAllRules();
+ ksession.insert( cheesery );
+ ksession.fireAllRules();
assertEquals( 1,
results.size() );
@@ -1317,39 +1322,43 @@
}
public void testExplicitAnd() throws Exception {
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_ExplicitAnd.drl" ) );
- final RuleBase ruleBase = loadRuleBase( reader );
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_ExplicitAnd.drl", getClass() ), ResourceType.DRL );
- StatefulSession session = ruleBase.newStatefulSession();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
final List list = new ArrayList();
- session.setGlobal( "list",
+ ksession.setGlobal( "list",
list );
- session.insert( new Message( "hola" ) );
+ ksession.insert( new Message( "hola" ) );
- session.fireAllRules();
+ ksession.fireAllRules();
assertEquals( 0,
list.size() );
- session.insert( new Cheese( "brie",
+ ksession.insert( new Cheese( "brie",
33 ) );
- session = SerializationHelper.getSerialisedStatefulSession( session,
- ruleBase );
- session.fireAllRules();
+ ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession( ksession, true );
+ ksession.fireAllRules();
assertEquals( 1,
- ((List) session.getGlobal( "list" )).size() );
+ ((List) ksession.getGlobal( "list" )).size() );
}
public void testHelloWorld() throws Exception {
-
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "HelloWorld.drl" ) );
- RuleBase ruleBase = loadRuleBase( reader );
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "HelloWorld.drl", getClass() ), ResourceType.DRL );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ ksession.setGlobal( "list",
list );
// go !
@@ -1357,13 +1366,13 @@
message.addToList( "hello" );
message.setNumber( 42 );
- workingMemory.insert( message );
- workingMemory.insert( "boo" );
+ ksession.insert( message );
+ ksession.insert( "boo" );
// workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ ksession.fireAllRules();
assertTrue( message.isFired() );
assertEquals( message,
- ((List) workingMemory.getGlobal( "list" )).get( 0 ) );
+ ((List) ksession.getGlobal( "list" )).get( 0 ) );
}
@@ -3435,18 +3444,22 @@
}
public void testInsurancePricingExample() throws Exception {
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "insurance_pricing_example.drl" ) );
- final RuleBase ruleBase = loadRuleBase( reader );
- final WorkingMemory wm = ruleBase.newStatefulSession();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "insurance_pricing_example.drl", getClass() ), ResourceType.DRL );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
// now create some test data
final Driver driver = new Driver();
final Policy policy = new Policy();
- wm.insert( driver );
- wm.insert( policy );
+ ksession.insert( driver );
+ ksession.insert( policy );
- wm.fireAllRules();
+ ksession.fireAllRules();
assertEquals( 120,
policy.getBasePrice() );
@@ -3455,10 +3468,16 @@
public void testLLR() throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_JoinNodeModifyTuple.drl" ) );
- RuleBase ruleBase = loadRuleBase( reader );
- final WorkingMemory wm = ruleBase.newStatefulSession();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_JoinNodeModifyTuple.drl", getClass() ), ResourceType.DRL );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession( ksession, true );
+
// 1st time
org.drools.Target tgt = new org.drools.Target();
tgt.setLabel( "Santa-Anna" );
@@ -3467,7 +3486,7 @@
tgt.setCourse( new Float( 145.0f ) );
tgt.setSpeed( new Float( 12.0f ) );
tgt.setTime( new Float( 1.8666667f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
tgt = new org.drools.Target();
tgt.setLabel( "Santa-Maria" );
@@ -3476,9 +3495,9 @@
tgt.setCourse( new Float( 325.0f ) );
tgt.setSpeed( new Float( 8.0f ) );
tgt.setTime( new Float( 1.8666667f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
- wm.fireAllRules();
+ ksession.fireAllRules();
// 2nd time
tgt = new org.drools.Target();
@@ -3488,7 +3507,7 @@
tgt.setCourse( new Float( 145.0f ) );
tgt.setSpeed( new Float( 12.0f ) );
tgt.setTime( new Float( 1.9f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
tgt = new org.drools.Target();
tgt.setLabel( "Santa-Maria" );
@@ -3497,9 +3516,9 @@
tgt.setCourse( new Float( 325.0f ) );
tgt.setSpeed( new Float( 8.0f ) );
tgt.setTime( new Float( 1.9f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
- wm.fireAllRules();
+ ksession.fireAllRules();
// 3d time
tgt = new org.drools.Target();
@@ -3509,7 +3528,7 @@
tgt.setCourse( new Float( 145.0f ) );
tgt.setSpeed( new Float( 12.0f ) );
tgt.setTime( new Float( 1.9333333f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
tgt = new org.drools.Target();
tgt.setLabel( "Santa-Maria" );
@@ -3518,9 +3537,9 @@
tgt.setCourse( new Float( 325.0f ) );
tgt.setSpeed( new Float( 8.0f ) );
tgt.setTime( new Float( 1.9333333f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
- wm.fireAllRules();
+ ksession.fireAllRules();
// 4th time
tgt = new org.drools.Target();
@@ -3530,7 +3549,7 @@
tgt.setCourse( new Float( 145.0f ) );
tgt.setSpeed( new Float( 12.0f ) );
tgt.setTime( new Float( 1.9666667f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
tgt = new org.drools.Target();
tgt.setLabel( "Santa-Maria" );
@@ -3539,9 +3558,9 @@
tgt.setCourse( new Float( 325.0f ) );
tgt.setSpeed( new Float( 8.0f ) );
tgt.setTime( new Float( 1.9666667f ) );
- wm.insert( tgt );
+ ksession.insert( tgt );
- wm.fireAllRules();
+ ksession.fireAllRules();
}
public void testDoubleQueryWithExists() throws Exception {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -28,6 +28,7 @@
import org.drools.base.ClassTypeResolver;
import org.drools.base.EnabledBoolean;
import org.drools.base.TypeResolver;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.compiler.Dialect;
import org.drools.compiler.DialectCompiletimeRegistry;
import org.drools.compiler.DrlParser;
@@ -187,9 +188,11 @@
// creates expected results
final Calendar effective = Calendar.getInstance();
- effective.setTime( DateUtils.parseDate( "10-Jul-1974" ) );
+ effective.setTime( DateUtils.parseDate( "10-Jul-1974",
+ new DateFormatsImpl() ) );
final Calendar expires = Calendar.getInstance();
- expires.setTime( DateUtils.parseDate( "10-Jul-2040" ) );
+ expires.setTime( DateUtils.parseDate( "10-Jul-2040",
+ new DateFormatsImpl() ) );
// defining expectations on the mock object
mockery.checking( new Expectations() {
@@ -197,6 +200,7 @@
// return values for the context
allowing( context ).getRule(); will( returnValue( rule ) );
allowing( context ).getRuleDescr(); will( returnValue( ruleDescr ) );
+ allowing( context ).getPackageBuilder(); will( returnValue( new PackageBuilder() ) );
// expected values for the rule object
oneOf( rule ).setNoLoop( true );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -18,6 +18,7 @@
import org.drools.RuleBase;
import org.drools.SessionConfiguration;
import org.drools.WorkingMemoryEntryPoint;
+import org.drools.builder.DateFormats;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
@@ -548,16 +549,6 @@
}
- public Collection< ? extends org.drools.runtime.rule.FactHandle> getFactHandles() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public Collection< ? extends org.drools.runtime.rule.FactHandle> getFactHandles(ObjectFilter filter) {
- // TODO Auto-generated method stub
- return null;
- }
-
public Collection< Object > getObjects() {
// TODO Auto-generated method stub
return null;
@@ -618,4 +609,19 @@
return 0;
}
+ public DateFormats getDateFormats() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public <T extends org.drools.runtime.rule.FactHandle> Collection<T> getFactHandles() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public <T extends org.drools.runtime.rule.FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -22,6 +22,7 @@
import org.drools.base.field.DoubleFieldImpl;
import org.drools.base.field.LongFieldImpl;
import org.drools.base.field.ObjectFieldImpl;
+import org.drools.builder.DateFormats;
import org.drools.spi.FieldValue;
import org.drools.util.DateUtils;
import org.drools.util.MathUtils;
@@ -38,7 +39,8 @@
}
public static FieldValue getFieldValue(final String value,
- ValueType valueType) {
+ ValueType valueType,
+ DateFormats dateFormats) {
FieldValue field = null;
if ( value == null ) {
valueType = ValueType.NULL_TYPE;
@@ -81,7 +83,7 @@
} else if ( valueType == ValueType.STRING_TYPE ) {
field = new ObjectFieldImpl( value.intern() );
} else if ( valueType == ValueType.DATE_TYPE ) {
- Date date = DateUtils.parseDate( value );
+ Date date = DateUtils.parseDate( value, dateFormats );
field = new ObjectFieldImpl( date );
} else if ( valueType == ValueType.ARRAY_TYPE ) {
//MN: I think its fine like this.
@@ -98,7 +100,8 @@
}
public static FieldValue getFieldValue(final Object value,
- ValueType valueType) {
+ ValueType valueType,
+ DateFormats dateFormats) {
FieldValue field = null;
if ( value == null ) {
valueType = ValueType.NULL_TYPE;
@@ -175,7 +178,7 @@
} else if ( valueType == ValueType.DATE_TYPE ) {
//MN: I think its fine like this, seems to work !
if( value instanceof String ) {
- Date date = DateUtils.parseDate( (String) value );
+ Date date = DateUtils.parseDate( (String) value, dateFormats );
field = new ObjectFieldImpl( date );
} else {
field = new ObjectFieldImpl( value );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -1085,7 +1085,7 @@
}
final Date value1 = (Date) extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) < 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) < 0;
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -1095,7 +1095,7 @@
}
final Date value1 = (Date) context.declaration.getExtractor().getValue( workingMemory, left );
final Object value2 = ((ObjectVariableContextEntry) context).right;
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) < 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) < 0;
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
@@ -1105,7 +1105,7 @@
}
final Date value1 = (Date) ((ObjectVariableContextEntry) context).left;
final Object value2 = context.extractor.getValue( workingMemory, right );
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) < 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) < 0;
}
public boolean evaluate(InternalWorkingMemory workingMemory,
@@ -1146,7 +1146,7 @@
}
final Date value1 = (Date) extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) <= 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) <= 0;
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -1156,7 +1156,7 @@
}
final Date value1 = (Date) context.declaration.getExtractor().getValue( workingMemory, left );
final Object value2 = ((ObjectVariableContextEntry) context).right;
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) <= 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) <= 0;
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
@@ -1166,7 +1166,7 @@
}
final Date value1 = (Date) ((ObjectVariableContextEntry) context).left;
final Object value2 = context.extractor.getValue( workingMemory, right );
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) <= 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) <= 0;
}
public boolean evaluate(InternalWorkingMemory workingMemory,
@@ -1207,7 +1207,7 @@
}
final Date value1 = (Date) extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) > 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) > 0;
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -1217,7 +1217,7 @@
}
final Date value1 = (Date) context.declaration.getExtractor().getValue( workingMemory, left );
final Object value2 = ((ObjectVariableContextEntry) context).right;
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) > 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) > 0;
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
@@ -1227,7 +1227,7 @@
}
final Date value1 = (Date) ((ObjectVariableContextEntry) context).left;
final Object value2 = context.extractor.getValue( workingMemory, right );
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) > 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) > 0;
}
public boolean evaluate(InternalWorkingMemory workingMemory,
@@ -1268,7 +1268,7 @@
}
final Date value1 = (Date) extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) >= 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) >= 0;
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -1278,7 +1278,7 @@
}
final Date value1 = (Date) context.declaration.getExtractor().getValue( workingMemory, left );
final Object value2 = ((ObjectVariableContextEntry) context).right;
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) >= 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) >= 0;
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
@@ -1288,7 +1288,7 @@
}
final Date value1 = (Date) ((ObjectVariableContextEntry) context).left;
final Object value2 = context.extractor.getValue( workingMemory, right );
- return DateUtils.getRightDate( value2 ).compareTo( value1 ) >= 0;
+ return DateUtils.getRightDate( value2, workingMemory.getDateFormats() ).compareTo( value1 ) >= 0;
}
public boolean evaluate(InternalWorkingMemory workingMemory,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -957,7 +957,7 @@
if ( value2 == null ) {
return false;
}
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) == 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) == 0;
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -970,7 +970,7 @@
if ( value2 == null ) {
return false;
}
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) == 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) == 0;
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
@@ -983,7 +983,7 @@
if ( value2 == null ) {
return false;
}
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) == 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) == 0;
}
public boolean evaluate(InternalWorkingMemory workingMemory,
@@ -1030,7 +1030,7 @@
if ( value2 == null ) {
return true;
}
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) != 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) != 0;
}
public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -1043,7 +1043,7 @@
if ( value2 == null ) {
return true;
}
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) != 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) != 0;
}
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
@@ -1056,7 +1056,7 @@
if ( value2 == null ) {
return true;
}
- return value1.compareTo( DateUtils.getRightDate( value2 ) ) != 0;
+ return value1.compareTo( DateUtils.getRightDate( value2, workingMemory.getDateFormats() ) ) != 0;
}
public boolean evaluate(InternalWorkingMemory workingMemory,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCalendarCoercion.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCalendarCoercion.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCalendarCoercion.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -2,6 +2,7 @@
import java.util.Calendar;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.util.DateUtils;
import org.mvel2.ConversionHandler;
@@ -18,7 +19,7 @@
public Object convertFrom(Object o) {
if (o instanceof String) {
Calendar cal = Calendar.getInstance();
- cal.setTime( DateUtils.parseDate( (String) o) );
+ cal.setTime( DateUtils.parseDate( (String) o, DateFormatsImpl.dateFormats.get() ) );
return cal;
} else {
return o;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDateCoercion.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDateCoercion.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDateCoercion.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -1,11 +1,16 @@
package org.drools.base.mvel;
+import java.text.DateFormat;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import org.drools.builder.DateFormats;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.util.DateUtils;
import org.mvel2.ConversionHandler;
-public class MVELDateCoercion implements ConversionHandler {
+public class MVELDateCoercion implements ConversionHandler {
public boolean canConvertFrom(Class cls) {
if (cls == String.class || cls.isAssignableFrom( Date.class )) {
@@ -17,7 +22,7 @@
public Object convertFrom(Object o) {
if (o instanceof String) {
- return DateUtils.parseDate( (String) o);
+ return DateUtils.parseDate( (String) o, DateFormatsImpl.dateFormats.get() );
} else {
return o;
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/builder/impl/DateFormatsImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/builder/impl/DateFormatsImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/builder/impl/DateFormatsImpl.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -0,0 +1,86 @@
+package org.drools.builder.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.text.DateFormat;
+import java.text.DateFormatSymbols;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.drools.builder.DateFormats;
+
+public class DateFormatsImpl
+ implements
+ DateFormats,
+ Externalizable {
+
+ private static final long serialVersionUID = 400L;
+
+ private Map<String, DateFormat> map;
+
+ private static ThreadLocal<Map<String, DateFormat>> localMap = new ThreadLocal<Map<String, DateFormat>>() {
+ protected Map<String, DateFormat> initialValue() {;
+ return new HashMap<String, DateFormat>();
+ };
+ };
+
+ /**
+ * This is here for any static classes, such as MVEL DataConverters, to access.
+ * It is expected this will be set, before access.
+ */
+ public static ThreadLocal<DateFormats> dateFormats = new ThreadLocal<DateFormats>() {
+
+ };
+
+ public DateFormatsImpl() {
+ this.map = new ConcurrentHashMap<String, DateFormat>();
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ map = (Map) in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeObject( map );
+ }
+
+ public DateFormat get(String identifier) {
+ return this.map.get( identifier );
+ }
+
+ public void set(String identifier,
+ DateFormat calendar) {
+ this.map.put( identifier,
+ calendar );
+ }
+
+ public Date parse(String identifier,
+ String date) {
+
+ // DateFormat's are not thread safe, so always keep a local thread copy
+ DateFormat df = this.localMap.get().get( identifier );
+ if ( df == null ) {
+ df = this.map.get( identifier );
+ if ( df == null ) {
+ throw new RuntimeException( "Unable to find DateFormat for id '" + identifier + "'" );
+ }
+ this.localMap.get().put( identifier, ( DateFormat ) df.clone() );
+ }
+
+ try {
+ return df.parse( date );
+ } catch ( ParseException e ) {
+ throw new IllegalArgumentException("Invalid date input format: ["
+ + date + "] using the DateFormat: [" + df + "]");
+ }
+ }
+
+}
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 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -52,6 +52,8 @@
import org.drools.RuleBaseConfiguration.LogicalOverride;
import org.drools.base.CalendarsImpl;
import org.drools.base.MapGlobalResolver;
+import org.drools.builder.DateFormats;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.concurrent.ExecutorService;
import org.drools.concurrent.ExternalExecutorService;
import org.drools.definition.process.Process;
@@ -149,6 +151,7 @@
protected GlobalResolver globalResolver;
protected Calendars calendars;
+ protected DateFormats dateFormats;
/** The eventSupport */
protected WorkingMemoryEventSupport workingMemoryEventSupport;
@@ -285,6 +288,12 @@
}
this.calendars = new CalendarsImpl();
+
+ this.dateFormats = (DateFormats) this.environment.get( EnvironmentName.DATE_FORMATS );
+ if ( this.dateFormats == null ) {
+ this.dateFormats = new DateFormatsImpl();
+ this.environment.set( EnvironmentName.DATE_FORMATS , this.dateFormats );
+ }
final RuleBaseConfiguration conf = this.ruleBase.getConfiguration();
@@ -638,6 +647,10 @@
public Calendars getCalendars() {
return this.calendars;
}
+
+ public DateFormats getDateFormats() {
+ return this.dateFormats;
+ }
public int getId() {
return this.id;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -7,6 +7,7 @@
import org.drools.FactHandle;
import org.drools.SessionConfiguration;
import org.drools.WorkingMemory;
+import org.drools.builder.DateFormats;
import org.drools.concurrent.ExecutorService;
import org.drools.event.AgendaEventSupport;
import org.drools.event.RuleFlowEventSupport;
@@ -203,5 +204,7 @@
* @return
*/
public long getTotalFactCount();
+
+ public DateFormats getDateFormats();
}
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 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -87,9 +87,9 @@
public boolean isAllowed(final InternalReadAccessor readAccessor,
final InternalFactHandle handle,
- final InternalWorkingMemory workingMemoiry,
+ final InternalWorkingMemory workingMemory,
final ContextEntry context) {
- return this.evaluator.evaluate( null,
+ return this.evaluator.evaluate( workingMemory,
this.readAccessor,
handle.getObject(),
this.field );
@@ -97,7 +97,7 @@
public boolean isAllowedCachedLeft(final ContextEntry context,
final InternalFactHandle handle) {
- return this.evaluator.evaluate( null,
+ return this.evaluator.evaluate( ((LiteralContextEntry)context).workingMemory,
((LiteralContextEntry) context).getFieldExtractor(),
handle.getObject(),
this.field );
@@ -105,7 +105,7 @@
public boolean isAllowedCachedRight(final LeftTuple tuple,
final ContextEntry context) {
- return this.evaluator.evaluate( null,
+ return this.evaluator.evaluate( ((LiteralContextEntry)context).workingMemory,
((LiteralContextEntry) context).getFieldExtractor(),
((LiteralContextEntry) context).getObject(),
this.field );
@@ -170,6 +170,7 @@
public InternalReadAccessor extractor;
public Object object;
public ContextEntry next;
+ public InternalWorkingMemory workingMemory;
public LiteralContextEntry() {
}
@@ -183,12 +184,14 @@
extractor = (InternalReadAccessor) in.readObject();
object = in.readObject();
next = (ContextEntry) in.readObject();
+ workingMemory = ( InternalWorkingMemory ) in .readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject( extractor );
out.writeObject( object );
out.writeObject( next );
+ out.writeObject( workingMemory );
}
public InternalReadAccessor getFieldExtractor() {
@@ -210,11 +213,12 @@
public void updateFromFactHandle(final InternalWorkingMemory workingMemory,
final InternalFactHandle handle) {
this.object = handle.getObject();
+ this.workingMemory = workingMemory;
}
public void updateFromTuple(final InternalWorkingMemory workingMemory,
final LeftTuple tuple) {
- // nothing to do
+ this.workingMemory = workingMemory;
}
public void resetTuple() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/CronTrigger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/CronTrigger.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/CronTrigger.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -278,7 +278,7 @@
}
public void updateToNextIncludeDate() {
- if ( calendarNames == null || calendarNames.length == 0 ) {
+ if ( this.calendars == null || calendarNames == null || calendarNames.length == 0 ) {
// There are no assigned calendars
return;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/IntervalTrigger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/IntervalTrigger.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/IntervalTrigger.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -164,7 +164,7 @@
}
public void updateToNextIncludeDate() {
- if ( calendarNames == null || calendarNames.length == 0 ) {
+ if ( this.calendars == null || calendarNames == null || calendarNames.length == 0 ) {
// There are no assigned calendars
return;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/PointInTimeTrigger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/PointInTimeTrigger.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/PointInTimeTrigger.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -37,7 +37,7 @@
Calendars calendars) {
boolean included = true;
- if ( calendarNames != null && calendarNames.length > 0 ) {
+ if ( calendars != null && calendarNames != null && calendarNames.length > 0 ) {
for ( String calName : calendarNames ) {
// all calendars must not block, as soon as one blocks break
org.drools.time.Calendar cal = calendars.get( calName );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/DateUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/DateUtils.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/DateUtils.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -17,12 +17,15 @@
*/
package org.drools.util;
+import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
+import org.drools.builder.DateFormats;
+
/**
* @author etirelli
*
@@ -66,9 +69,14 @@
}
/** Use the simple date formatter to read the date from a string */
- public static Date parseDate(final String input) {
+ public static Date parseDate(final String input, DateFormats dateFormats) {
try {
- return df.get().parse(input);
+// if ( dateFormat != null ) {
+// return dateFormat.parse( input );
+// } else {
+// return df.get().parse(input);
+// }
+ return df.get().parse(input);
} catch (final ParseException e) {
throw new IllegalArgumentException("Invalid date input format: ["
+ input + "] it should follow: [" + DATE_FORMAT_MASK + "]");
@@ -76,12 +84,12 @@
}
/** Converts the right hand side date as appropriate */
- public static Date getRightDate(final Object object2) {
+ public static Date getRightDate(final Object object2, DateFormats dateFormats) {
if (object2 == null) {
return null;
}
if (object2 instanceof String) {
- return parseDate((String) object2);
+ return parseDate((String) object2, dateFormats);
} else if (object2 instanceof Date) {
return (Date) object2;
} else {
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -34,6 +34,7 @@
import org.drools.base.evaluators.EvaluatorRegistry;
import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteooRuleBase;
import org.drools.rule.Declaration;
import org.drools.rule.VariableRestriction.BooleanVariableContextEntry;
import org.drools.rule.VariableRestriction.CharVariableContextEntry;
@@ -451,7 +452,7 @@
final Object[] row,
final Evaluator evaluator) {
final FieldValue value = FieldFactory.getFieldValue( row[2] );
- final boolean result = evaluator.evaluate( null,
+ final boolean result = evaluator.evaluate( ( InternalWorkingMemory ) new ReteooRuleBase( "id1" ).newStatefulSession(),
extractor,
row[0],
value );
@@ -480,7 +481,7 @@
extractor,
valueType,
row );
- final boolean result = evaluator.evaluateCachedRight( null,
+ final boolean result = evaluator.evaluateCachedRight( ( InternalWorkingMemory ) new ReteooRuleBase( "id1" ).newStatefulSession(),
context,
row[2] );
final String message = "The evaluator type: [" + valueType + "] with CachedRight incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
@@ -508,7 +509,7 @@
extractor,
valueType,
row );
- final boolean result = evaluator.evaluateCachedLeft( null,
+ final boolean result = evaluator.evaluateCachedLeft( ( InternalWorkingMemory ) new ReteooRuleBase( "id1" ).newStatefulSession(),
context,
row[0] );
final String message = "The evaluator type: [" + valueType + "] with CachedLeft incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -7,13 +7,15 @@
import junit.framework.TestCase;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.spi.FieldValue;
public class FieldFactoryTest extends TestCase {
public void testBigDecimal() {
final FieldValue val = FieldFactory.getFieldValue( "42.42",
- ValueType.BIG_DECIMAL_TYPE );
+ ValueType.BIG_DECIMAL_TYPE,
+ new DateFormatsImpl() );
assertEquals( BigDecimal.class,
val.getValue().getClass() );
assertTrue( val.getValue().equals( new BigDecimal( "42.42" ) ) );
@@ -21,7 +23,8 @@
public void testBigInteger() {
final FieldValue val = FieldFactory.getFieldValue( "424242",
- ValueType.BIG_INTEGER_TYPE );
+ ValueType.BIG_INTEGER_TYPE,
+ new DateFormatsImpl() );
assertEquals( BigInteger.class,
val.getValue().getClass() );
assertTrue( val.getValue().equals( new BigInteger( "424242" ) ) );
@@ -30,7 +33,8 @@
public void testDate() throws Exception {
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String s = df.format(df.parse("10-Jul-1974"));
- final FieldValue val = FieldFactory.getFieldValue( s, ValueType.DATE_TYPE );
+ final FieldValue val = FieldFactory.getFieldValue( s, ValueType.DATE_TYPE,
+ new DateFormatsImpl() );
assertEquals( Date.class, val.getValue().getClass() );
Date dt = (Date) val.getValue();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELCalendarCoercionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELCalendarCoercionTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELCalendarCoercionTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -6,6 +6,7 @@
import junit.framework.TestCase;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.util.DateUtils;
public class MVELCalendarCoercionTest extends TestCase {
@@ -27,7 +28,8 @@
String dt = df.format(df.parse("10-Jul-1974"));
- Date dt_ = DateUtils.parseDate( dt );
+ Date dt_ = DateUtils.parseDate( dt,
+ new DateFormatsImpl() );
Calendar cal = Calendar.getInstance();
cal.setTime( dt_ );
assertEquals(cal, co.convertFrom( dt ));
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELDateCoercionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELDateCoercionTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELDateCoercionTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -5,6 +5,7 @@
import junit.framework.TestCase;
+import org.drools.builder.impl.DateFormatsImpl;
import org.drools.util.DateUtils;
public class MVELDateCoercionTest extends TestCase {
@@ -24,7 +25,8 @@
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String dt = df.format(df.parse("10-Jul-1974"));
- Date dt_ = DateUtils.parseDate( dt );
+ Date dt_ = DateUtils.parseDate( dt,
+ new DateFormatsImpl() );
assertEquals(dt_, co.convertFrom( dt ));
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java 2009-12-14 22:49:13 UTC (rev 30650)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java 2009-12-14 23:20:16 UTC (rev 30651)
@@ -178,7 +178,7 @@
data.size() );
// sleep for 0.5 seconds
- Thread.sleep( 500 );
+ Thread.sleep( 750 );
// now check for update
assertEquals( 4,
More information about the jboss-svn-commits
mailing list