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 createClusterNotifyRequest(
033 ClusterNode originatingClusterNode) {
034
035 ClusterRequest clusterRequest = new ClusterRequest();
036
037 clusterRequest.setClusterMessageType(ClusterMessageType.NOTIFY);
038 clusterRequest.setMulticast(true);
039 clusterRequest.setOriginatingClusterNode(originatingClusterNode);
040 clusterRequest.setParallelized(true);
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 isParallelized() {
163 return _parallelized;
164 }
165
166 public boolean isSkipLocal() {
167 return _skipLocal;
168 }
169
170 public void setBeanIdentifier(String beanIdentifier) {
171 _beanIdentifier = beanIdentifier;
172 }
173
174 public void setClusterMessageType(ClusterMessageType clusterMessageType) {
175 _clusterMessageType = clusterMessageType;
176 }
177
178 public void setFireAndForget(boolean fireAndForget) {
179 _fireAndForget = fireAndForget;
180 }
181
182 public void setMethodHandler(MethodHandler methodHandler) {
183 _methodHandler = methodHandler;
184 }
185
186 public void setMulticast(boolean multicast) {
187 _multicast = multicast;
188 }
189
190 public void setOriginatingClusterNode(ClusterNode originatingClusterNode) {
191 _originatingClusterNode = originatingClusterNode;
192 }
193
194 public void setParallelized(boolean parallelized) {
195 _parallelized = parallelized;
196 }
197
198 public void setServletContextName(String servletContextName) {
199 _servletContextName = servletContextName;
200 }
201
202 public void setSkipLocal(boolean skipLocal) {
203 _skipLocal = skipLocal;
204 }
205
206 public void setUuid(String uuid) {
207 _uuid = uuid;
208 }
209
210 @Override
211 public String toString() {
212 StringBundler sb = new StringBundler(17);
213
214 sb.append("{clusterMessageType=");
215 sb.append(_clusterMessageType);
216 sb.append(", methodHandler=");
217 sb.append(_methodHandler);
218 sb.append(", multicast=");
219 sb.append(_multicast);
220
221 if (_clusterMessageType.equals(ClusterMessageType.NOTIFY)) {
222 sb.append(", originatingClusterNode=");
223 sb.append(_originatingClusterNode);
224 }
225
226 sb.append(", servletContextName=");
227 sb.append(_servletContextName);
228 sb.append(", parallelized=");
229 sb.append(_parallelized);
230 sb.append(", skipLocal=");
231 sb.append(_skipLocal);
232 sb.append(", uuid=");
233 sb.append(_uuid);
234 sb.append("}");
235
236 return sb.toString();
237 }
238
239 private ClusterRequest() {
240 }
241
242 private String _beanIdentifier;
243 private ClusterMessageType _clusterMessageType;
244 private boolean _fireAndForget;
245 private MethodHandler _methodHandler;
246 private boolean _multicast;
247 private ClusterNode _originatingClusterNode;
248 private boolean _parallelized;
249 private String _servletContextName;
250 private boolean _skipLocal;
251 private Set<Address> _targetClusterNodeAddresses;
252 private Set<String> _targetClusterNodeIds;
253 private String _uuid;
254
255 }