[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