001
014
015 package com.liferay.portal.kernel.resiliency.spi;
016
017 import com.liferay.portal.kernel.util.CharPool;
018 import com.liferay.portal.kernel.util.GetterUtil;
019 import com.liferay.portal.kernel.util.StringBundler;
020 import com.liferay.portal.kernel.util.StringUtil;
021 import com.liferay.portal.kernel.xml.Document;
022 import com.liferay.portal.kernel.xml.DocumentException;
023 import com.liferay.portal.kernel.xml.Element;
024 import com.liferay.portal.kernel.xml.UnsecureSAXReaderUtil;
025
026 import java.io.Serializable;
027
028 import java.util.Arrays;
029 import java.util.List;
030
031
034 public class SPIConfiguration implements Serializable {
035
036 public static final String JAVA_EXECUTABLE_DEFAULT = "java";
037
038 public static final String JVM_ARGUMENTS_DEFAULT =
039 "-Xmx1024m -XX:PermSize=200m";
040
041 public static final long PING_INTERVAL_DEFAULT = 5000;
042
043 public static final long REGISTER_TIMEOUT_DEFAULT = 10000;
044
045 public static final long SHUTDOWN_TIMEOUT_DEFAULT = 10000;
046
047 public static SPIConfiguration fromXMLString(String xmlString)
048 throws DocumentException {
049
050 Document document = UnsecureSAXReaderUtil.read(xmlString);
051
052 Element rootElement = document.getRootElement();
053
054 String id = rootElement.elementText("id");
055 String javaExecutable = rootElement.elementText("javaExecutable");
056 String jvmArguments = rootElement.elementText("jvmArguments");
057 String spiAgentClassName = rootElement.elementText("spiAgentClassName");
058 int connectorPort = GetterUtil.getIntegerStrict(
059 rootElement.elementText("connectorPort"));
060 String baseDir = rootElement.elementText("baseDir");
061 String[] portletIds = StringUtil.split(
062 rootElement.elementText("portletIds"));
063 String[] servletContextNames = StringUtil.split(
064 rootElement.elementText("servletContextNames"));
065 long pingInterval = GetterUtil.getLongStrict(
066 rootElement.elementText("pingInterval"));
067 long registerTimeout = GetterUtil.getLongStrict(
068 rootElement.elementText("registerTimeout"));
069 long shutdownTimeout = GetterUtil.getLongStrict(
070 rootElement.elementText("shutdownTimeout"));
071 String extraSettings = rootElement.elementText("extraSettings");
072
073 return new SPIConfiguration(
074 id, javaExecutable, jvmArguments, spiAgentClassName, connectorPort,
075 baseDir, portletIds, servletContextNames, pingInterval,
076 registerTimeout, shutdownTimeout, extraSettings);
077 }
078
079 public SPIConfiguration(
080 String spiId, String spiAgentClassName, int connectorPort,
081 String baseDir, String[] portletIds, String[] servletContextNames,
082 String extraSettings) {
083
084 this(
085 spiId, JAVA_EXECUTABLE_DEFAULT, JVM_ARGUMENTS_DEFAULT,
086 spiAgentClassName, connectorPort, baseDir, portletIds,
087 servletContextNames, PING_INTERVAL_DEFAULT,
088 REGISTER_TIMEOUT_DEFAULT, SHUTDOWN_TIMEOUT_DEFAULT, extraSettings);
089 }
090
091 public SPIConfiguration(
092 String spiId, String javaExecutable, String jvmArguments,
093 String spiAgentClassName, int connectorPort, String baseDir,
094 String[] portletIds, String[] servletContextNames, long pingInterval,
095 long registerTimeout, long shutdownTimeout, String extraSettings) {
096
097 _spiId = spiId;
098 _javaExecutable = javaExecutable;
099 _jvmArguments = jvmArguments;
100 _spiAgentClassName = spiAgentClassName;
101 _connectorPort = connectorPort;
102 _baseDir = baseDir;
103 _portletIds = portletIds;
104 _servletContextNames = servletContextNames;
105 _pingInterval = pingInterval;
106 _registerTimeout = registerTimeout;
107 _shutdownTimeout = shutdownTimeout;
108 _extraSettings = extraSettings;
109 }
110
111 public String getBaseDir() {
112 return _baseDir;
113 }
114
115 public int getConnectorPort() {
116 return _connectorPort;
117 }
118
119 public String getExtraSettings() {
120 return _extraSettings;
121 }
122
123 public String getJavaExecutable() {
124 return _javaExecutable;
125 }
126
127 public List<String> getJVMArguments() {
128 return Arrays.asList(StringUtil.split(_jvmArguments, CharPool.SPACE));
129 }
130
131 public long getPingInterval() {
132 return _pingInterval;
133 }
134
135 public String[] getPortletIds() {
136 return _portletIds;
137 }
138
139 public long getRegisterTimeout() {
140 return _registerTimeout;
141 }
142
143 public String[] getServletContextNames() {
144 return _servletContextNames;
145 }
146
147 public long getShutdownTimeout() {
148 return _shutdownTimeout;
149 }
150
151 public String getSPIAgentClassName() {
152 return _spiAgentClassName;
153 }
154
155 public String getSPIId() {
156 return _spiId;
157 }
158
159 @Override
160 public String toString() {
161 StringBundler sb = new StringBundler(25);
162
163 sb.append("{baseDir=");
164 sb.append(_baseDir);
165 sb.append(", connectorPort=");
166 sb.append(_connectorPort);
167 sb.append(", extraSettings=");
168 sb.append(_extraSettings);
169 sb.append(", javaExecutable=");
170 sb.append(_javaExecutable);
171 sb.append(", jvmArguments=");
172 sb.append(_jvmArguments);
173 sb.append(", pingInterval=");
174 sb.append(_pingInterval);
175 sb.append(", portletIds=[");
176 sb.append(StringUtil.merge(_portletIds));
177 sb.append("], registerTimeout=");
178 sb.append(_registerTimeout);
179 sb.append(", servletContextName=[");
180 sb.append(StringUtil.merge(_servletContextNames));
181 sb.append("], shutdownTimeout=");
182 sb.append(_shutdownTimeout);
183 sb.append(", spiAgentClassName=");
184 sb.append(_spiAgentClassName);
185 sb.append(", spiId=");
186 sb.append(_spiId);
187 sb.append("}");
188
189 return sb.toString();
190 }
191
192 public String toXMLString() {
193 com.liferay.portal.kernel.xml.simple.Element element =
194 new com.liferay.portal.kernel.xml.simple.Element(
195 "SPIConfiguration");
196
197 element.addElement("id", _spiId);
198 element.addElement("javaExecutable", _javaExecutable);
199 element.addElement("jvmArguments", _jvmArguments);
200 element.addElement("spiAgentClassName", _spiAgentClassName);
201 element.addElement("connectorPort", _connectorPort);
202 element.addElement("baseDir", _baseDir);
203 element.addElement("portletIds", StringUtil.merge(_portletIds));
204 element.addElement(
205 "servletContextNames", StringUtil.merge(_servletContextNames));
206 element.addElement("pingInterval", _pingInterval);
207 element.addElement("registerTimeout", _registerTimeout);
208 element.addElement("shutdownTimeout", _shutdownTimeout);
209 element.addElement("extraSettings", _extraSettings);
210
211 return element.toXMLString();
212 }
213
214 private static final long serialVersionUID = 1L;
215
216 private String _baseDir;
217 private int _connectorPort;
218 private String _extraSettings;
219 private String _javaExecutable;
220 private String _jvmArguments;
221 private long _pingInterval;
222 private String[] _portletIds;
223 private long _registerTimeout;
224 private String[] _servletContextNames;
225 private long _shutdownTimeout;
226 private String _spiAgentClassName;
227 private String _spiId;
228
229 }