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 }