1
22
23 package com.liferay.portal.kernel.messaging.proxy;
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.MessageBus;
29 import com.liferay.portal.kernel.messaging.MessageBusUtil;
30 import com.liferay.portal.kernel.messaging.MessageListener;
31 import com.liferay.portal.kernel.util.Validator;
32
33
40 public class ProxyMessageListener implements MessageListener {
41
42 public void receive(Message message) {
43 ProxyResponse proxyResponse = new ProxyResponse();
44
45 try {
46 Object payload = message.getPayload();
47
48 if (payload == null) {
49 throw new Exception("Payload is null");
50 }
51 else if (!ProxyRequest.class.isAssignableFrom(payload.getClass())) {
52 throw new Exception(
53 "Payload " + payload.getClass() + " is not of type " +
54 ProxyRequest.class.getName());
55 }
56 else {
57 ProxyRequest proxyRequest = (ProxyRequest)payload;
58
59 Object result = proxyRequest.execute(_manager);
60
61 proxyResponse.setResult(result);
62 }
63 }
64 catch (Exception e) {
65 if (_log.isDebugEnabled()) {
66 _log.debug(e, e);
67 }
68
69 proxyResponse.setException(e);
70 }
71 finally {
72 String responseDestinationName =
73 message.getResponseDestinationName();
74
75 if (Validator.isNotNull(responseDestinationName)) {
76 Message responseMessage = MessageBusUtil.createResponseMessage(
77 message);
78
79 responseMessage.setPayload(proxyResponse);
80
81 _messageBus.sendMessage(
82 responseDestinationName, responseMessage);
83 }
84 }
85 }
86
87 public void setManager(Object manager) {
88 _manager = manager;
89 }
90
91 public void setMessageBus(MessageBus messageBus) {
92 _messageBus = messageBus;
93 }
94
95 private static Log _log = LogFactoryUtil.getLog(ProxyMessageListener.class);
96
97 private Object _manager;
98 private MessageBus _messageBus;
99
100 }