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