1
14
15 package com.liferay.portal.kernel.cluster;
16
17 import com.liferay.portal.kernel.util.MethodHandler;
18 import com.liferay.portal.kernel.util.StringBundler;
19 import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
20
21 import java.io.Serializable;
22
23 import java.util.Arrays;
24 import java.util.Collection;
25 import java.util.HashSet;
26 import java.util.Set;
27
28
33 public class ClusterRequest implements Serializable {
34
35 public static ClusterRequest createClusterRequest(
36 ClusterMessageType clusterMessageType,
37 ClusterNode originatingClusterNode) {
38
39 ClusterRequest clusterRequest = new ClusterRequest();
40
41 clusterRequest.setClusterMessageType(clusterMessageType);
42 clusterRequest.setMulticast(true);
43 clusterRequest.setOriginatingClusterNode(originatingClusterNode);
44 clusterRequest.setSkipLocal(false);
45 clusterRequest.setUuid(PortalUUIDUtil.generate());
46
47 return clusterRequest;
48 }
49
50 public static ClusterRequest createMulticastRequest(
51 MethodHandler methodHandler) {
52
53 return createMulticastRequest(methodHandler, false);
54 }
55
56 public static ClusterRequest createMulticastRequest(
57 MethodHandler methodHandler, boolean skipLocal) {
58
59 ClusterRequest clusterRequest = new ClusterRequest();
60
61 clusterRequest.setClusterMessageType(ClusterMessageType.EXECUTE);
62 clusterRequest.setMethodHandler(methodHandler);
63 clusterRequest.setMulticast(true);
64 clusterRequest.setSkipLocal(skipLocal);
65 clusterRequest.setUuid(PortalUUIDUtil.generate());
66
67 return clusterRequest;
68 }
69
70 public static ClusterRequest createUnicastRequest(
71 MethodHandler methodHandler, String... targetClusterNodeIds) {
72
73 ClusterRequest clusterRequest = new ClusterRequest();
74
75 clusterRequest.addTargetClusterNodeIds(targetClusterNodeIds);
76 clusterRequest.setClusterMessageType(ClusterMessageType.EXECUTE);
77 clusterRequest.setMethodHandler(methodHandler);
78 clusterRequest.setMulticast(false);
79 clusterRequest.setSkipLocal(false);
80 clusterRequest.setUuid(PortalUUIDUtil.generate());
81
82 return clusterRequest;
83 }
84
85 public void addTargetClusterNodeIds(String... targetClusterNodeIds) {
86 if (_targetClusterNodeIds == null) {
87 _targetClusterNodeIds = new HashSet<String>();
88 }
89
90 _targetClusterNodeIds.addAll(Arrays.asList(targetClusterNodeIds));
91 }
92
93 public ClusterMessageType getClusterMessageType() {
94 return _clusterMessageType;
95 }
96
97 public MethodHandler getMethodHandler() {
98 return _methodHandler;
99 }
100
101 public ClusterNode getOriginatingClusterNode() {
102 return _originatingClusterNode;
103 }
104
105 public String getServletContextName() {
106 return _servletContextName;
107 }
108
109 public Collection<String> getTargetClusterNodeIds() {
110 return _targetClusterNodeIds;
111 }
112
113 public String getUuid() {
114 return _uuid;
115 }
116
117 public boolean isFireAndForget() {
118 return _fireAndForget;
119 }
120
121 public boolean isMulticast() {
122 return _multicast;
123 }
124
125 public boolean isSkipLocal() {
126 return _skipLocal;
127 }
128
129 public void setClusterMessageType(ClusterMessageType clusterMessageType) {
130 _clusterMessageType = clusterMessageType;
131 }
132
133 public void setFireAndForget(boolean fireAndForget) {
134 _fireAndForget = fireAndForget;
135 }
136
137 public void setMethodHandler(MethodHandler methodHandler) {
138 _methodHandler = methodHandler;
139 }
140
141 public void setMulticast(boolean multicast) {
142 _multicast = multicast;
143 }
144
145 public void setOriginatingClusterNode(ClusterNode originatingClusterNode) {
146 _originatingClusterNode = originatingClusterNode;
147 }
148
149 public void setServletContextName(String servletContextName) {
150 _servletContextName = servletContextName;
151 }
152
153 public void setSkipLocal(boolean skipLocal) {
154 _skipLocal = skipLocal;
155 }
156
157 public void setUuid(String uuid) {
158 _uuid = uuid;
159 }
160
161 public String toString() {
162 StringBundler sb = new StringBundler(13);
163
164 sb.append("{clusterMessageType=");
165 sb.append(_clusterMessageType);
166 sb.append(", multicast=");
167 sb.append(_multicast);
168 sb.append(", servletContextName=");
169 sb.append(_servletContextName);
170 sb.append(", skipLocal=");
171 sb.append(_skipLocal);
172 sb.append(", uuid=");
173 sb.append(_uuid);
174
175 if (_clusterMessageType.equals(ClusterMessageType.NOTIFY) ||
176 _clusterMessageType.equals(ClusterMessageType.UPDATE)) {
177
178 sb.append(", originatingClusterNode=");
179 sb.append(_originatingClusterNode);
180 }
181 else {
182 sb.append(", methodHandler=");
183 sb.append(_methodHandler);
184 }
185
186 sb.append("}");
187
188 return sb.toString();
189 }
190
191 private ClusterRequest() {
192 }
193
194 private ClusterMessageType _clusterMessageType;
195 private boolean _fireAndForget;
196 private MethodHandler _methodHandler;
197 private boolean _multicast;
198 private ClusterNode _originatingClusterNode;
199 private String _servletContextName;
200 private boolean _skipLocal;
201 private Set<String> _targetClusterNodeIds;
202 private String _uuid;
203
204 }