1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jelly.tags.beanshell;
17
18 import org.apache.commons.jelly.JellyContext;
19 import org.apache.commons.jelly.expression.ExpressionSupport;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23
24
25 /*** Represents a <a href="http://www.beanshell.org" target="alexandria_uri">http://www.beanshell.org">beanshell</a> expression
26 *
27 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
28 * @version $Revision: 155420 $
29 */
30 public class BeanShellExpression extends ExpressionSupport {
31
32 /*** The Log to which logging calls will be made. */
33 private static final Log log = LogFactory.getLog( BeanShellExpression.class );
34
35 /*** The expression */
36 private String text;
37
38 public BeanShellExpression(String text) {
39 this.text = text;
40 }
41
42
43
44 public String getExpressionText() {
45 return "${" + text + "}";
46 }
47
48 public Object evaluate(JellyContext context) {
49 try {
50 JellyInterpreter interpreter = new JellyInterpreter();
51 interpreter.setJellyContext(context);
52
53 if ( log.isDebugEnabled() ) {
54 log.debug( "Evaluating beanshell: " + text );
55 }
56
57 return interpreter.eval( text );
58 }
59 catch (Exception e) {
60 log.warn( "Caught exception evaluating: " + text + ". Reason: " + e, e );
61 return null;
62 }
63 }
64 }