Package org.jbpm.jpdl.el.impl

Source Code of org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator

package org.jbpm.jpdl.el.impl;


import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmException;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.jpdl.el.ELException;
import org.jbpm.jpdl.el.VariableResolver;

public class JbpmExpressionEvaluator {

  static ExpressionEvaluatorImpl evaluator = new ExpressionEvaluatorImpl();
 
  static VariableResolver variableResolver = null;
  public static void setVariableResolver(VariableResolver variableResolver) {
    JbpmExpressionEvaluator.variableResolver = variableResolver;
  }
 
  public static Object evaluate(String expression, ExecutionContext executionContext) {
    Object result = null;
   
    ExecutionContext.pushCurrentContext(executionContext);
    try {
      VariableResolver usedResolver = null;
     
      if (variableResolver!=null) {
        usedResolver = variableResolver;
      } else {
        usedResolver = (VariableResolver) JbpmConfiguration.Configs.getObject("jbpm.variable.resolver");
      }
     
      String dollarExpression = translateExpressionToDollars(expression);

      result = evaluator.evaluate(dollarExpression, Object.class, usedResolver, null);

    } catch (ELException e) {
      throw new JbpmException("couldn't evaluate expression '"+expression+"'", e);
    } finally {
      ExecutionContext.popCurrentContext(executionContext);
    }
   
    return result;
  }

  static String translateExpressionToDollars(String expression) {
    char[] chars = expression.toCharArray();
    int index = 0;
    while (index!=-1) {
      index = expression.indexOf("#{", index);
      if (index!=-1) {
        chars[index] = '$';
        index++;
      }
    }
    return new String(chars);
  }
}
TOP

Related Classes of org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.