01: package groovy.util;
02:
03: import org.codehaus.groovy.control.CompilationFailedException;
04:
05: import groovy.lang.Binding;
06: import groovy.lang.GroovyShell;
07:
08: /**
09: * Allow easy integration from Groovy into Java through convenience methods.
10: * @see EvalTest
11: * @author Dierk Koenig
12: */
13:
14: public class Eval {
15: /**
16: * @param expression the Groovy expression to evaluate
17: * @return the result of the expression
18: * @throws CompilationFailedException if expression is no proper Groovy
19: */
20: public static Object me(final String expression)
21: throws CompilationFailedException {
22: return me(null, null, expression);
23: }
24:
25: /**
26: * evaluate expression and make object available inside the expression as 'symbol'
27: * @param expression the Groovy expression to evaluate
28: * @return the result of the expression
29: * @throws CompilationFailedException if expression is no proper Groovy
30: */
31: public static Object me(final String symbol, final Object object,
32: final String expression) throws CompilationFailedException {
33: Binding b = new Binding();
34: b.setVariable(symbol, object);
35: GroovyShell sh = new GroovyShell(b);
36: return sh.evaluate(expression);
37: }
38:
39: /**
40: * evaluate expression and make x available inside the expression as 'x'
41: * @param expression the Groovy expression to evaluate
42: * @return the result of the expression
43: * @throws CompilationFailedException if expression is no proper Groovy
44: */
45: public static Object x(final Object x, final String expression)
46: throws CompilationFailedException {
47: return me("x", x, expression);
48: }
49:
50: /**
51: * evaluate expression and make x and y available inside the expression as 'x' and 'y'
52: * @param expression the Groovy expression to evaluate
53: * @return the result of the expression
54: * @throws CompilationFailedException if expression is no proper Groovy
55: */
56: public static Object xy(final Object x, final Object y,
57: final String expression) throws CompilationFailedException {
58: Binding b = new Binding();
59: b.setVariable("x", x);
60: b.setVariable("y", y);
61: GroovyShell sh = new GroovyShell(b);
62: return sh.evaluate(expression);
63: }
64:
65: /**
66: * evaluate expression and make x,y,z available inside the expression as 'x','y','z'
67: * @param expression the Groovy expression to evaluate
68: * @return the result of the expression
69: * @throws CompilationFailedException if expression is no proper Groovy
70: */
71: public static Object xyz(final Object x, final Object y,
72: final Object z, final String expression)
73: throws CompilationFailedException {
74: Binding b = new Binding();
75: b.setVariable("x", x);
76: b.setVariable("y", y);
77: b.setVariable("z", z);
78: GroovyShell sh = new GroovyShell(b);
79: return sh.evaluate(expression);
80: }
81: }
|