package eu.stratosphere.sopremo.expressions;
import eu.stratosphere.sopremo.EvaluationContext;
import eu.stratosphere.sopremo.pact.SopremoUtil;
import eu.stratosphere.sopremo.type.IJsonNode;
/**
* This expression logs the evaluation of an {@link EvaluationExpression} with the help of {@link SopremoUtil.LOG}.
*/
public class TraceExpression extends EvaluationExpression {
/**
*
*/
private static final long serialVersionUID = -3935412444889830869L;
private EvaluationExpression expression;
/**
* Initializes a TraceExpression with the given {@link EvaluationExpression}.
*
* @param expression
* the expression where the evauation should be logged
*/
public TraceExpression(final EvaluationExpression expression) {
this.expression = expression;
}
/**
* Initializes TraceExpression.
*/
public TraceExpression() {
this(VALUE);
}
@Override
public IJsonNode evaluate(final IJsonNode node, final IJsonNode target, final EvaluationContext context) {
SopremoUtil.LOG.info(this.expression.evaluate(node, target, context));
return node;
}
/*
* (non-Javadoc)
* @see
* eu.stratosphere.sopremo.expressions.EvaluationExpression#transformRecursively(eu.stratosphere.sopremo.expressions
* .TransformFunction)
*/
@Override
public EvaluationExpression transformRecursively(final TransformFunction function) {
this.expression = this.expression.transformRecursively(function);
return function.call(this);
}
}