1
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
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 }