package com.xrosstools.xunit.impl; import com.xrosstools.xunit.Context; import com.xrosstools.xunit.Converter; import com.xrosstools.xunit.Processor; import com.xrosstools.xunit.Unit; public abstract class BaseCompositeImpl implements Processor, Converter { protected final void process(Unit unit, Context ctx){ if(unit == null) return; if(unit instanceof Processor){ ((Processor)unit).process(ctx); return; } // For converter, we simply ignore the output if(unit instanceof Converter) ((Converter)unit).convert(ctx); } protected final Context convert(Unit unit, Context inputCtx){ if(unit == null) return inputCtx; if(unit instanceof Converter) return ((Converter)unit).convert(inputCtx); // For processor, we simply return the input if(unit instanceof Processor) ((Processor)unit).process(inputCtx); return inputCtx; } }