[jboss-svn-commits] JBL Code SVN: r19090 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 18 21:56:37 EDT 2008


Author: mingjin
Date: 2008-03-18 21:56:37 -0400 (Tue, 18 Mar 2008)
New Revision: 19090

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
Log:
JBRULES-1095 fix bad merge
- revert to previous version.

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	2008-03-19 01:56:13 UTC (rev 19089)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2008-03-19 01:56:37 UTC (rev 19090)
@@ -17,6 +17,7 @@
 package org.drools.rule.builder;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -26,9 +27,8 @@
 import org.drools.base.FieldFactory;
 import org.drools.base.ValueType;
 import org.drools.base.evaluators.EvaluatorDefinition;
-import org.drools.base.field.ObjectFieldImpl;
+import org.drools.compiler.DescrBuildError;
 import org.drools.compiler.Dialect;
-import org.drools.compiler.DescrBuildError;
 import org.drools.facttemplates.FactTemplate;
 import org.drools.facttemplates.FactTemplateFieldExtractor;
 import org.drools.facttemplates.FactTemplateObjectType;
@@ -73,6 +73,8 @@
 import org.drools.spi.ObjectType;
 import org.drools.spi.Restriction;
 import org.drools.spi.Constraint.ConstraintType;
+import org.mvel.ParserContext;
+import org.mvel.compiler.ExpressionCompiler;
 
 /**
  * A builder for patterns
@@ -375,12 +377,15 @@
         MVELDialect mvelDialect = (MVELDialect) context.getDialect( "mvel" );
         boolean strictMode = mvelDialect.isStrictMode();
         mvelDialect.setStrictMode( false );
-
         context.setDialect( mvelDialect );
 
+        // analyze field type:
+        Class resultType = getFieldReturnType( pattern,
+                                               fieldConstraintDescr );
+
         PredicateDescr predicateDescr = new PredicateDescr();
         MVELDumper dumper = new MVELDumper();
-        predicateDescr.setContent( dumper.dump( fieldConstraintDescr ) );
+        predicateDescr.setContent( dumper.dump( fieldConstraintDescr, Date.class.isAssignableFrom( resultType ) ) );
 
         build( context,
                pattern,
@@ -392,6 +397,23 @@
         context.setDialect( dialect );
     }
 
+    /**
+     * @param pattern
+     * @param fieldConstraintDescr
+     * @return
+     */
+    private Class getFieldReturnType(final Pattern pattern,
+                                     final FieldConstraintDescr fieldConstraintDescr) {
+        String dummyField = "__DUMMY__";
+        String dummyExpr = dummyField+"."+fieldConstraintDescr.getFieldName();
+        ExpressionCompiler compiler = new ExpressionCompiler( dummyExpr );
+        ParserContext mvelcontext = new ParserContext();
+        mvelcontext.addInput( dummyField, ((ClassObjectType) pattern.getObjectType()).getClassType() );
+        compiler.compile( mvelcontext );
+        Class resultType = compiler.getReturnType();
+        return resultType;
+    }
+
     private Restriction createRestriction(final RuleBuildContext context,
                                           final Pattern pattern,
                                           final FieldConstraintDescr fieldConstraintDescr,
@@ -769,11 +791,6 @@
             final Class staticClass = context.getDialect().getTypeResolver().resolveType( className );
             field = FieldFactory.getFieldValue( staticClass.getField( fieldName ).get( null ),
                                                 extractor.getValueType() );
-            if( field.isObjectField() ) {
-                ((ObjectFieldImpl) field).setEnum( true );
-                ((ObjectFieldImpl) field).setEnumName( staticClass.getName() );
-                ((ObjectFieldImpl) field).setFieldName( fieldName );
-            }
         } catch ( final ClassNotFoundException e ) {
             // nothing to do, as it is not a class name with static field
         } catch ( final Exception e ) {




More information about the jboss-svn-commits mailing list