001
014
015 package com.liferay.portal.kernel.cluster;
016
017 import com.liferay.portal.kernel.util.MethodHandler;
018 import com.liferay.portal.kernel.util.StringBundler;
019 import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
020
021 import java.io.Serializable;
022
023 import java.util.Collection;
024 import java.util.HashSet;
025 import java.util.Set;
026
027
030 public class ClusterRequest implements Serializable {
031
032 public static ClusterRequest createClusterRequest(
033 ClusterMessageType clusterMessageType,
034 ClusterNode originatingClusterNode) {
035
036 ClusterRequest clusterRequest = new ClusterRequest();
037
038 clusterRequest.setClusterMessageType(clusterMessageType);
039 clusterRequest.setMulticast(true);
040 clusterRequest.setOriginatingClusterNode(originatingClusterNode);
041 clusterRequest.setSkipLocal(true);
042 clusterRequest.setUuid(PortalUUIDUtil.generate());
043
044 return clusterRequest;
045 }
046
047 public static ClusterRequest createMulticastRequest(
048 MethodHandler methodHandler) {
049
050 return createMulticastRequest(methodHandler, false);
051 }
052
053 public static ClusterRequest createMulticastRequest(
054 MethodHandler methodHandler, boolean skipLocal) {
055
056 ClusterRequest clusterRequest = new ClusterRequest();
057
058 clusterRequest.setClusterMessageType(ClusterMessageType.EXECUTE);
059 clusterRequest.setMethodHandler(methodHandler);
060 clusterRequest.setMulticast(true);
061 clusterRequest.setSkipLocal(skipLocal);
062 clusterRequest.setUuid(PortalUUIDUtil.generate());
063
064 return clusterRequest;
065 }
066
067 public static ClusterRequest createUnicastRequest(
068 MethodHandler methodHandler, Address... targetClusterNodeAddresses) {
069
070 ClusterRequest clusterRequest = new ClusterRequest();
071
072 clusterRequest.addTargetClusterNodeAddresses(
073 targetClusterNodeAddresses);
074 clusterRequest.setClusterMessageType(ClusterMessageType.EXECUTE);
075 clusterRequest.setMethodHandler(methodHandler);
076 clusterRequest.setMulticast(false);
077 clusterRequest.setSkipLocal(false);
078 clusterRequest.setUuid(PortalUUIDUtil.generate());
079
080 return clusterRequest;
081 }
082
083 public static ClusterRequest createUnicastRequest(
084 MethodHandler methodHandler, String... targetClusterNodeIds) {
085
086 ClusterRequest clusterRequest = new ClusterRequest();
087
088 clusterRequest.addTargetClusterNodeIds(targetClusterNodeIds);
089 clusterRequest.setClusterMessageType(ClusterMessageType.EXECUTE);
090 clusterRequest.setMethodHandler(methodHandler);
091 clusterRequest.setMulticast(false);
092 clusterRequest.setSkipLocal(false);
093 clusterRequest.setUuid(PortalUUIDUtil.generate());
094
095 return clusterRequest;
096 }
097
098 public void addTargetClusterNodeAddresses(
099 Address... targetClusterNodeAddresses) {
100
101 if (_targetClusterNodeAddresses == null) {
102 _targetClusterNodeAddresses = new HashSet<Address>(
103 targetClusterNodeAddresses.length);
104 }
105
106 for (Address targetClusterNodeAddress : targetClusterNodeAddresses) {
107 _targetClusterNodeAddresses.add(targetClusterNodeAddress);
108 }
109 }
110
111 public void addTargetClusterNodeIds(String... targetClusterNodeIds) {
112 if (_targetClusterNodeIds == null) {
113 _targetClusterNodeIds = new HashSet<String>(
114 targetClusterNodeIds.length);
115 }
116
117 for (String targetClusterNodeId : targetClusterNodeIds) {
118 _targetClusterNodeIds.add(targetClusterNodeId);
119 }
120 }
121
122 public String getBeanIdentifier() {
123 return _beanIdentifier;
124 }
125
126 public ClusterMessageType getClusterMessageType() {
127 return _clusterMessageType;
128 }
129
130 public MethodHandler getMethodHandler() {
131 return _methodHandler;
132 }
133
134 public ClusterNode getOriginatingClusterNode() {
135 return _originatingClusterNode;
136 }
137
138 public String getServletContextName() {
139 return _servletContextName;
140 }
141
142 public Collection<Address> getTargetClusterNodeAddresses() {
143 return _targetClusterNodeAddresses;
144 }
145
146 public Collection<String> getTargetClusterNodeIds() {
147 return _targetClusterNodeIds;
148 }
149
150 public String getUuid() {
151 return _uuid;
152 }
153
154 public boolean isFireAndForget() {
155 return _fireAndForget;
156 }
157
158 public boolean isMulticast() {
159 return _multicast;
160 }
161
162 public boolean isSkipLocal() {
163 return _skipLocal;
164 }
165
166 public void setBeanIdentifier(String beanIdentifier) {
167 _beanIdentifier = beanIdentifier;
168 }
169
170 public void setClusterMessageType(ClusterMessageType clusterMessageType) {
171 _clusterMessageType = clusterMessageType;
172 }
173
174 public void setFireAndForget(boolean fireAndForget) {
175 _fireAndForget = fireAndForget;
176 }
177
178 public void setMethodHandler(MethodHandler methodHandler) {
179 _methodHandler = methodHandler;
180 }
181
182 public void setMulticast(boolean multicast) {
183 _multicast = multicast;
184 }
185
186 public void setOriginatingClusterNode(ClusterNode originatingClusterNode) {
187 _originatingClusterNode = originatingClusterNode;
188 }
189
190 public void setServletContextName(String servletContextName) {
191 _servletContextName = servletContextName;
192 }
193
194 public void setSkipLocal(boolean skipLocal) {
195 _skipLocal = skipLocal;
196 }
197
198 public void setUuid(String uuid) {
199 _uuid = uuid;
200 }
201
202 @Override
203 public String toString() {
204 StringBundler sb = new StringBundler(13);
205
206 sb.append("{clusterMessageType=");
207 sb.append(_clusterMessageType);
208
209 boolean clusterMessageTypeNotifyOrUpdate = false;
210
211 if (_clusterMessageType.equals(ClusterMessageType.NOTIFY) ||
212 _clusterMessageType.equals(ClusterMessageType.UPDATE)) {
213
214 clusterMessageTypeNotifyOrUpdate = true;
215 }
216
217 if (!clusterMessageTypeNotifyOrUpdate) {
218 sb.append(", methodHandler=");
219 sb.append(_methodHandler);
220 }
221
222 sb.append(", multicast=");
223 sb.append(_multicast);
224
225 if (clusterMessageTypeNotifyOrUpdate) {
226 sb.append(", originatingClusterNode=");
227 sb.append(_originatingClusterNode);
228 }
229
230 sb.append(", servletContextName=");
231 sb.append(_servletContextName);
232 sb.append(", skipLocal=");
233 sb.append(_skipLocal);
234 sb.append(", uuid=");
235 sb.append(_uuid);
236 sb.append("}");
237
238 return sb.toString();
239 }
240
241 private ClusterRequest() {
242 }
243
244 private String _beanIdentifier;
245 private ClusterMessageType _clusterMessageType;
246 private boolean _fireAndForget;
247 private MethodHandler _methodHandler;
248 private boolean _multicast;
249 private ClusterNode _originatingClusterNode;
250 private String _servletContextName;
251 private boolean _skipLocal;
252 private Set<Address> _targetClusterNodeAddresses;
253 private Set<String> _targetClusterNodeIds;
254 private String _uuid;
255
256 }