All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.sitebricks.compiler.EvaluatorCompiler Maven / Gradle / Ivy

package com.google.sitebricks.compiler;

import java.lang.reflect.Type;
import java.util.List;

import org.mvel2.ErrorDetail;

import com.google.sitebricks.Evaluator;

/**
 * @author Dhanji R. Prasanna ([email protected])
 */
public interface EvaluatorCompiler {

  /**
   * @param expression An expression to compile against this compiler (and context class)
   *
   * @return Returns An evaluator that can execute the expression against the context class and a
   *         real instance of data.
   * @throws ExpressionCompileException If there is a problem compiling the expression.
   */
  Evaluator compile(String expression) throws ExpressionCompileException;


  /**
   * @param template A String template with embedded EL expressions to convert into a list of
   * evaluable tokens. These tokens evaluate against given data or simply render plain text as
   * appropriate. Performs a compile of each expression against the context class of this
   * EvaluatorCompiler.
   *
   * @return Returns the egress type of the entire expression chain
   * @throws com.google.sitebricks.compiler.ExpressionCompileException If there is a problem
   * compiling the expression.
   */
  List tokenizeAndCompile(String template) throws ExpressionCompileException;

  /**
   * @param expression An expression to compile against this compiler (and context class)
   *
   * @return Returns the egress type of the entire expression chain
   * @throws com.google.sitebricks.compiler.ExpressionCompileException If there is a problem
   * compiling the expression.
   */
  Type resolveEgressType(String expression) throws ExpressionCompileException;

  /**
   * @param property A property of this class to test.
   * @return True if the property has a setter or reasonable alternative that can
   * be written to by the evaluator produced by this compiler.
   */
  boolean isWritable(String property) throws ExpressionCompileException;

  public static class CompileErrorDetail {
    private final String expression;
    private final ErrorDetail error;

    public CompileErrorDetail(String expression, ErrorDetail error) {
      this.expression = expression;
      this.error = error;
    }


    public String getExpression() {
      return expression;
    }

    public ErrorDetail getError() {
      return error;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy