package de.galan.verjson.core;
import org.apache.logging.log4j.Logger;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.base.Preconditions;
import de.galan.commons.logging.Logr;
import de.galan.verjson.step.ProcessStepException;
import de.galan.verjson.step.Step;
/**
* Wraps a {@link Step}, adds the assigned source-version and successor.
*
* @author daniel
*/
public class ProxyStep implements Step {
private static final Logger LOG = Logr.get();
Long sourceVersion;
Step step;
Step successor;
public ProxyStep(Long sourceVersion, Step step) {
Preconditions.checkNotNull(sourceVersion, "SourceVersion could not be null");
Preconditions.checkNotNull(step, "Step could not be null");
this.sourceVersion = sourceVersion;
this.step = step;
}
@Override
public void process(JsonNode node) throws ProcessStepException {
LOG.debug("Processing {}/{}", getSourceVersion(), getStep().getClass().getSimpleName()); // TODO Idea - name annotation for steps for better debugging
getStep().process(node);
if (successor != null) {
successor.process(node);
}
}
public Long getSourceVersion() {
return sourceVersion;
}
protected Step getStep() {
return step;
}
public void setSuccessor(ProxyStep successor) {
this.successor = successor;
}
@Override
public String toString() {
return "ProxyStep " + getSourceVersion() + "/" + getStep().getClass().getSimpleName();
}
}