Example #1
0
  @Override
  public Object evaluate(ExpressionContext context) throws ExpressionExecutionException {
    Object thisElement = null;
    IEvaluationContext evaluationContext = contextProvider.get();
    evaluationContext.newValue(XbaseScopeProvider.THIS, thisElement);

    if (context != null) {
      for (String elementName : context.getVariableNames()) {
        Object instance = context.getInstance(elementName);
        if (instance == null && context instanceof DynamicExpressionContext) {
          instance = ((DynamicExpressionContext) context).getDynInstance(elementName);
        }
        if (instance != null) {
          evaluationContext.newValue(QualifiedName.create(elementName), instance);
        }
      }
    } else {
      context = new ExpressionContext();
    }

    IEvaluationResult result =
        elInterpreter.evaluate(xExpression, evaluationContext, CancelIndicator.NullImpl);
    if (result.getException() != null) {
      throw new ExpressionExecutionException("Boo!", result.getException());
    }
    return result.getResult();
  }