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.Arrays;
024 import java.util.Collection;
025 import java.util.HashSet;
026 import java.util.Set;
027
028
031 public class ClusterRequest implements Serializable {
032
033 public static ClusterRequest createClusterRequest(
034 ClusterMessageType clusterMessageType,
035 ClusterNode originatingClusterNode) {
036
037 ClusterRequest clusterRequest = new ClusterRequest();
038
039 clusterRequest.setClusterMessageType(clusterMessageType);
040 clusterRequest.setMulticast(true);
041 clusterRequest.setOriginatingClusterNode(originatingClusterNode);
042 clusterRequest.setSkipLocal(false);
043 clusterRequest.setUuid(PortalUUIDUtil.generate());
044
045 return clusterRequest;
046 }
047
048 public static ClusterRequest createMulticastRequest(
049 MethodHandler methodHandler) {
050
051 return createMulticastRequest(methodHandler, false);
052 }
053
054 public static ClusterRequest createMulticastRequest(
055 MethodHandler methodHandler, boolean skipLocal) {
056
057 ClusterRequest clusterRequest = new ClusterRequest();
058
059 clusterRequest.setClusterMessageType(ClusterMessageType.EXECUTE);
060 clusterRequest.setMethodHandler(methodHandler);
061 clusterRequest.setMulticast(true);
062 clusterRequest.setSkipLocal(skipLocal);
063 clusterRequest.setUuid(PortalUUIDUtil.generate());
064
065 return clusterRequest;
066 }
067
068 public static ClusterRequest createUnicastRequest(
069 MethodHandler methodHandler, String... targetClusterNodeIds) {
070
071 ClusterRequest clusterRequest = new ClusterRequest();
072
073 clusterRequest.addTargetClusterNodeIds(targetClusterNodeIds);
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 void addTargetClusterNodeIds(String... targetClusterNodeIds) {
084 if (_targetClusterNodeIds == null) {
085 _targetClusterNodeIds = new HashSet<String>();
086 }
087
088 _targetClusterNodeIds.addAll(Arrays.asList(targetClusterNodeIds));
089 }
090
091 public ClusterMessageType getClusterMessageType() {
092 return _clusterMessageType;
093 }
094
095 public MethodHandler getMethodHandler() {
096 return _methodHandler;
097 }
098
099 public ClusterNode getOriginatingClusterNode() {
100 return _originatingClusterNode;
101 }
102
103 public String getServletContextName() {
104 return _servletContextName;
105 }
106
107 public Collection<String> getTargetClusterNodeIds() {
108 return _targetClusterNodeIds;
109 }
110
111 public String getUuid() {
112 return _uuid;
113 }
114
115 public boolean isFireAndForget() {
116 return _fireAndForget;
117 }
118
119 public boolean isMulticast() {
120 return _multicast;
121 }
122
123 public boolean isSkipLocal() {
124 return _skipLocal;
125 }
126
127 public void setClusterMessageType(ClusterMessageType clusterMessageType) {
128 _clusterMessageType = clusterMessageType;
129 }
130
131 public void setFireAndForget(boolean fireAndForget) {
132 _fireAndForget = fireAndForget;
133 }
134
135 public void setMethodHandler(MethodHandler methodHandler) {
136 _methodHandler = methodHandler;
137 }
138
139 public void setMulticast(boolean multicast) {
140 _multicast = multicast;
141 }
142
143 public void setOriginatingClusterNode(ClusterNode originatingClusterNode) {
144 _originatingClusterNode = originatingClusterNode;
145 }
146
147 public void setServletContextName(String servletContextName) {
148 _servletContextName = servletContextName;
149 }
150
151 public void setSkipLocal(boolean skipLocal) {
152 _skipLocal = skipLocal;
153 }
154
155 public void setUuid(String uuid) {
156 _uuid = uuid;
157 }
158
159 public String toString() {
160 StringBundler sb = new StringBundler(13);
161
162 sb.append("{clusterMessageType=");
163 sb.append(_clusterMessageType);
164 sb.append(", multicast=");
165 sb.append(_multicast);
166 sb.append(", servletContextName=");
167 sb.append(_servletContextName);
168 sb.append(", skipLocal=");
169 sb.append(_skipLocal);
170 sb.append(", uuid=");
171 sb.append(_uuid);
172
173 if (_clusterMessageType.equals(ClusterMessageType.NOTIFY) ||
174 _clusterMessageType.equals(ClusterMessageType.UPDATE)) {
175
176 sb.append(", originatingClusterNode=");
177 sb.append(_originatingClusterNode);
178 }
179 else {
180 sb.append(", methodHandler=");
181 sb.append(_methodHandler);
182 }
183
184 sb.append("}");
185
186 return sb.toString();
187 }
188
189 private ClusterRequest() {
190 }
191
192 private ClusterMessageType _clusterMessageType;
193 private boolean _fireAndForget;
194 private MethodHandler _methodHandler;
195 private boolean _multicast;
196 private ClusterNode _originatingClusterNode;
197 private String _servletContextName;
198 private boolean _skipLocal;
199 private Set<String> _targetClusterNodeIds;
200 private String _uuid;
201
202 }