package org.zstack.core.workflow; import org.zstack.header.core.workflow.Flow; import org.zstack.header.exception.CloudRuntimeException; import java.util.ArrayList; import java.util.List; /** */ public class ShareFlowChain extends SimpleFlowChain { private List<ShareFlow> shareFlows = new ArrayList<ShareFlow>(); @Override public ShareFlowChain then(Flow flow) { if (!(flow instanceof ShareFlow)) { throw new IllegalArgumentException(String.format("ShareFlowChain only receives ShareFlow in then(), but %s got", flow.getClass().getName())); } shareFlows.add((ShareFlow) flow); return this; } void install(Flow flow) { super.then(flow); } @Override public void start() { if (shareFlows.isEmpty()) { throw new CloudRuntimeException(String.format("you must call then() to install ShareFlow before start()")); } for (ShareFlow shareFlow : shareFlows) { shareFlow.setChain(this); shareFlow.setup(); } super.start(); } }