Esempio n. 1
0
 private void appendTraceHeader(
     StringBuilder sb,
     ExpressionEvaluationContext context,
     ExpressionVariables processedVariables) {
   sb.append("---[ EXPRESSION in ");
   sb.append(context.getContextDescription());
   sb.append("]---------------------------");
   sb.append("\nSources:");
   Collection<Source<?, ?>> sources = context.getSources();
   if (sources == null) {
     sb.append(" null");
   } else {
     for (Source<?, ?> source : sources) {
       sb.append("\n");
       sb.append(source.debugDump(1));
     }
   }
   sb.append("\nVariables:");
   if (processedVariables == null) {
     sb.append(" null");
   } else {
     sb.append("\n");
     sb.append(processedVariables.debugDump(1));
   }
   sb.append("\nOutput definition: ").append(MiscUtil.toString(outputDefinition));
   sb.append("\nEvaluators: ");
   sb.append(shortDebugDump());
 }
Esempio n. 2
0
 private void traceFailure(
     ExpressionEvaluationContext context, ExpressionVariables processedVariables, Exception e) {
   LOGGER.error(
       "Error evaluating expression in {}: {}",
       new Object[] {context.getContextDescription(), e.getMessage(), e});
   if (!LOGGER.isTraceEnabled()) {
     return;
   }
   StringBuilder sb = new StringBuilder();
   sb.append("Expression failure:\n");
   appendTraceHeader(sb, context, processedVariables);
   sb.append("\nERROR: ").append(e.getClass().getSimpleName()).append(": ").append(e.getMessage());
   appendTraceFooter(sb);
   LOGGER.trace(sb.toString());
 }
Esempio n. 3
0
  public PrismValueDeltaSetTriple<V> evaluate(ExpressionEvaluationContext context)
      throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException {

    ExpressionVariables processedVariables = null;

    try {

      processedVariables =
          processInnerVariables(
              context.getVariables(),
              context.getContextDescription(),
              context.getTask(),
              context.getResult());

      ExpressionEvaluationContext processedParameters = context.shallowClone();
      processedParameters.setVariables(processedVariables);

      for (ExpressionEvaluator<?, ?> evaluator : evaluators) {
        PrismValueDeltaSetTriple<V> outputTriple =
            (PrismValueDeltaSetTriple<V>) evaluator.evaluate(processedParameters);
        if (outputTriple != null) {
          traceSuccess(context, processedVariables, outputTriple);
          return outputTriple;
        }
      }
      traceSuccess(context, processedVariables, null);
      return null;
    } catch (SchemaException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    } catch (ExpressionEvaluationException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    } catch (ObjectNotFoundException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    } catch (RuntimeException ex) {
      traceFailure(context, processedVariables, ex);
      throw ex;
    }
  }