package io.cattle.platform.engine.process; import io.cattle.platform.engine.handler.ProcessHandler; import io.cattle.platform.engine.handler.ProcessPostListener; import io.cattle.platform.engine.handler.ProcessPreListener; import io.cattle.platform.extension.ExtensionManager; import io.cattle.platform.extension.ExtensionPoint; import java.util.List; import javax.annotation.PostConstruct; import javax.inject.Inject; public abstract class AbstractProcessDefinition implements ProcessDefinition, ExtensionBasedProcessDefinition { public static final String PRE = "process.%s.pre.listeners"; public static final String HANDLER = "process.%s.handlers"; public static final String POST = "process.%s.post.listeners"; String preProcessListenersKey; String processHandlersKey; String postProcessListenersKey; ExtensionManager extensionManager; String name; String processDelegateName; @PostConstruct public void init() { if (name == null) { throw new IllegalStateException("name is required on [" + this + "]"); } preProcessListenersKey = String.format(PRE, getName()); processHandlersKey = String.format(HANDLER, getName()); postProcessListenersKey = String.format(POST, getName()); } @Override public List<ProcessHandler> getProcessHandlers() { return extensionManager.getExtensionList(processHandlersKey, ProcessHandler.class); } @Override public List<ProcessPreListener> getPreProcessListeners() { return extensionManager.getExtensionList(preProcessListenersKey, ProcessPreListener.class); } @Override public List<ProcessPostListener> getPostProcessListeners() { return extensionManager.getExtensionList(postProcessListenersKey, ProcessPostListener.class); } @Override public ExtensionPoint getPreProcessListenersExtensionPoint() { return extensionManager.getExtensionPoint(preProcessListenersKey, ProcessPreListener.class); } @Override public ExtensionPoint getProcessHandlersExtensionPoint() { return extensionManager.getExtensionPoint(processHandlersKey, ProcessHandler.class); } @Override public ExtensionPoint getPostProcessListenersExtensionPoint() { return extensionManager.getExtensionPoint(postProcessListenersKey, ProcessPostListener.class); } @Override public String getName() { return name; } @Inject public void setName(String name) { this.name = name; } public ExtensionManager getExtensionManager() { return extensionManager; } @Inject public void setExtensionManager(ExtensionManager extensionManager) { this.extensionManager = extensionManager; } @Override public String getProcessDelegateName() { return processDelegateName; } public void setProcessDelegateName(String processDelegateName) { this.processDelegateName = processDelegateName; } }