| 52 | |
| 53 | |
| 54 | public Object invoke(final Map<String, ?> context) throws EvalError { |
| 55 | final NameSpace nameSpace = new NameSpace(_interpreter.getClassManager(), "BeanshellExecutable"); |
| 56 | nameSpace.setParent(_interpreter.getNameSpace()); |
| 57 | final BshMethod method = new BshMethod(_method.getName(), _method.getReturnType(), _method.getParameterNames(), _method.getParameterTypes(), _method.methodBody, nameSpace, _method.getModifiers()); |
| 58 | for (final Map.Entry<String, ?> entry : context.entrySet()) { |
| 59 | try { |
| 60 | final Object value = entry.getValue(); |
| 61 | nameSpace.setVariable(entry.getKey(), value != null ? value : Primitive.NULL, false); |
| 62 | } catch (final UtilEvalError e) { |
| 63 | throw new EvalError("cannot set variable '" + entry.getKey() + '\'', null, null, e); |
| 64 | } |
| 65 | } |
| 66 | final Object result = method.invoke(new Object[0], _interpreter); |
| 67 | if (result instanceof Primitive) { |
| 68 | if (( (Primitive) result).getType() == Void.TYPE) { |
| 69 | return null; |
| 70 | } |
| 71 | return ( (Primitive) result).getValue(); |
| 72 | } |
| 73 | return result; |
| 74 | } |
| 75 | |
| 76 | |
| 77 | public void setOut(final PrintStream value) { |