@Override public void execute() throws IOException { String ifValue = parameterResolver.resolveTemplateParameter(ifElem.getTest(), ContextInfo.EMPTY); // skip section on false condition if (!Boolean.valueOf(ifValue)) { return; } for (Object operation : ifElem.getExecOnceOrExecEachSegmentOrExecEachSequence()) { if (operation instanceof ExecOnceType) { new ConversionExecutorOnce(contextProvider, executeStrategyFactory, (ExecOnceType) operation).execute(); } else if (operation instanceof ExecEachSegmentSequenceType) { new ConversionExecutorSegment(contextProvider, executeStrategyFactory, (ExecEachSegmentSequenceType) operation).execute(); } else if (operation instanceof ExecEachSequenceSegmentType) { new ConversionExecutorSequence(contextProvider, executeStrategyFactory, (ExecEachSequenceSegmentType) operation).execute(); } else if (operation instanceof PipeType) { new ConversionExecutorPipe(contextProvider, executeStrategyFactory, (PipeType) operation).execute(); } else if (operation instanceof DynamicParameterConcatType) { new ConversionExecutorDynamicParameter(contextProvider, executeStrategyFactory, (DynamicParameterConcatType) operation).execute(); } else if (operation instanceof ForType) { new ConversionExecutorFor(contextProvider, executeStrategyFactory, (ForType) operation).execute(); } else if (operation instanceof IfType) { new ConversionExecutorIf(contextProvider, executeStrategyFactory, (IfType) operation).execute(); } else { throw new ConversionException(String.format("Unknown Conversion Operation type: %s", operation.toString())); } } }