1 package groovy.util;
2
3 import org.codehaus.groovy.control.CompilationFailedException;
4
5 import groovy.lang.Binding;
6 import groovy.lang.GroovyShell;
7
8 /***
9 * 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) throws CompilationFailedException {
21 return me(null, null, expression);
22 }
23
24 /***
25 * evaluate expression and make object available inside the expression as 'symbol'
26 * @param expression the Groovy expression to evaluate
27 * @return the result of the expression
28 * @throws CompilationFailedException if expression is no proper Groovy
29 */
30 public static Object me(final String symbol, final Object object, final String expression) throws CompilationFailedException {
31 Binding b = new Binding();
32 b.setVariable(symbol, object);
33 GroovyShell sh = new GroovyShell(b);
34 return sh.evaluate(expression);
35 }
36
37 /***
38 * evaluate expression and make x available inside the expression as 'x'
39 * @param expression the Groovy expression to evaluate
40 * @return the result of the expression
41 * @throws CompilationFailedException if expression is no proper Groovy
42 */
43 public static Object x(final Object x, final String expression) throws CompilationFailedException {
44 return me("x", x, expression);
45 }
46
47 /***
48 * evaluate expression and make x and y available inside the expression as 'x' and 'y'
49 * @param expression the Groovy expression to evaluate
50 * @return the result of the expression
51 * @throws CompilationFailedException if expression is no proper Groovy
52 */
53 public static Object xy(final Object x, final Object y, final String expression) throws CompilationFailedException {
54 Binding b = new Binding();
55 b.setVariable("x", x);
56 b.setVariable("y", y);
57 GroovyShell sh = new GroovyShell(b);
58 return sh.evaluate(expression);
59 }
60
61 /***
62 * evaluate expression and make x,y,z available inside the expression as 'x','y','z'
63 * @param expression the Groovy expression to evaluate
64 * @return the result of the expression
65 * @throws CompilationFailedException if expression is no proper Groovy
66 */
67 public static Object xyz(final Object x, final Object y, final Object z, final String expression) throws CompilationFailedException {
68 Binding b = new Binding();
69 b.setVariable("x", x);
70 b.setVariable("y", y);
71 b.setVariable("z", z);
72 GroovyShell sh = new GroovyShell(b);
73 return sh.evaluate(expression);
74 }
75 }