[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