001
014
015 package com.liferay.portal.workflow;
016
017 import com.liferay.portal.kernel.security.pacl.DoPrivileged;
018 import com.liferay.portal.kernel.util.ListUtil;
019 import com.liferay.portal.kernel.workflow.WorkflowHandler;
020 import com.liferay.portal.kernel.workflow.WorkflowHandlerRegistry;
021
022 import java.util.List;
023 import java.util.Map;
024 import java.util.TreeMap;
025
026
030 @DoPrivileged
031 public class WorkflowHandlerRegistryImpl implements WorkflowHandlerRegistry {
032
033 @Override
034 public List<WorkflowHandler> getScopeableWorkflowHandlers() {
035 return ListUtil.fromMapValues(_scopeableWorkflowHandlerMap);
036 }
037
038 @Override
039 public WorkflowHandler getWorkflowHandler(String className) {
040 return _workflowHandlerMap.get(className);
041 }
042
043 @Override
044 public List<WorkflowHandler> getWorkflowHandlers() {
045 return ListUtil.fromMapValues(_workflowHandlerMap);
046 }
047
048 @Override
049 public void register(WorkflowHandler workflowHandler) {
050 synchronized (this) {
051 _workflowHandlerMap.put(
052 workflowHandler.getClassName(), workflowHandler);
053
054 if (workflowHandler.isScopeable()) {
055 _scopeableWorkflowHandlerMap.put(
056 workflowHandler.getClassName(), workflowHandler);
057 }
058 }
059 }
060
061 @Override
062 public void unregister(WorkflowHandler workflowHandler) {
063 synchronized (this) {
064 _workflowHandlerMap.remove(workflowHandler.getClassName());
065
066 if (workflowHandler.isScopeable()) {
067 _scopeableWorkflowHandlerMap.remove(
068 workflowHandler.getClassName());
069 }
070 }
071 }
072
073 private Map<String, WorkflowHandler> _scopeableWorkflowHandlerMap =
074
075 new TreeMap<String, WorkflowHandler>();
076 private Map<String, WorkflowHandler> _workflowHandlerMap =
077 new TreeMap<String, WorkflowHandler>();
078
079 }