@Override public void execute() throws IOException { // 1. prepare operation to be executed in a pipe PipeOperationInfo pipeInfo = new PipeOperationInfo(); for (ExecOnceType tailOperation : pipe.getExecOnce()) { pipeInfo.getTailOperations().add( getExecOnceOperation(tailOperation)); } if (pipe.getCycle() != null) { for (Object cycleOperation : pipe.getCycle().getPipeOrExecOnce()) { if (cycleOperation instanceof ExecOnceType) { pipeInfo.addCycleOperation(getExecOnceOperation((ExecOnceType) cycleOperation)); } else if (cycleOperation instanceof SubPipeType) { pipeInfo.addCycleOperation(getSubPipeOperations((SubPipeType) cycleOperation)); } } } // 2. execute in a pipe executeStrategyFactory.createExecutePipeStrategy(contextProvider).execute(pipeInfo); }