001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.portal.kernel.workflow.messaging;
016    
017    import com.liferay.portal.kernel.log.Log;
018    import com.liferay.portal.kernel.log.LogFactoryUtil;
019    import com.liferay.portal.kernel.messaging.BaseDestinationEventListener;
020    import com.liferay.portal.kernel.messaging.DestinationNames;
021    import com.liferay.portal.kernel.messaging.MessageBusUtil;
022    import com.liferay.portal.kernel.messaging.MessageListener;
023    
024    /**
025     * @author Michael C. Han
026     */
027    public class DefaultWorkflowDestinationEventListener
028            extends BaseDestinationEventListener {
029    
030            public void messageListenerRegistered(
031                    String destinationName, MessageListener messageListener) {
032    
033                    if (_log.isInfoEnabled()) {
034                            _log.info(
035                                    "Unregistering default workflow engine " + _workflowEngineName);
036                    }
037    
038                    if (!isProceed(destinationName, messageListener)) {
039                            return;
040                    }
041    
042                    MessageBusUtil.unregisterMessageListener(
043                            DestinationNames.WORKFLOW_DEFINITION,
044                            _workflowDefinitionManagerListener);
045    
046                    MessageBusUtil.unregisterMessageListener(
047                            DestinationNames.WORKFLOW_ENGINE, _workflowEngineManagerListener);
048    
049                    MessageBusUtil.unregisterMessageListener(
050                            DestinationNames.WORKFLOW_INSTANCE,
051                            _workflowInstanceManagerListener);
052    
053                    MessageBusUtil.unregisterMessageListener(
054                            DestinationNames.WORKFLOW_LOG, _workflowLogManagerListener);
055    
056                    MessageBusUtil.unregisterMessageListener(
057                            DestinationNames.WORKFLOW_TASK, _workflowTaskManagerListener);
058            }
059    
060            public void messageListenerUnregistered(
061                    String destinationName, MessageListener messageListener) {
062    
063                    if (!isProceed(destinationName, messageListener)) {
064                            return;
065                    }
066    
067                    if (_log.isInfoEnabled()) {
068                            _log.info(
069                                    "Registering default workflow engine " + _workflowEngineName);
070                    }
071    
072                    MessageBusUtil.registerMessageListener(
073                            DestinationNames.WORKFLOW_DEFINITION,
074                            _workflowDefinitionManagerListener);
075    
076                    MessageBusUtil.registerMessageListener(
077                            DestinationNames.WORKFLOW_ENGINE, _workflowEngineManagerListener);
078    
079                    MessageBusUtil.registerMessageListener(
080                            DestinationNames.WORKFLOW_INSTANCE,
081                            _workflowInstanceManagerListener);
082    
083                    MessageBusUtil.registerMessageListener(
084                            DestinationNames.WORKFLOW_LOG, _workflowLogManagerListener);
085    
086                    MessageBusUtil.registerMessageListener(
087                            DestinationNames.WORKFLOW_TASK, _workflowTaskManagerListener);
088            }
089    
090            public void setWorkflowDefinitionManagerListener(
091                    MessageListener workflowDefinitionManagerListener) {
092    
093                    _workflowDefinitionManagerListener = workflowDefinitionManagerListener;
094            }
095    
096            public void setWorkflowEngineManagerListener(
097                    MessageListener workflowEngineManagerListener) {
098    
099                    _workflowEngineManagerListener = workflowEngineManagerListener;
100            }
101    
102            public void setWorkflowEngineName(String workflowEngineName) {
103                    _workflowEngineName = workflowEngineName;
104            }
105    
106            public void setWorkflowInstanceManagerListener(
107                    MessageListener workflowInstanceManagerListener) {
108    
109                    _workflowInstanceManagerListener = workflowInstanceManagerListener;
110            }
111    
112            public void setWorkflowLogManagerListener(
113                    MessageListener workflowLogManagerListener) {
114    
115                    _workflowLogManagerListener = workflowLogManagerListener;
116            }
117    
118            public void setWorkflowTaskManagerListener(
119                    MessageListener workflowTaskManagerListener) {
120    
121                    _workflowTaskManagerListener = workflowTaskManagerListener;
122            }
123    
124            protected boolean isProceed(
125                    String destinationName, MessageListener messageListener) {
126    
127                    if (messageListener.equals(_workflowEngineManagerListener)) {
128                            return false;
129                    }
130                    else {
131                            return true;
132                    }
133            }
134    
135            private static final Log _log = LogFactoryUtil.getLog(
136                    DefaultWorkflowDestinationEventListener.class);
137    
138            private MessageListener _workflowDefinitionManagerListener;
139            private MessageListener _workflowEngineManagerListener;
140            private String _workflowEngineName;
141            private MessageListener _workflowInstanceManagerListener;
142            private MessageListener _workflowLogManagerListener;
143            private MessageListener _workflowTaskManagerListener;
144    
145    }