[infinispan-commits] Infinispan SVN: r2258 - in trunk: server/core/src/main/scala/org/infinispan/server/core and 1 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Fri Aug 20 05:15:41 EDT 2010
Author: galder.zamarreno at jboss.com
Date: 2010-08-20 05:15:41 -0400 (Fri, 20 Aug 2010)
New Revision: 2258
Modified:
trunk/core/src/main/java/org/infinispan/util/TypedProperties.java
trunk/server/core/src/main/scala/org/infinispan/server/core/AbstractProtocolServer.scala
trunk/server/core/src/test/scala/org/infinispan/server/core/AbstractProtocolServerTest.scala
Log:
[ISPN-612] (Allow substitution of Infinispan server properties) Done.
Modified: trunk/core/src/main/java/org/infinispan/util/TypedProperties.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/util/TypedProperties.java 2010-08-20 09:15:07 UTC (rev 2257)
+++ trunk/core/src/main/java/org/infinispan/util/TypedProperties.java 2010-08-20 09:15:41 UTC (rev 2258)
@@ -3,6 +3,7 @@
import org.infinispan.config.TypedPropertiesAdapter;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
+import org.jboss.util.StringPropertyReplacer;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -55,11 +56,18 @@
}
public int getIntProperty(String key, int defaultValue) {
+ return getIntProperty(key, defaultValue, false);
+ }
+
+ public int getIntProperty(String key, int defaultValue, boolean doStringReplace) {
String value = getProperty(key);
if (value == null) return defaultValue;
value = value.trim();
if (value.length() == 0) return defaultValue;
+ if (doStringReplace)
+ value = StringPropertyReplacer.replaceProperties(value);
+
try {
return Integer.parseInt(value);
}
@@ -70,11 +78,18 @@
}
public long getLongProperty(String key, long defaultValue) {
+ return getLongProperty(key, defaultValue, false);
+ }
+
+ public long getLongProperty(String key, long defaultValue, boolean doStringReplace) {
String value = getProperty(key);
if (value == null) return defaultValue;
value = value.trim();
if (value.length() == 0) return defaultValue;
+ if (doStringReplace)
+ value = StringPropertyReplacer.replaceProperties(value);
+
try {
return Long.parseLong(value);
}
@@ -85,11 +100,18 @@
}
public boolean getBooleanProperty(String key, boolean defaultValue) {
+ return getBooleanProperty(key, defaultValue, false);
+ }
+
+ public boolean getBooleanProperty(String key, boolean defaultValue, boolean doStringReplace) {
String value = getProperty(key);
if (value == null) return defaultValue;
value = value.trim();
if (value.length() == 0) return defaultValue;
+ if (doStringReplace)
+ value = StringPropertyReplacer.replaceProperties(value);
+
try {
return Boolean.parseBoolean(value);
}
@@ -98,4 +120,20 @@
return defaultValue;
}
}
+
+ /**
+ * Get the property associated with the key, optionally applying string property replacement as defined in
+ * {@link StringPropertyReplacer#replaceProperties} to the result.
+ *
+ * @param key the hashtable key.
+ * @param defaultValue a default value.
+ * @param doStringReplace boolean indicating whether to apply string property replacement
+ * @return the value in this property list with the specified key valu after optionally being inspected for String property replacement
+ */
+ public String getProperty(String key, String defaultValue, boolean doStringReplace) {
+ if (doStringReplace)
+ return StringPropertyReplacer.replaceProperties(getProperty(key, defaultValue));
+ else
+ return getProperty(key, defaultValue);
+ }
}
\ No newline at end of file
Modified: trunk/server/core/src/main/scala/org/infinispan/server/core/AbstractProtocolServer.scala
===================================================================
--- trunk/server/core/src/main/scala/org/infinispan/server/core/AbstractProtocolServer.scala 2010-08-20 09:15:07 UTC (rev 2257)
+++ trunk/server/core/src/main/scala/org/infinispan/server/core/AbstractProtocolServer.scala 2010-08-20 09:15:41 UTC (rev 2258)
@@ -27,33 +27,33 @@
def start(properties: Properties, cacheManager: EmbeddedCacheManager, defaultPort: Int) {
val typedProps = TypedProperties.toTypedProperties(properties)
// Enabled added to make it easy to enable/disable endpoints in JBoss MC based beans for EDG
- val toStart = typedProps.getBooleanProperty("enabled", true)
+ val toStart = typedProps.getBooleanProperty("enabled", true, true)
if (toStart) {
// By doing parameter validation here, both programmatic and command line clients benefit from it.
- this.host = typedProps.getProperty(PROP_KEY_HOST, HOST_DEFAULT)
- this.port = typedProps.getIntProperty(PROP_KEY_PORT, defaultPort)
- this.masterThreads = typedProps.getIntProperty(PROP_KEY_MASTER_THREADS, MASTER_THREADS_DEFAULT)
+ this.host = typedProps.getProperty(PROP_KEY_HOST, HOST_DEFAULT, true)
+ this.port = typedProps.getIntProperty(PROP_KEY_PORT, defaultPort, true)
+ this.masterThreads = typedProps.getIntProperty(PROP_KEY_MASTER_THREADS, MASTER_THREADS_DEFAULT, true)
if (masterThreads < 0)
throw new IllegalArgumentException("Master threads can't be lower than 0: " + masterThreads)
- this.workerThreads = typedProps.getIntProperty(PROP_KEY_WORKER_THREADS, WORKER_THREADS_DEFAULT)
+ this.workerThreads = typedProps.getIntProperty(PROP_KEY_WORKER_THREADS, WORKER_THREADS_DEFAULT, true)
if (workerThreads < 0)
throw new IllegalArgumentException("Worker threads can't be lower than 0: " + masterThreads)
this.cacheManager = cacheManager
- val idleTimeout = typedProps.getIntProperty(PROP_KEY_IDLE_TIMEOUT, IDLE_TIMEOUT_DEFAULT)
+ val idleTimeout = typedProps.getIntProperty(PROP_KEY_IDLE_TIMEOUT, IDLE_TIMEOUT_DEFAULT, true)
if (idleTimeout < -1)
throw new IllegalArgumentException("Idle timeout can't be lower than -1: " + idleTimeout)
- val tcpNoDelay = typedProps.getBooleanProperty(PROP_KEY_TCP_NO_DELAY, TCP_NO_DELAY_DEFAULT)
+ val tcpNoDelay = typedProps.getBooleanProperty(PROP_KEY_TCP_NO_DELAY, TCP_NO_DELAY_DEFAULT, true)
- val sendBufSize = typedProps.getIntProperty(PROP_KEY_SEND_BUF_SIZE, SEND_BUF_SIZE_DEFAULT)
+ val sendBufSize = typedProps.getIntProperty(PROP_KEY_SEND_BUF_SIZE, SEND_BUF_SIZE_DEFAULT, true)
if (sendBufSize < 0) {
throw new IllegalArgumentException("Send buffer size can't be lower than 0: " + sendBufSize)
}
- val recvBufSize = typedProps.getIntProperty(PROP_KEY_RECV_BUF_SIZE, RECV_BUF_SIZE_DEFAULT)
+ val recvBufSize = typedProps.getIntProperty(PROP_KEY_RECV_BUF_SIZE, RECV_BUF_SIZE_DEFAULT, true)
if (recvBufSize < 0) {
throw new IllegalArgumentException("Send buffer size can't be lower than 0: " + sendBufSize)
}
@@ -62,12 +62,12 @@
cacheManager.addListener(getRankCalculatorListener)
// Start default cache
startDefaultCache
- val address = new InetSocketAddress(host, port)
- startTransport(address, idleTimeout, tcpNoDelay, sendBufSize, recvBufSize)
+ startTransport(idleTimeout, tcpNoDelay, sendBufSize, recvBufSize)
}
}
- def startTransport(address: InetSocketAddress, idleTimeout: Int, tcpNoDelay: Boolean, sendBufSize: Int, recvBufSize: Int) {
+ def startTransport(idleTimeout: Int, tcpNoDelay: Boolean, sendBufSize: Int, recvBufSize: Int) {
+ val address = new InetSocketAddress(host, port)
val encoder = getEncoder
val nettyEncoder = if (encoder != null) new EncoderAdapter(encoder) else null
transport = new NettyTransport(this, nettyEncoder, address, masterThreads, workerThreads, idleTimeout,
Modified: trunk/server/core/src/test/scala/org/infinispan/server/core/AbstractProtocolServerTest.scala
===================================================================
--- trunk/server/core/src/test/scala/org/infinispan/server/core/AbstractProtocolServerTest.scala 2010-08-20 09:15:07 UTC (rev 2257)
+++ trunk/server/core/src/test/scala/org/infinispan/server/core/AbstractProtocolServerTest.scala 2010-08-20 09:15:41 UTC (rev 2258)
@@ -5,6 +5,9 @@
import transport.{Decoder, Encoder}
import org.infinispan.server.core.Main._
import org.infinispan.manager.{DefaultCacheManager, EmbeddedCacheManager}
+import org.testng.Assert._
+import java.net.InetSocketAddress
+import java.lang.reflect.Method
/**
* Abstract protocol server test.
@@ -51,6 +54,112 @@
expectIllegalArgument(p, createServer)
}
+ def testHostPropertySubstitution(m: Method) {
+ var host = "1.2.3.4";
+ var p = new Properties
+ p.setProperty(PROP_KEY_HOST, host);
+ var server = createServer
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getHost, host)
+
+ host = "${" + m.getName + "-myhost:5.6.7.8}"
+ p = new Properties
+ p.setProperty(PROP_KEY_HOST, host);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getHost, "5.6.7.8")
+
+ host = "${" + m.getName + "-myhost:9.10.11.12}"
+ System.setProperty(m.getName + "-myhost", "13.14.15.16");
+ p = new Properties
+ p.setProperty(PROP_KEY_HOST, host);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getHost, "13.14.15.16")
+
+ host = "${" + m.getName + "-otherhost}"
+ p = new Properties
+ p.setProperty(PROP_KEY_HOST, host);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getHost, host)
+
+ host = "${" + m.getName + "-otherhost}"
+ System.setProperty(m.getName + "-otherhost", "17.18.19.20");
+ p = new Properties
+ p.setProperty(PROP_KEY_HOST, host);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getHost, "17.18.19.20")
+ }
+
+ def testPortPropertySubstitution(m: Method) {
+ var port = "123"
+ var p = new Properties
+ p.setProperty(PROP_KEY_PORT, port);
+ var server = createServer
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getPort, port.toInt)
+
+ port = "${" + m.getName + "-myport:567}"
+ p = new Properties
+ p.setProperty(PROP_KEY_PORT, port);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getPort, 567)
+
+ port = "${" + m.getName + "-myport:891}"
+ System.setProperty(m.getName + "-myport", "234");
+ p = new Properties
+ p.setProperty(PROP_KEY_PORT, port);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getPort, 234)
+
+ port = "${" + m.getName + "-otherport}"
+ p = new Properties
+ p.setProperty(PROP_KEY_PORT, port);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getPort, 12345)
+
+ port = "${" + m.getName + "-otherport}"
+ System.setProperty(m.getName + "-otherport", "5567");
+ p = new Properties
+ p.setProperty(PROP_KEY_PORT, port);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.getPort, 5567)
+ }
+
+ def testTcpNoDelayPropertySubstitution(m: Method) {
+ var tcpNoDelay = "true"
+ var p = new Properties
+ p.setProperty(PROP_KEY_TCP_NO_DELAY, tcpNoDelay);
+ var server = createServer
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.tcpNoDelay, tcpNoDelay.toBoolean)
+
+ tcpNoDelay = "${" + m.getName + "-mytcpnodelay:false}"
+ p = new Properties
+ p.setProperty(PROP_KEY_TCP_NO_DELAY, tcpNoDelay);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.tcpNoDelay, false)
+
+ tcpNoDelay = "${" + m.getName + "-mytcpnodelay:true}"
+ System.setProperty(m.getName + "-mytcpnodelay", "false");
+ p = new Properties
+ p.setProperty(PROP_KEY_TCP_NO_DELAY, tcpNoDelay);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.tcpNoDelay, false)
+
+ tcpNoDelay = "${" + m.getName + "-othertcpnodelay}"
+ p = new Properties
+ p.setProperty(PROP_KEY_TCP_NO_DELAY, tcpNoDelay);
+ server.start(p, new DefaultCacheManager)
+ // Boolean.parseBoolean() returning false to anything other than true, no exception thrown
+ assertEquals(server.tcpNoDelay, false)
+
+ tcpNoDelay = "${" + m.getName + "-othertcpnodelay}"
+ System.setProperty(m.getName + "-othertcpnodelay", "true");
+ p = new Properties
+ p.setProperty(PROP_KEY_PORT, tcpNoDelay);
+ server.start(p, new DefaultCacheManager)
+ assertEquals(server.tcpNoDelay, true)
+ }
+
private def expectIllegalArgument(p: Properties, server: ProtocolServer) {
try {
server.start(p, new DefaultCacheManager)
@@ -61,16 +170,22 @@
}
}
- private def createServer : ProtocolServer = {
- new AbstractProtocolServer("MyPrefix") {
- override def start(properties: Properties, cacheManager: EmbeddedCacheManager) {
- super.start(properties, cacheManager, 12345)
- }
+ private def createServer : MockProtocolServer = new MockProtocolServer
- override def getEncoder: Encoder = null
+ class MockProtocolServer extends AbstractProtocolServer("Mock") {
+ var tcpNoDelay: Boolean = _
- override def getDecoder: Decoder = null
+ override def start(properties: Properties, cacheManager: EmbeddedCacheManager) {
+ super.start(properties, cacheManager, 12345)
}
+
+ override def getEncoder: Encoder = null
+
+ override def getDecoder: Decoder = null
+
+ override def startTransport(idleTimeout: Int, tcpNoDelay: Boolean, sendBufSize: Int, recvBufSize: Int) {
+ this.tcpNoDelay = tcpNoDelay
+ }
}
}
\ No newline at end of file
More information about the infinispan-commits
mailing list