[jboss-svn-commits] JBL Code SVN: r15074 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/base and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Sep 13 02:06:38 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-09-13 02:06:37 -0400 (Thu, 13 Sep 2007)
New Revision: 15074

Added:
   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/test/java/org/drools/base/mvel/
   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
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
Log:
JBRULES-1189

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2007-09-13 05:02:56 UTC (rev 15073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2007-09-13 06:06:37 UTC (rev 15074)
@@ -5,6 +5,8 @@
 import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.lang.reflect.Method;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -18,6 +20,7 @@
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
 import org.mvel.CompileException;
+import org.mvel.DataConversion;
 import org.mvel.integration.VariableResolver;
 import org.mvel.integration.impl.BaseVariableResolverFactory;
 import org.mvel.integration.impl.LocalVariableResolverFactory;
@@ -50,6 +53,12 @@
 
     private Map               localVariables;
 
+    static {
+        //for handling dates as string literals
+        DataConversion.addConversionHandler( Date.class, new MVELDateCoercion() );
+        DataConversion.addConversionHandler( Calendar.class, new MVELCalendarCoercion() );
+    }
+
     public DroolsMVELFactory(final Map previousDeclarations,
                              final Map localDeclarations,
                              final Map globals) {

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCalendarCoercion.java	2007-09-13 06:06:37 UTC (rev 15074)
@@ -0,0 +1,28 @@
+package org.drools.base.mvel;
+
+import java.util.Calendar;
+
+import org.drools.base.evaluators.DateFactory;
+import org.mvel.ConversionHandler;
+
+public class MVELCalendarCoercion implements ConversionHandler {
+
+    public boolean canConvertFrom(Class cls) {
+        if (cls == String.class || cls.isAssignableFrom( Calendar.class )) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public Object convertFrom(Object o) {
+        if (o instanceof String) {
+            Calendar cal = Calendar.getInstance();
+            cal.setTime( DateFactory.parseDate( (String) o) );
+            return cal;
+        } else {
+            return o;
+        }
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCalendarCoercion.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDateCoercion.java	2007-09-13 06:06:37 UTC (rev 15074)
@@ -0,0 +1,26 @@
+package org.drools.base.mvel;
+
+import java.util.Date;
+
+import org.drools.base.evaluators.DateFactory;
+import org.mvel.ConversionHandler;
+
+public class MVELDateCoercion implements ConversionHandler {
+
+    public boolean canConvertFrom(Class cls) {
+        if (cls == String.class || cls.isAssignableFrom( Date.class )) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public Object convertFrom(Object o) {
+        if (o instanceof String) {
+            return DateFactory.parseDate( (String) o);
+        } else {
+            return o;
+        }
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELDateCoercion.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELCalendarCoercionTest.java	2007-09-13 06:06:37 UTC (rev 15074)
@@ -0,0 +1,32 @@
+package org.drools.base.mvel;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import org.drools.base.evaluators.DateFactory;
+
+import junit.framework.TestCase;
+
+public class MVELCalendarCoercionTest extends TestCase {
+
+    public void testCalendar() {
+        MVELCalendarCoercion co = new MVELCalendarCoercion();
+        assertTrue(co.canConvertFrom( Calendar.class ));
+        assertFalse(co.canConvertFrom( Number.class ));
+
+        Calendar d = Calendar.getInstance();
+        assertSame(d, co.convertFrom( d ));
+    }
+
+    public void testString() {
+        MVELCalendarCoercion co = new MVELCalendarCoercion();
+        assertTrue(co.canConvertFrom( Calendar.class ));
+
+        String dt = "10-Jul-1974";
+        Date dt_ = DateFactory.parseDate( dt );
+        Calendar cal = Calendar.getInstance();
+        cal.setTime( dt_ );
+        assertEquals(cal, co.convertFrom( dt ));
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELCalendarCoercionTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELDateCoercionTest.java	2007-09-13 06:06:37 UTC (rev 15074)
@@ -0,0 +1,29 @@
+package org.drools.base.mvel;
+
+import java.util.Date;
+
+import org.drools.base.evaluators.DateFactory;
+
+import junit.framework.TestCase;
+
+public class MVELDateCoercionTest extends TestCase {
+
+    public void testDate() {
+        MVELDateCoercion co = new MVELDateCoercion();
+        assertTrue(co.canConvertFrom( Date.class ));
+        assertFalse(co.canConvertFrom( Number.class ));
+
+        Date d = new Date();
+        assertSame(d, co.convertFrom( d ));
+    }
+
+    public void testString() {
+        MVELDateCoercion co = new MVELDateCoercion();
+        assertTrue(co.canConvertFrom( Date.class ));
+
+        String dt = "10-Jul-1974";
+        Date dt_ = DateFactory.parseDate( dt );
+        assertEquals(dt_, co.convertFrom( dt ));
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/mvel/MVELDateCoercionTest.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list