[jboss-svn-commits] JBL Code SVN: r10435 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 22 11:15:46 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-03-22 11:15:45 -0400 (Thu, 22 Mar 2007)
New Revision: 10435

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/AddFunction.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/ModifyFunction.java
Log:
JBRULES-720 Clips Parser
-Modify now works, using MVEL as it will handle coercion for us.

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/AddFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/AddFunction.java	2007-03-22 15:15:11 UTC (rev 10434)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/AddFunction.java	2007-03-22 15:15:45 UTC (rev 10435)
@@ -21,7 +21,7 @@
         for ( int i = 0, length = args.length; i < length; i++ ) {
             bdval = bdval.add( args[i].getBigDecimalValue( context ) );
         }                
-        return bdval;        
+        return new BigDecimal( bdval.intValue() );     
     }
     
     

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/ModifyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/ModifyFunction.java	2007-03-22 15:15:11 UTC (rev 10434)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/ModifyFunction.java	2007-03-22 15:15:45 UTC (rev 10435)
@@ -1,52 +1,29 @@
 package org.drools.clp.functions;
 
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import org.drools.clp.BaseFunction;
 import org.drools.clp.ExecutionContext;
 import org.drools.clp.Function;
 import org.drools.clp.SlotNameValuePair;
 import org.drools.clp.ValueHandler;
-import org.drools.clp.VariableValueHandler;
+import org.mvel.PropertyAccessor;
 
 public class ModifyFunction  implements Function {
     private static final String name = "modify"; 
     
+    //private static final String modifyExpr
+    
     public ModifyFunction() {
     }
 
 
     public Object execute(ValueHandler[] args, ExecutionContext context) {
-        // This is very slow, its just to get things working for now
-        Object object = args[0].getValue( context );
-        
-        try {
+        Object object = args[0].getValue( context );        
             for ( int i = 1, length = args.length; i < length; i++ ) {
-                SlotNameValuePair pair = ( SlotNameValuePair ) args[i];
-                Method method = getField( object.getClass(), pair.getName() ); 
-                method.invoke( object, new Object[] { pair.getValueHandler().getValue( context ) } );
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-        }
-                
+                SlotNameValuePair pair = ( SlotNameValuePair ) args[i];                
+                PropertyAccessor.set(object, pair.getName(), pair.getValueHandler().getValue( context ) );
+            }                
         return null;
     }
     
-    public Method getField(Class clazz, String name) throws IntrospectionException {
-        PropertyDescriptor[] descrs = Introspector.getBeanInfo( clazz ).getPropertyDescriptors();
-        for ( int i = 0, length = descrs.length; i < length; i++ ) {
-            if ( descrs[i].getName().equals( name ) ) {
-                return descrs[i].getWriteMethod();
-            }
-        }
-        return null;
-    }
-    
     public String getName() {
         return name;
     }




More information about the jboss-svn-commits mailing list