package org.zstack.core.workflow; import org.zstack.header.errorcode.ErrorCode; import org.zstack.header.exception.CloudRuntimeException; public class MockWorkFlowChain extends WorkFlowChain { private int exitPosition = -1; private int rollbackExitPosition = -1; public MockWorkFlowChain(String canonicalName) { super(canonicalName); } protected ErrorCode processFlow(WorkFlow flow, WorkFlowVO vo, int position) { if (exitPosition == position) { super.processFlow(flow, vo, position); throw new CloudRuntimeException("Exit on purpose"); } else { return super.processFlow(flow, vo, position); } } protected void rollbackFlow(WorkFlowVO vo) { super.rollbackFlow(vo); if (vo.getPosition() == rollbackExitPosition) { throw new CloudRuntimeException("Exit on purpose"); } } public void setExitPositionForProcessDone(int pos) { exitPosition = pos; } public void setRollbackExitPosition(int rollbackExitPosition) { this.rollbackExitPosition = rollbackExitPosition; } }