01: package org.drools.base.mvel;
02:
03: import java.io.Serializable;
04:
05: import org.drools.WorkingMemory;
06: import org.drools.rule.Declaration;
07: import org.drools.spi.FieldValue;
08: import org.drools.spi.ReturnValueExpression;
09: import org.drools.spi.Tuple;
10: import org.mvel.MVEL;
11:
12: public class MVELReturnValueExpression implements
13: ReturnValueExpression, Serializable {
14: private static final long serialVersionUID = 400L;
15:
16: private final Serializable expr;
17: private final DroolsMVELFactory factory;
18:
19: public MVELReturnValueExpression(final Serializable expr,
20: final DroolsMVELFactory factory) {
21: this .expr = expr;
22: this .factory = factory;
23: }
24:
25: public FieldValue evaluate(final Object object, final Tuple tuple,
26: final Declaration[] previousDeclarations,
27: final Declaration[] requiredDeclarations,
28: final WorkingMemory workingMemory) throws Exception {
29: this.factory.setContext(tuple, null, object, workingMemory,
30: null);
31:
32: return org.drools.base.FieldFactory.getFieldValue(MVEL
33: .executeExpression(this.expr, null, this.factory));
34: }
35:
36: }
|