001
014
015 package com.liferay.portal.kernel.poller;
016
017 import com.liferay.portal.kernel.json.JSONArray;
018 import com.liferay.portal.kernel.json.JSONFactoryUtil;
019 import com.liferay.portal.kernel.json.JSONObject;
020 import com.liferay.portal.kernel.messaging.Message;
021 import com.liferay.portal.kernel.messaging.MessageBusUtil;
022 import com.liferay.portal.kernel.util.Validator;
023
024 import java.util.HashMap;
025 import java.util.Map;
026
027
030 public class DefaultPollerResponse implements PollerResponse {
031
032 public DefaultPollerResponse(
033 PollerHeader pollerHeader, String portletId, String chunkId) {
034
035 _pollerHeader = pollerHeader;
036 _portletId = portletId;
037 _chunkId = chunkId;
038 }
039
040 public synchronized void close() {
041 if (Validator.isNotNull(_responseMessage)) {
042 MessageBusUtil.sendMessage(
043 _responseMessage.getDestinationName(), _responseMessage);
044
045 _responseMessage = null;
046 }
047 }
048
049 public void createResponseMessage(Message message) {
050 String responseDestinationName = message.getResponseDestinationName();
051
052 if (Validator.isNull(responseDestinationName)) {
053 return;
054 }
055
056 _responseMessage = MessageBusUtil.createResponseMessage(message);
057
058 _responseMessage.setPayload(this);
059 }
060
061 public PollerHeader getPollerHeader() {
062 return _pollerHeader;
063 }
064
065 public String getPortletId() {
066 return _portletId;
067 }
068
069 public boolean isEmpty() {
070 return _parameterMap.isEmpty();
071 }
072
073 public synchronized void setParameter(String name, JSONArray value)
074 throws PollerResponseClosedException {
075
076 if (_responseMessage == null) {
077 throw new PollerResponseClosedException();
078 }
079
080 _parameterMap.put(name, value);
081 }
082
083 public synchronized void setParameter(String name, JSONObject value)
084 throws PollerResponseClosedException {
085
086 if (_responseMessage == null) {
087 throw new PollerResponseClosedException();
088 }
089
090 _parameterMap.put(name, value);
091 }
092
093 public void setParameter(String name, String value)
094 throws PollerResponseClosedException {
095
096 synchronized (this) {
097 if (_responseMessage == null) {
098 throw new PollerResponseClosedException();
099 }
100
101 _parameterMap.put(name, value);
102 }
103 }
104
105 public JSONObject toJSONObject() {
106 JSONObject pollerResponseJSONObject =
107 JSONFactoryUtil.createJSONObject();
108
109 pollerResponseJSONObject.put("portletId", _portletId);
110
111 if (Validator.isNotNull(_chunkId)) {
112 pollerResponseJSONObject.put("chunkId", _chunkId);
113 }
114
115 JSONObject dataJSONObject = JSONFactoryUtil.createJSONObject();
116
117 for (Map.Entry<String, Object> entry : _parameterMap.entrySet()) {
118 String name = entry.getKey();
119 Object value = entry.getValue();
120
121 if (value instanceof JSONArray) {
122 dataJSONObject.put(name, (JSONArray)value);
123 }
124 else if (value instanceof JSONObject) {
125 dataJSONObject.put(name, (JSONObject)value);
126 }
127 else {
128 dataJSONObject.put(name, String.valueOf(value));
129 }
130 }
131
132 pollerResponseJSONObject.put("data", dataJSONObject);
133
134 return pollerResponseJSONObject;
135 }
136
137 private String _chunkId;
138 private Map<String, Object> _parameterMap = new HashMap<String, Object>();
139 private PollerHeader _pollerHeader;
140 private String _portletId;
141 private Message _responseMessage;
142
143 }