1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.kernel.workflow.messaging;
16  
17  import com.liferay.portal.kernel.log.Log;
18  import com.liferay.portal.kernel.log.LogFactoryUtil;
19  import com.liferay.portal.kernel.messaging.BaseDestinationEventListener;
20  import com.liferay.portal.kernel.messaging.DestinationNames;
21  import com.liferay.portal.kernel.messaging.MessageBusUtil;
22  import com.liferay.portal.kernel.messaging.MessageListener;
23  
24  /**
25   * <a href="DefaultWorkflowDestinationEventListener.java.html"><b><i>View Source
26   * </i></b></a>
27   *
28   * @author Michael C. Han
29   */
30  public class DefaultWorkflowDestinationEventListener
31      extends BaseDestinationEventListener {
32  
33      public void messageListenerRegistered(
34          String destinationName, MessageListener messageListener) {
35  
36          if (_log.isInfoEnabled()) {
37              _log.info(
38                  "Unregistering default workflow engine " + _workflowEngineName);
39          }
40  
41          if (!isProceed(destinationName, messageListener)) {
42              return;
43          }
44  
45          MessageBusUtil.unregisterMessageListener(
46              DestinationNames.WORKFLOW_DEFINITION,
47              _workflowDefinitionManagerListener);
48  
49          MessageBusUtil.unregisterMessageListener(
50              DestinationNames.WORKFLOW_ENGINE, _workflowEngineManagerListener);
51  
52          MessageBusUtil.unregisterMessageListener(
53              DestinationNames.WORKFLOW_INSTANCE,
54              _workflowInstanceManagerListener);
55  
56          MessageBusUtil.unregisterMessageListener(
57              DestinationNames.WORKFLOW_LOG, _workflowLogManagerListener);
58  
59          MessageBusUtil.unregisterMessageListener(
60              DestinationNames.WORKFLOW_TASK, _workflowTaskManagerListener);
61      }
62  
63      public void messageListenerUnregistered(
64          String destinationName, MessageListener messageListener) {
65  
66          if (!isProceed(destinationName, messageListener)) {
67              return;
68          }
69  
70          if (_log.isInfoEnabled()) {
71              _log.info(
72                  "Registering default workflow engine " + _workflowEngineName);
73          }
74  
75          MessageBusUtil.registerMessageListener(
76              DestinationNames.WORKFLOW_DEFINITION,
77              _workflowDefinitionManagerListener);
78  
79          MessageBusUtil.registerMessageListener(
80              DestinationNames.WORKFLOW_ENGINE, _workflowEngineManagerListener);
81  
82          MessageBusUtil.registerMessageListener(
83              DestinationNames.WORKFLOW_INSTANCE,
84              _workflowInstanceManagerListener);
85  
86          MessageBusUtil.registerMessageListener(
87              DestinationNames.WORKFLOW_LOG, _workflowLogManagerListener);
88  
89          MessageBusUtil.registerMessageListener(
90              DestinationNames.WORKFLOW_TASK, _workflowTaskManagerListener);
91      }
92  
93      public void setWorkflowDefinitionManagerListener(
94          MessageListener workflowDefinitionManagerListener) {
95  
96          _workflowDefinitionManagerListener = workflowDefinitionManagerListener;
97      }
98  
99      public void setWorkflowEngineManagerListener(
100         MessageListener workflowEngineManagerListener) {
101 
102         _workflowEngineManagerListener = workflowEngineManagerListener;
103     }
104 
105     public void setWorkflowEngineName(String workflowEngineName) {
106         _workflowEngineName = workflowEngineName;
107     }
108 
109     public void setWorkflowInstanceManagerListener(
110         MessageListener workflowInstanceManagerListener) {
111 
112         _workflowInstanceManagerListener = workflowInstanceManagerListener;
113     }
114 
115     public void setWorkflowLogManagerListener(
116         MessageListener workflowLogManagerListener) {
117 
118         _workflowLogManagerListener = workflowLogManagerListener;
119     }
120 
121     public void setWorkflowTaskManagerListener(
122         MessageListener workflowTaskManagerListener) {
123 
124         _workflowTaskManagerListener = workflowTaskManagerListener;
125     }
126 
127     protected boolean isProceed(
128         String destinationName, MessageListener messageListener) {
129 
130         if (messageListener.equals(_workflowEngineManagerListener)) {
131             return false;
132         }
133         else {
134             return true;
135         }
136     }
137 
138     private static final Log _log = LogFactoryUtil.getLog(
139         DefaultWorkflowDestinationEventListener.class);
140 
141     private MessageListener _workflowDefinitionManagerListener;
142     private MessageListener _workflowEngineManagerListener;
143     private String _workflowEngineName;
144     private MessageListener _workflowInstanceManagerListener;
145     private MessageListener _workflowLogManagerListener;
146     private MessageListener _workflowTaskManagerListener;
147 
148 }