[jboss-svn-commits] JBL Code SVN: r30952 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/rule and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 5 22:13:03 EST 2010


Author: mark.proctor at jboss.com
Date: 2010-01-05 22:13:03 -0500 (Tue, 05 Jan 2010)
New Revision: 30952

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
Log:
JBRULES-2396 ReturnValueRestriction passes null to evaluator
-fixes nullpointer because wm was not passed.

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java	2010-01-06 03:13:03 UTC (rev 30952)
@@ -0,0 +1,96 @@
+package org.drools.integrationtests;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Date;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.Cheese;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+/**
+ * This is a sample class to launch a rule.
+ */
+public class DateComparisonTest extends TestCase {
+
+    public void testDateComparisonThan() throws Exception {
+        List<String> results = new ArrayList<String>();
+        // load up the knowledge base
+        String str = "";
+        str += "package org.drools;\n";
+        str += "dialect \"mvel\"\n";
+        str += "global java.util.List results;\n";
+        str += "rule \"test date greater than\"\n";
+        str += "     when\n";
+        str += "         $c : Cheese(type == \"Yesterday\")\n";
+        str += "         Cheese(type == \"Tomorrow\",  usedBy > ($c.usedBy))\n";
+        str += "     then\n";
+        str += "         results.add( \"test date greater than\" );\n";
+        str += "end\n";
+
+        str += "rule \"test date less than\"\n";
+        str += "    when\n";
+        str += "        $c : Cheese(type == \"Tomorrow\")\n";
+        str += "        Cheese(type == \"Yesterday\", usedBy < ($c.usedBy));\n";
+        str += "    then\n";
+        str += "        results.add( \"test date less than\" );\n";
+        str += "end\n";
+
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+                      ResourceType.DRL );
+        KnowledgeBuilderErrors errors = kbuilder.getErrors();
+        if ( kbuilder.hasErrors() ) {
+            fail( kbuilder.getErrors().toString() );
+        }
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        ksession.setGlobal( "results",
+                            results );
+        KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger( ksession,
+                                                                                     "test" );
+        // go !
+        Cheese yesterday = new Cheese( "Yesterday" );
+        yesterday.setUsedBy( yesterday() );
+        Cheese tomorrow = new Cheese( "Tomorrow" );
+        tomorrow.setUsedBy( tomorrow() );
+        ksession.insert( yesterday );
+        ksession.insert( tomorrow );
+        ksession.fireAllRules();
+        logger.close();
+        assertEquals( 2,
+                      results.size() );
+        assertTrue( results.contains( "test date greater than" ) );
+        assertTrue( results.contains( "test date less than" ) );
+    }
+
+    private Date yesterday() {
+        Calendar c = new GregorianCalendar();
+        c.set( Calendar.DAY_OF_MONTH,
+               c.get( Calendar.DAY_OF_MONTH ) - 1 );
+        return c.getTime();
+    }
+
+    private Date tomorrow() {
+        Calendar c = new GregorianCalendar();
+        c.set( Calendar.DAY_OF_MONTH,
+               c.get( Calendar.DAY_OF_MONTH ) + 1 );
+        return c.getTime();
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java	2010-01-06 01:22:41 UTC (rev 30951)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java	2010-01-06 03:13:03 UTC (rev 30952)
@@ -221,7 +221,7 @@
                              final WorkingMemory workingMemory,
                              final ContextEntry context) {
         try {
-            return this.evaluator.evaluate( null,
+            return this.evaluator.evaluate( (InternalWorkingMemory)workingMemory,
                                             this.readAccessor,
                                             handle.getObject(),
                                             this.expression.evaluate( handle.getObject(),



More information about the jboss-svn-commits mailing list