Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.dizpers.core;
- import java.util.Map;
- import org.apache.commons.jexl2.JexlArithmetic;
- import org.apache.commons.jexl2.JexlContext;
- import org.apache.commons.jexl2.JexlException;
- import org.apache.commons.jexl2.introspection.Uberspect;
- import org.apache.commons.jexl2.parser.JexlNode;
- import org.apache.commons.logging.Log;
- import ru.dizpers.core.Interpreter;
- public class JexlEngine extends org.apache.commons.jexl2.JexlEngine{
- public JexlEngine(){
- super();
- }
- public JexlEngine(Uberspect anUberspect, JexlArithmetic anArithmetic, Map<String, Object> theFunctions, Log log) {
- super(anUberspect, anArithmetic, theFunctions, log);
- }
- @Override
- public Object getProperty(JexlContext context, Object bean, String expr) {
- if (context == null) {
- context = EMPTY_CONTEXT;
- }
- // synthetize expr using register
- expr = "#0" + (expr.charAt(0) == '[' ? "" : ".") + expr + ";";
- try {
- parser.ALLOW_REGISTERS = true;
- JexlNode tree = parse(expr, null);
- JexlNode node = tree.jjtGetChild(0);
- Interpreter interpreter = createInterpreter(context);
- // set register
- interpreter.setRegisters(bean);
- return node.jjtAccept(interpreter, null);
- } catch (JexlException xjexl) {
- if (silent) {
- logger.warn(xjexl.getMessage(), xjexl.getCause());
- return null;
- }
- throw xjexl;
- } finally {
- parser.ALLOW_REGISTERS = false;
- }
- }
- @Override
- protected Interpreter createInterpreter(JexlContext context) {
- if (context == null) {
- context = EMPTY_CONTEXT;
- }
- return new Interpreter(this, context);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment