[jboss-svn-commits] JBL Code SVN: r10516 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/clp/functions and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Mar 24 10:25:50 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-03-24 10:25:50 -0400 (Sat, 24 Mar 2007)
New Revision: 10516
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BaseFunction.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/IfFunction.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/WhileFunction.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Deffunction.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionBuildContext.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionContext.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Function.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionCaller.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionDelegator.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispData.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispForm.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispList.java
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/BindFunction.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/LessThanFunction.java
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/MultiplyFunction.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/functions.conf
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/BlockExecutionTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/CompiledParserTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/FunctionFactoryTest.java
Log:
JBRULES-720 Clips Parser
-Function now has full control on child element creation and validation/rewriting
-Added 'if' and 'while' function implementations with unit tests.
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPLexer.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-24 03:23:58
+// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-24 14:22:23
package org.drools.clp;
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/CLPParser.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-24 03:23:58
+// $ANTLR 3.0b7 C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g 2007-03-24 14:22:23
package org.drools.clp;
import java.util.List;
@@ -595,7 +595,7 @@
// $ANTLR start rhs
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:312:1: rhs returns [ExecutionEngine engine] : (fc= lisp_list[context, new LispForm(context, functionRegistry) ] )* ;
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:312:1: rhs returns [ExecutionEngine engine] : (fc= lisp_list[context, new LispForm(context) ] )* ;
public ExecutionEngine rhs() throws RecognitionException {
ExecutionEngine engine = null;
@@ -604,13 +604,13 @@
engine = new BlockExecutionEngine();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
try {
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:3: ( (fc= lisp_list[context, new LispForm(context, functionRegistry) ] )* )
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:3: (fc= lisp_list[context, new LispForm(context, functionRegistry) ] )*
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:3: ( (fc= lisp_list[context, new LispForm(context) ] )* )
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:3: (fc= lisp_list[context, new LispForm(context) ] )*
{
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:3: (fc= lisp_list[context, new LispForm(context, functionRegistry) ] )*
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:3: (fc= lisp_list[context, new LispForm(context) ] )*
loop5:
do {
int alt5=2;
@@ -622,10 +622,10 @@
switch (alt5) {
case 1 :
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:4: fc= lisp_list[context, new LispForm(context, functionRegistry) ]
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:319:4: fc= lisp_list[context, new LispForm(context) ]
{
pushFollow(FOLLOW_lisp_list_in_rhs331);
- fc=lisp_list(context, new LispForm(context, functionRegistry) );
+ fc=lisp_list(context, new LispForm(context) );
_fsp--;
context.addFunction( (FunctionCaller) fc );
@@ -854,7 +854,7 @@
// $ANTLR start eval_ce
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:374:1: eval_ce[ConditionalElementDescr in_ce] : LEFT_PAREN TEST fc= lisp_list[context, new LispForm(context, functionRegistry)] RIGHT_PAREN ;
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:374:1: eval_ce[ConditionalElementDescr in_ce] : LEFT_PAREN TEST fc= lisp_list[context, new LispForm(context)] RIGHT_PAREN ;
public void eval_ce(ConditionalElementDescr in_ce) throws RecognitionException {
ValueHandler fc = null;
@@ -862,11 +862,11 @@
EvalDescr evalDescr= null;
ExecutionEngine engine = new CLPEval();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
try {
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:380:4: ( LEFT_PAREN TEST fc= lisp_list[context, new LispForm(context, functionRegistry)] RIGHT_PAREN )
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:380:4: LEFT_PAREN TEST fc= lisp_list[context, new LispForm(context, functionRegistry)] RIGHT_PAREN
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:380:4: ( LEFT_PAREN TEST fc= lisp_list[context, new LispForm(context)] RIGHT_PAREN )
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:380:4: LEFT_PAREN TEST fc= lisp_list[context, new LispForm(context)] RIGHT_PAREN
{
match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_eval_ce550);
match(input,TEST,FOLLOW_TEST_in_eval_ce555);
@@ -875,7 +875,7 @@
in_ce.addDescr( evalDescr );
pushFollow(FOLLOW_lisp_list_in_eval_ce563);
- fc=lisp_list(context, new LispForm(context, functionRegistry));
+ fc=lisp_list(context, new LispForm(context));
_fsp--;
@@ -1260,22 +1260,22 @@
// $ANTLR start predicate_constraint
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:472:1: predicate_constraint[String op, ColumnDescr column] : COLON fc= lisp_list[context, new LispForm(context, functionRegistry)] ;
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:472:1: predicate_constraint[String op, ColumnDescr column] : COLON fc= lisp_list[context, new LispForm(context)] ;
public void predicate_constraint(String op, ColumnDescr column) throws RecognitionException {
ValueHandler fc = null;
ExecutionEngine engine = new CLPPredicate();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
try {
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:477:4: ( COLON fc= lisp_list[context, new LispForm(context, functionRegistry)] )
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:477:4: COLON fc= lisp_list[context, new LispForm(context, functionRegistry)]
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:477:4: ( COLON fc= lisp_list[context, new LispForm(context)] )
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:477:4: COLON fc= lisp_list[context, new LispForm(context)]
{
match(input,COLON,FOLLOW_COLON_in_predicate_constraint916);
pushFollow(FOLLOW_lisp_list_in_predicate_constraint922);
- fc=lisp_list(context, new LispForm(context, functionRegistry));
+ fc=lisp_list(context, new LispForm(context));
_fsp--;
@@ -1298,22 +1298,22 @@
// $ANTLR start return_value_restriction
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:486:1: return_value_restriction[String op, FieldConstraintDescr fc] : EQUALS func= lisp_list[context, new LispForm(context, functionRegistry)] ;
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:486:1: return_value_restriction[String op, FieldConstraintDescr fc] : EQUALS func= lisp_list[context, new LispForm(context)] ;
public void return_value_restriction(String op, FieldConstraintDescr fc) throws RecognitionException {
ValueHandler func = null;
ExecutionEngine engine = new CLPReturnValue();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
try {
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: ( EQUALS func= lisp_list[context, new LispForm(context, functionRegistry)] )
- // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: EQUALS func= lisp_list[context, new LispForm(context, functionRegistry)]
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: ( EQUALS func= lisp_list[context, new LispForm(context)] )
+ // C:\\dev\\jbossrules\\trunk\\drools-compiler\\src\\main\\resources\\org\\drools\\clp\\CLP.g:491:4: EQUALS func= lisp_list[context, new LispForm(context)]
{
match(input,EQUALS,FOLLOW_EQUALS_in_return_value_restriction948);
pushFollow(FOLLOW_lisp_list_in_return_value_restriction955);
- func=lisp_list(context, new LispForm(context, functionRegistry));
+ func=lisp_list(context, new LispForm(context));
_fsp--;
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Deffunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Deffunction.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Deffunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,59 +1,81 @@
package org.drools.clp;
-public class Deffunction implements Function {
- private final String name;
+public class Deffunction
+ implements
+ Function {
+ private final String name;
private FunctionCaller[] functions;
-
- private ValueHandler[] parameters;
-
+
+ private ValueHandler[] parameters;
+
public Deffunction(String name) {
this.name = name;
}
-
+
public void addParameter(ValueHandler parameter) {
- if (parameters == null) {
- this.parameters = new ValueHandler[] { parameter };
+ if ( parameters == null ) {
+ this.parameters = new ValueHandler[]{parameter};
} else {
- ValueHandler[] temp = new ValueHandler[ parameters.length + 1 ];
- System.arraycopy( this.parameters, 0, temp, 0, this.parameters.length );
- temp[ temp.length - 1] = parameter;
- this.parameters = temp;
- }
+ ValueHandler[] temp = new ValueHandler[parameters.length + 1];
+ System.arraycopy( this.parameters,
+ 0,
+ temp,
+ 0,
+ this.parameters.length );
+ temp[temp.length - 1] = parameter;
+ this.parameters = temp;
+ }
}
-
+
public void addFunction(FunctionCaller function) {
- if (functions == null) {
- this.functions = new FunctionCaller[] { function};
+ if ( functions == null ) {
+ this.functions = new FunctionCaller[]{function};
} else {
- FunctionCaller[] temp = new FunctionCaller[ functions.length + 1 ];
- System.arraycopy( this.functions, 0, temp, 0, this.functions.length );
- temp[ temp.length - 1] = function;
- this.functions = temp;
- }
- }
-
+ FunctionCaller[] temp = new FunctionCaller[functions.length + 1];
+ System.arraycopy( this.functions,
+ 0,
+ temp,
+ 0,
+ this.functions.length );
+ temp[temp.length - 1] = function;
+ this.functions = temp;
+ }
+ }
+
public ValueHandler[] getParameters() {
return this.parameters;
- }
-
+ }
+ public ValueHandler addParameterCallback(int index,
+ ValueHandler valueHandler,
+ ExecutionBuildContext context) {
+ return valueHandler;
+ }
+
+ public void initCallback(ExecutionBuildContext context) {
+ }
+
public Object execute(ValueHandler[] args,
ExecutionContext context) {
- ExecutionContext newContext = initContext(args, context);
-
+ ExecutionContext newContext = initContext( args,
+ context );
+
Object returnValue = null;
-
+
for ( int i = 0, length = this.functions.length; i < length; i++ ) {
- returnValue = this.functions[i].getValue( newContext );
+ returnValue = this.functions[i].getValue( newContext );
}
return returnValue;
}
-
+
private ExecutionContext initContext(ValueHandler[] args,
- ExecutionContext context) {
- ExecutionContext newContext = new ExecutionContext(context.getWorkingMemory(), context.getTuple(), args.length );
+ ExecutionContext context) {
+ ExecutionContext newContext = new ExecutionContext( context.getWorkingMemory(),
+ context.getTuple(),
+ args.length );
for ( int i = 0, length = args.length; i < length; i++ ) {
- newContext.setLocalVariable( i, args[i].getValue( context ) );
+ newContext.setLocalVariable( i,
+ args[i].getValue( context ) );
}
return newContext;
}
@@ -61,8 +83,8 @@
public String getName() {
return this.name;
}
-
+
public LispList createList(int index) {
return new LispForm();
- }
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionBuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionBuildContext.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionBuildContext.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,35 +1,59 @@
package org.drools.clp;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class ExecutionBuildContext {
- private Map vars = new HashMap();
- private ExecutionEngine engine;
-
- public ExecutionBuildContext(ExecutionEngine engine) {
+ private Map vars = new HashMap();
+ private Map properties = Collections.EMPTY_MAP;
+ private ExecutionEngine engine;
+ private FunctionRegistry registry;
+
+ public ExecutionBuildContext(ExecutionEngine engine,
+ FunctionRegistry registry) {
this.engine = engine;
+ this.registry = registry;
}
+
+ public FunctionRegistry getFunctionRegistry() {
+ return this.registry;
+ }
public void addFunction(FunctionCaller function) {
this.engine.addFunction( function );
+ }
+
+ public Object setProperty(Object key,
+ Object value) {
+ if ( this.properties == Collections.EMPTY_MAP ) {
+ this.properties = new HashMap();
+ }
+ return this.properties.put( key,
+ value );
}
-
+
+ public Object getProperty(Object key) {
+ return this.properties.get( key );
+ }
+
public ValueHandler createLocalVariable(String identifier) {
- ValueHandler var = ( ValueHandler ) this.vars.get( identifier ) ;
- if ( var == null ) {
- var = new LocalVariableValue(identifier, this.engine.getNextIndex() );
- this.vars.put( identifier, var );
+ ValueHandler var = (ValueHandler) this.vars.get( identifier );
+ if ( var == null ) {
+ var = new LocalVariableValue( identifier,
+ this.engine.getNextIndex() );
+ this.vars.put( identifier,
+ var );
}
return var;
}
-
+
public ValueHandler getVariableValueHandler(String identifier) {
- ValueHandler var = ( ValueHandler ) this.vars.get( identifier ) ;
- if ( var == null ) {
- var = new TempTokenVariable(identifier);
+ ValueHandler var = (ValueHandler) this.vars.get( identifier );
+ if ( var == null ) {
+ var = new TempTokenVariable( identifier );
}
return var;
}
-
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionContext.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionContext.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/ExecutionContext.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -5,48 +5,48 @@
public class ExecutionContext {
private InternalWorkingMemory workingMemory;
- private ReteTuple tuple;
- private Object object;
- private Object[] localVariables;
-
+ private ReteTuple tuple;
+ private Object object;
+ private Object[] localVariables;
+
public ExecutionContext(InternalWorkingMemory workingMemory,
- ReteTuple tuple,
- int localVariableSize) {
- this( workingMemory, tuple, null, localVariableSize );
+ ReteTuple tuple,
+ int localVariableSize) {
+ this( workingMemory,
+ tuple,
+ null,
+ localVariableSize );
}
-
+
public ExecutionContext(InternalWorkingMemory workingMemory,
- ReteTuple tuple,
- Object object,
- int localVariableSize) {
+ ReteTuple tuple,
+ Object object,
+ int localVariableSize) {
this.workingMemory = workingMemory;
this.tuple = tuple;
this.object = object;
- this.localVariables = new Object[ localVariableSize ];
- }
-
+ this.localVariables = new Object[localVariableSize];
+ }
+
public ReteTuple getTuple() {
return tuple;
}
-
+
public InternalWorkingMemory getWorkingMemory() {
return workingMemory;
}
-
+
public Object getObject() {
return this.object;
}
public Object getLocalVariable(int index) {
return localVariables[index];
- }
+ }
- public void setLocalVariable(int index, Object object) {
+ public void setLocalVariable(int index,
+ Object object) {
this.localVariables[index] = object;
}
-
-
-
-
-
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Function.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Function.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/Function.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -6,9 +6,9 @@
public String getName();
- public LispList createList(int index);
+ public void initCallback(ExecutionBuildContext context);
- //public void addParameter(ValueHandler valueHandler);
+ public ValueHandler addParameterCallback(int index, ValueHandler valueHandler, ExecutionBuildContext context );
- //public ValueHandler[] getParameters();
+ public LispList createList(int index);
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionCaller.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionCaller.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionCaller.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -33,7 +33,7 @@
public void addParameter(ValueHandler valueHandler) {
if (this.parameters == null) {
- this.parameters = new ValueHandler[] { valueHandler};
+ this.parameters = new ValueHandler[] { valueHandler};
} else {
ValueHandler[] temp = new ValueHandler[ parameters.length + 1 ];
System.arraycopy( this.parameters, 0, temp, 0, this.parameters.length );
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionDelegator.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionDelegator.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/FunctionDelegator.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,21 +1,35 @@
package org.drools.clp;
-public class FunctionDelegator implements Function {
+public class FunctionDelegator
+ implements
+ Function {
private Function function;
- private String name;
-
- public FunctionDelegator( String name ) {
+ private String name;
+
+ public FunctionDelegator(String name) {
this.name = name;
}
public FunctionDelegator(Function function) {
this.function = function;
}
-
+
public void setFunction(Function function) {
this.function = function;
}
+ public ValueHandler addParameterCallback(int index,
+ ValueHandler valueHandler,
+ ExecutionBuildContext context) {
+ return this.function.addParameterCallback( 0,
+ valueHandler,
+ context );
+ }
+
+ public void initCallback(ExecutionBuildContext context) {
+ this.function.initCallback( context );
+ }
+
public Object execute(ValueHandler[] args,
ExecutionContext context) {
return function.execute( args,
@@ -25,11 +39,11 @@
public String getName() {
return this.function == null ? this.name : function.getName();
}
-
+
public LispList createList(int index) {
return this.function.createList( index );
- }
-
+ }
+
public String toString() {
return "[FunctionDelegate " + this.function + "]";
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispData.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispData.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispData.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -5,7 +5,6 @@
LispList {
private ListValueHandler list;
- private FunctionRegistry registry;
private ExecutionBuildContext context;
public LispData() {
@@ -20,7 +19,6 @@
LispList list = new LispForm( );
list.setContext( this.context );
- list.setRegistry( this.registry );
return list;
}
@@ -33,11 +31,6 @@
this.context = context;
}
-
- public void setRegistry(FunctionRegistry registry) {
- this.registry = registry;
- }
-
public ValueHandler[] toArray() {
return this.list.getList();
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispForm.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispForm.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispForm.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,13 +1,11 @@
package org.drools.clp;
public class LispForm implements LispList {
- private FunctionRegistry registry;
private ExecutionBuildContext context;
private FunctionCaller caller;
- public LispForm(ExecutionBuildContext context, FunctionRegistry registry) {
+ public LispForm(ExecutionBuildContext context) {
this.context = context;
- this.registry = registry;
}
public LispForm() {
@@ -20,17 +18,32 @@
public void add(ValueHandler valueHandler) {
// we know this is a string literal, so can use null for the context
if ( this.caller == null ) {
- this.caller = new FunctionCaller( this.registry.getFunction( valueHandler.getStringValue( null ) ) );
+ this.caller = new FunctionCaller( this.context.getFunctionRegistry().getFunction( valueHandler.getStringValue( null ) ) );
+ this.caller.getFunction().initCallback( context );
} else {
+ int length;
+ if ( this.caller == null || this.caller.getParameters() == null ) {
+ length = 0;
+ } else {
+ length = ( this.caller == null ) ? 0 : this.caller.getParameters().length;
+ }
+ valueHandler = this.caller.getFunction().addParameterCallback( length, valueHandler, context );
this.caller.addParameter( valueHandler );
+
}
}
public LispList createList() {
- LispList list = this.caller.createList( this.caller.getParameters().length );
+ int length;
+ if ( this.caller == null || this.caller.getParameters() == null ) {
+ length = 0;
+ } else {
+ length = ( this.caller == null ) ? 0 : this.caller.getParameters().length;
+ }
+ LispList list = this.caller.createList( length );
+
list.setContext( this.context );
- list.setRegistry( this.registry );
return list;
}
@@ -38,10 +51,5 @@
public void setContext(ExecutionBuildContext context) {
this.context = context;
}
-
-
- public void setRegistry(FunctionRegistry registry) {
- this.registry = registry;
- }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispList.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispList.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/LispList.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -8,8 +8,5 @@
public ValueHandler getValueHandler();
public void setContext(ExecutionBuildContext context);
-
-
- public void setRegistry(FunctionRegistry registry);
}
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-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/AddFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -8,7 +8,7 @@
import org.drools.clp.LispList;
import org.drools.clp.ValueHandler;
-public class AddFunction implements Function {
+public class AddFunction extends BaseFunction implements Function {
private static final String name = "+";
public AddFunction() {
@@ -26,14 +26,5 @@
public String getName() {
return name;
- }
-
- public LispList createList(int index) {
- return new LispForm();
- }
-
- public String toString() {
- return "[Function '" + getName() + "']";
- }
-
+ }
}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BaseFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BaseFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BaseFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -0,0 +1,26 @@
+package org.drools.clp.functions;
+
+import org.drools.clp.ExecutionBuildContext;
+import org.drools.clp.Function;
+import org.drools.clp.LispForm;
+import org.drools.clp.LispList;
+import org.drools.clp.ValueHandler;
+
+public abstract class BaseFunction implements Function {
+
+ public void initCallback(ExecutionBuildContext context) {
+
+ }
+
+ public ValueHandler addParameterCallback(int index, ValueHandler valueHandler, ExecutionBuildContext context ) {
+ return valueHandler;
+ }
+
+ public LispList createList(int index) {
+ return new LispForm();
+ }
+
+ public String toString() {
+ return "[Function '" + getName() + "']";
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BindFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BindFunction.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/BindFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,31 +1,39 @@
package org.drools.clp.functions;
+import org.drools.clp.ExecutionBuildContext;
import org.drools.clp.ExecutionContext;
import org.drools.clp.Function;
import org.drools.clp.LispForm;
import org.drools.clp.LispList;
+import org.drools.clp.TempTokenVariable;
import org.drools.clp.ValueHandler;
+import org.drools.clp.VariableValueHandler;
-public class BindFunction implements Function {
+public class BindFunction extends BaseFunction implements Function {
private static final String name = "bind";
public BindFunction() {
}
+
+ public ValueHandler addParameterCallback(int index, ValueHandler valueHandler, ExecutionBuildContext context ) {
+ // The first index in the 'bind' function is the variable
+ // register the variable, if it doesn't already exist, will be a TempTokenVariable if it does not already exist
+ if ( index == 0 && ( valueHandler instanceof TempTokenVariable ) ) {
+ TempTokenVariable temp = ( TempTokenVariable ) valueHandler;
+ valueHandler= context.createLocalVariable( temp.getIdentifier() );
+ }
+
+ return valueHandler;
+ }
+
public Object execute(ValueHandler[] args, ExecutionContext context) {
args[0].setValue( context, args[1].getValue( context ) );
return args[0];
}
- public LispList createList(int index) {
- return new LispForm();
- }
-
public String getName() {
return name;
}
- public String toString() {
- return "[Function '" + getName() + "']";
- }
}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/IfFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/IfFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/IfFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -0,0 +1,39 @@
+package org.drools.clp.functions;
+
+import org.drools.clp.ExecutionContext;
+import org.drools.clp.Function;
+import org.drools.clp.LispForm;
+import org.drools.clp.LispList;
+import org.drools.clp.ValueHandler;
+
+public class IfFunction extends BaseFunction implements Function {
+ private static final String name = "if";
+
+ public IfFunction() {
+
+ }
+
+ public Object execute(ValueHandler[] args, ExecutionContext context) {
+ boolean result = args[0].getBooleanValue( context );
+ if ( result ) {
+ return args[2].getValue( context );
+ } else if ( args[3] != null && args[4] != null ) {
+ return args[4].getValue( context );
+ } else {
+ return new Boolean( result );
+ }
+ }
+
+
+ public String getName() {
+ return name;
+ }
+
+ public LispList createList(int index) {
+ return new LispForm();
+ }
+
+ public String toString() {
+ return "[Function '" + getName() + "']";
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/LessThanFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/LessThanFunction.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/LessThanFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -6,7 +6,7 @@
import org.drools.clp.LispList;
import org.drools.clp.ValueHandler;
-public class LessThanFunction implements Function {
+public class LessThanFunction extends BaseFunction implements Function {
private static final String name = "<";
public LessThanFunction() {
@@ -14,18 +14,11 @@
}
public Object execute(ValueHandler[] args, ExecutionContext context) {
- return new Boolean( args[1].getBigDecimalValue( context ).compareTo( args[2].getBigDecimalValue( context ) ) < 0 );
+ return new Boolean( args[0].getBigDecimalValue( context ).compareTo( args[1].getBigDecimalValue( context ) ) < 0 );
}
public String getName() {
return name;
}
- public LispList createList(int index) {
- return new LispForm();
- }
-
- public String toString() {
- return "[Function '" + getName() + "']";
- }
}
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-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/ModifyFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -7,7 +7,7 @@
import org.drools.clp.ValueHandler;
import org.mvel.PropertyAccessor;
-public class ModifyFunction implements Function {
+public class ModifyFunction extends BaseFunction implements Function {
private static final String name = "modify";
public ModifyFunction() {
@@ -32,8 +32,4 @@
public String getName() {
return name;
}
-
- public String toString() {
- return "[Function '" + getName() + "']";
- }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/MultiplyFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/MultiplyFunction.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/MultiplyFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -8,7 +8,7 @@
import org.drools.clp.LispList;
import org.drools.clp.ValueHandler;
-public class MultiplyFunction implements Function {
+public class MultiplyFunction extends BaseFunction implements Function {
private static final String name = "*";
public MultiplyFunction() {
@@ -26,14 +26,6 @@
public String getName() {
return name;
- }
-
- public LispList createList(int index) {
- return new LispForm();
}
-
- public String toString() {
- return "[Function '" + getName() + "']";
- }
}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/WhileFunction.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/WhileFunction.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/clp/functions/WhileFunction.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -0,0 +1,33 @@
+package org.drools.clp.functions;
+
+import org.drools.clp.ExecutionContext;
+import org.drools.clp.Function;
+import org.drools.clp.LispForm;
+import org.drools.clp.LispList;
+import org.drools.clp.ValueHandler;
+
+public class WhileFunction extends BaseFunction implements Function {
+ private static final String name = "while";
+
+ public WhileFunction() {
+
+ }
+
+ public Object execute(ValueHandler[] args, ExecutionContext context) {
+ Object result = null;
+
+ ValueHandler doHandler = args[ args.length - 1 ];
+
+ while( args[0].getBooleanValue( context ) ) {
+ result = doHandler.getValue( context );
+ }
+
+ return result;
+ }
+
+
+ public String getName() {
+ return name;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/CLP.g 2007-03-24 14:25:50 UTC (rev 10516)
@@ -312,11 +312,11 @@
rhs returns[ExecutionEngine engine]
@init {
engine = new BlockExecutionEngine();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
}
:
- (fc=lisp_list[context, new LispForm(context, functionRegistry) ] { context.addFunction( (FunctionCaller) fc ); })*
+ (fc=lisp_list[context, new LispForm(context) ] { context.addFunction( (FunctionCaller) fc ); })*
;
and_ce[ConditionalElementDescr in_ce]
@@ -375,14 +375,14 @@
@init {
EvalDescr evalDescr= null;
ExecutionEngine engine = new CLPEval();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
}
: LEFT_PAREN
TEST {
evalDescr = new EvalDescr();
in_ce.addDescr( evalDescr );
}
- fc=lisp_list[context, new LispForm(context, functionRegistry)] {
+ fc=lisp_list[context, new LispForm(context)] {
engine.addFunction( (FunctionCaller) fc );
evalDescr.setContent( engine );
}
@@ -472,10 +472,10 @@
predicate_constraint[String op, ColumnDescr column]
@init {
ExecutionEngine engine = new CLPPredicate();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
}
: COLON
- fc=lisp_list[context, new LispForm(context, functionRegistry)] {
+ fc=lisp_list[context, new LispForm(context)] {
engine.addFunction( (FunctionCaller) fc );
column.addDescr( new PredicateDescr( engine ) );
}
@@ -486,10 +486,10 @@
return_value_restriction[String op, FieldConstraintDescr fc]
@init {
ExecutionEngine engine = new CLPReturnValue();
- ExecutionBuildContext context = new ExecutionBuildContext( engine );
+ ExecutionBuildContext context = new ExecutionBuildContext( engine, functionRegistry );
}
: EQUALS
- func=lisp_list[context, new LispForm(context, functionRegistry)] {
+ func=lisp_list[context, new LispForm(context)] {
engine.addFunction( (FunctionCaller) func );
fc.addRestriction( new ReturnValueRestrictionDescr (op, engine ) );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/functions.conf
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/functions.conf 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/clp/functions.conf 2007-03-24 14:25:50 UTC (rev 10516)
@@ -1,4 +1,6 @@
org.drools.clp.functions.AddFunction
+org.drools.clp.functions.IfFunction
+org.drools.clp.functions.WhileFunction
org.drools.clp.functions.LessThanFunction
org.drools.clp.functions.BindFunction
org.drools.clp.functions.ModifyFunction
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/BlockExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/BlockExecutionTest.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/BlockExecutionTest.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -10,9 +10,16 @@
import org.drools.clp.functions.ModifyFunction;
public class BlockExecutionTest extends TestCase {
+
+ FunctionRegistry registry;
+
+ public void setUp() {
+ this.registry = new FunctionRegistry( BuiltinFunctions.getInstance() );
+ }
+
public void testAddWithModify() {
BlockExecutionEngine engine = new BlockExecutionEngine();
- ExecutionBuildContext build = new ExecutionBuildContext(engine);
+ ExecutionBuildContext build = new ExecutionBuildContext(engine, this.registry );
FunctionCaller addCaller = new FunctionCaller( new AddFunction() );
addCaller.addParameter( new ObjectLiteralValue( new BigDecimal( 20) ) );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -31,14 +31,20 @@
private CLPParser parser;
+ FunctionRegistry registry;
+
+ public void setUp() {
+ this.registry = new FunctionRegistry( BuiltinFunctions.getInstance() );
+ }
+
protected void tearDown() throws Exception {
super.tearDown();
this.parser = null;
}
- public void testParseFunction() throws Exception {
- ExecutionBuildContext context = new ExecutionBuildContext( new CLPPredicate() );
- FunctionCaller fc = ( FunctionCaller ) parse( "(< 1 2)" ).lisp_list( context, new LispForm(context, new FunctionRegistry( BuiltinFunctions.getInstance() ) ) );
+ public void testParseFunction() throws Exception {
+ ExecutionBuildContext context = new ExecutionBuildContext( new CLPPredicate(), this.registry );
+ FunctionCaller fc = ( FunctionCaller ) parse( "(< 1 2)" ).lisp_list( context, new LispForm(context) );
assertEquals( "<", fc.getName() );
assertEquals( new LongLiteralValue( 1 ), fc.getParameters()[0] );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/CompiledParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/CompiledParserTest.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/CompiledParserTest.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -3,6 +3,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
+import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
@@ -19,15 +20,13 @@
private CLPParser parser;
public void test1() throws Exception {
- BlockExecutionEngine engine = ( BlockExecutionEngine ) parse("(bind ?x (+ 20 11) )(modify ?p (age ?x) )").rhs();
+ BlockExecutionEngine engine = ( BlockExecutionEngine ) parse("(bind ?x (+ 20 11) ) (modify ?p (age ?x) )").rhs();
ExecutionContext context = new ExecutionContext(null, null, 2);
Person p = new Person("mark");
Map vars = new HashMap();
-
- // CONAN, is this correct?
- vars.put( "?x", new LocalVariableValue( "?x", 0 ) );
-
+
+ //vars.put( "?x", new LocalVariableValue( "?x", 0 ) );
vars.put( "?p", new ObjectLiteralValue( p ) );
engine.replaceTempTokens( vars );
@@ -36,6 +35,45 @@
assertEquals( 31, p.getAge() );
}
+ public void testIf() throws Exception {
+ BlockExecutionEngine engine = ( BlockExecutionEngine ) parse("(if (< ?x ?y ) then (modify ?p (age 15) ) else (modify ?p (age 5)))").rhs();
+ ExecutionContext context = new ExecutionContext(null, null, 2);
+
+ Person p = new Person("mark");
+ Map vars = new HashMap();
+
+ vars.put( "?x", new LongLiteralValue( 10 ) );
+ vars.put( "?y", new LocalVariableValue( "?y", 0 ) );
+ vars.put( "?p", new ObjectLiteralValue( p ) );
+ engine.replaceTempTokens( vars );
+
+ context.setLocalVariable( 0, new Long( 20 ) );
+
+ engine.execute( context );
+ assertEquals( 15, p.getAge() );
+
+ context.setLocalVariable( 0, new Long( 7 ) );
+ engine.execute( context );
+ assertEquals( 5, p.getAge() );
+ }
+
+ public void testWhile() throws Exception {
+ BlockExecutionEngine engine = ( BlockExecutionEngine ) parse("(while (< ?x ?y) do (bind ?x (+ ?x 1) ) )").rhs();
+ ExecutionContext context = new ExecutionContext(null, null, 2);
+
+ Map vars = new HashMap();
+
+ vars.put( "?x", new LocalVariableValue( "?x", 0 ) );
+ vars.put( "?y", new LocalVariableValue( "?y", 1 ) );
+ engine.replaceTempTokens( vars );
+
+ context.setLocalVariable( 0, new Long( 0 ) );
+ context.setLocalVariable( 1, new Long( 10 ) );
+
+ engine.execute( context );
+ assertEquals( new BigDecimal(10), context.getLocalVariable( 0 ) );
+ }
+
private CLPParser parse(final String text) throws Exception {
this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
return this.parser;
@@ -55,8 +93,6 @@
}
private CLPParser parseResource(final String name) throws Exception {
-
- // System.err.println( getClass().getResource( name ) );
Reader reader = getReader( name );
final StringBuffer text = new StringBuffer();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/FunctionFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/FunctionFactoryTest.java 2007-03-24 03:26:59 UTC (rev 10515)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/FunctionFactoryTest.java 2007-03-24 14:25:50 UTC (rev 10516)
@@ -5,9 +5,10 @@
public class FunctionFactoryTest extends TestCase {
public void testInit() {
FunctionRegistry factory = new FunctionRegistry( BuiltinFunctions.getInstance() );
- assertEquals( 4, factory.getFunctionSize() );
+ // make sure some core functions are there
assertSame( "+", factory.getFunction( "+" ).getName() );
assertSame( "bind" , factory.getFunction( "bind" ).getName() );
+ assertSame( "modify" , factory.getFunction( "modify" ).getName() );
}
}
More information about the jboss-svn-commits
mailing list