1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
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  /**
29   * <a href="ClusterRequest.java.html"><b><i>View Source</i></b></a>
30   *
31   * @author Tina Tian
32   */
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 }