| PollerMessageListener.java |
1 /**
2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23 package com.liferay.portal.poller.messaging;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.messaging.Message;
28 import com.liferay.portal.kernel.messaging.MessageBusUtil;
29 import com.liferay.portal.kernel.messaging.MessageListener;
30 import com.liferay.portal.kernel.poller.PollerException;
31 import com.liferay.portal.kernel.poller.PollerProcessor;
32 import com.liferay.portal.kernel.poller.PollerRequest;
33 import com.liferay.portal.kernel.poller.PollerResponse;
34 import com.liferay.portal.kernel.util.Validator;
35 import com.liferay.portal.poller.PollerProcessorUtil;
36
37 /**
38 * <a href="PollerMessageListener.java.html"><b><i>View Source</i></b></a>
39 *
40 * @author Michael C. Han
41 */
42 public class PollerMessageListener implements MessageListener {
43
44 public void receive(Message message) {
45 PollerResponse pollerResponse = null;
46
47 try {
48 PollerRequest pollerRequest = (PollerRequest)message.getPayload();
49
50 String portletId = pollerRequest.getPortletId();
51
52 PollerProcessor pollerProcessor =
53 PollerProcessorUtil.getPollerProcessor(portletId);
54
55 if (pollerRequest.isReceiveRequest()) {
56 pollerResponse = new PollerResponse(
57 portletId, pollerRequest.getChunkId());
58
59 try {
60 pollerProcessor.receive(pollerRequest, pollerResponse);
61 }
62 catch (PollerException pe) {
63 _log.error(
64 "Unable to receive poller request " + pollerRequest,
65 pe);
66
67 pollerResponse.setParameter(
68 "pollerException", pe.getMessage());
69 }
70 }
71 else {
72 try {
73 pollerProcessor.send(pollerRequest);
74 }
75 catch (PollerException pe) {
76 _log.error(
77 "Unable to send poller request " + pollerRequest,
78 pe);
79 }
80 }
81 }
82 finally {
83 String responseDestinationName =
84 message.getResponseDestinationName();
85
86 if (Validator.isNotNull(responseDestinationName)) {
87 Message responseMessage = MessageBusUtil.createResponseMessage(
88 message);
89
90 responseMessage.setPayload(pollerResponse);
91
92 MessageBusUtil.sendMessage(
93 responseDestinationName, responseMessage);
94 }
95 }
96 }
97
98 private static Log _log =
99 LogFactoryUtil.getLog(PollerMessageListener.class);
100
101 }