// Path: src/main/java/de/galan/verjson/step/ProcessStepException.java
// public class ProcessStepException extends ReadException {
// 
// 	public ProcessStepException(String message) {
// 		super(message);
// 	}
// 
// 
// 	public ProcessStepException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/Step.java
// public interface Step {
// 
// 	/** Perform action on wrapped root node */
// 	public void process(JsonNode node) throws ProcessStepException;
// 
// }


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;
package de.galan.verjson.core;





/**
 * 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
// Path: src/main/java/de/galan/verjson/step/ProcessStepException.java
// public class ProcessStepException extends ReadException {
// 
// 	public ProcessStepException(String message) {
// 		super(message);
// 	}
// 
// 
// 	public ProcessStepException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// }
// 
// Path: src/main/java/de/galan/verjson/step/Step.java
// public interface Step {
// 
// 	/** Perform action on wrapped root node */
// 	public void process(JsonNode node) throws ProcessStepException;
// 
// }


// Path: src/main/java/de/galan/verjson/core/ProxyStep.java
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;

package de.galan.verjson.core;





/**
 * 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 {