You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2009/04/13 15:09:34 UTC

svn commit: r764433 - in /qpid/branches/0.5-fix/qpid: ./ java/ java/broker/src/main/java/org/apache/qpid/server/configuration/ java/broker/src/test/java/org/apache/qpid/server/configuration/ java/lib/

Author: ritchiem
Date: Mon Apr 13 13:09:33 2009
New Revision: 764433

URL: http://svn.apache.org/viewvc?rev=764433&view=rev
Log:
Merge branch 'QPID-1612'
merged from trunk r747363

Added:
    qpid/branches/0.5-fix/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
      - copied unchanged from r747363, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
    qpid/branches/0.5-fix/qpid/java/lib/commons-beanutils-core-1.8.0.jar
      - copied unchanged from r747363, qpid/trunk/qpid/java/lib/commons-beanutils-core-1.8.0.jar
    qpid/branches/0.5-fix/qpid/java/lib/commons-configuration-1.6.jar
      - copied unchanged from r747363, qpid/trunk/qpid/java/lib/commons-configuration-1.6.jar
    qpid/branches/0.5-fix/qpid/java/lib/commons-digester-1.8.1.jar
      - copied unchanged from r747363, qpid/trunk/qpid/java/lib/commons-digester-1.8.1.jar
Removed:
    qpid/branches/0.5-fix/qpid/java/lib/commons-configuration-1.2.jar
Modified:
    qpid/branches/0.5-fix/qpid/   (props changed)
    qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
    qpid/branches/0.5-fix/qpid/java/build.deps

Propchange: qpid/branches/0.5-fix/qpid/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Apr 13 13:09:33 2009
@@ -1 +1 @@
-/qpid/trunk/qpid:742626,743015,743028-743029,743304,743306,743311,743357,744113
+/qpid/trunk/qpid:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363

Modified: qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=764433&r1=764432&r2=764433&view=diff
==============================================================================
--- qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java (original)
+++ qpid/branches/0.5-fix/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java Mon Apr 13 13:09:33 2009
@@ -25,12 +25,18 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
+import org.apache.commons.configuration.CombinedConfiguration;
 import org.apache.commons.configuration.CompositeConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.ConfigurationFactory;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration.ConfigurationFactory.DigesterConfigurationFactory;
+import org.apache.commons.configuration.tree.ExpressionEngine;
 
 public class ServerConfiguration
 {
@@ -45,24 +51,57 @@
     private static final long DEFAULT_HOUSEKEEPING_PERIOD = 30000L;
     private static final int DEFAULT_JMXPORT = 8999;
 
-    private long _housekeepingExpiredMessageCheckPeriod = DEFAULT_HOUSEKEEPING_PERIOD;
     private static int _jmxPort = DEFAULT_JMXPORT;
 
     private Map<String, VirtualHostConfiguration> _virtualHosts = new HashMap<String, VirtualHostConfiguration>();
     private SecurityConfiguration _securityConfiguration = null;
+
+    // Map of environment variables to config items
+    private static final Map<String, String> envVarMap = new HashMap<String, String>();
+    
+    {
+        envVarMap.put("QPID_PORT", "connector.port");
+        envVarMap.put("QPID_ENABLEDIRECTBUFFERS", "advanced.enableDirectBuffers");
+        envVarMap.put("QPID_SSLPORT", "connector.ssl.port");
+        envVarMap.put("QPID_NIO", "connector.qpidnio");
+        envVarMap.put("QPID_WRITEBIASED", "advanced.useWriteBiasedPool");
+        envVarMap.put("QPID_JMXPORT", "management.jmxport");
+        envVarMap.put("QPID_FRAMESIZE", "advanced.framesize");
+        envVarMap.put("QPID_MSGAUTH", "security.msg-auth");
+        envVarMap.put("QPID_AUTOREGISTER", "auto_register");
+        envVarMap.put("QPID_MANAGEMENTENABLED", "management.enabled");
+        envVarMap.put("QPID_HEARTBEATDELAY", "heartbeat.delay");
+        envVarMap.put("QPID_HEARTBEATTIMEOUTFACTOR", "heartbeat.timeoutFactor");
+        envVarMap.put("QPID_MAXIMUMMESSAGEAGE", "maximumMessageAge");
+        envVarMap.put("QPID_MAXIMUMMESSAGECOUNT", "maximumMessageCount");
+        envVarMap.put("QPID_MAXIMUMQUEUEDEPTH", "maximumQueueDepth");
+        envVarMap.put("QPID_MAXIMUMMESSAGESIZE", "maximumMessageSize");
+        envVarMap.put("QPID_MINIMUMALERTREPEATGAP", "minimumAlertRepeatGap");
+        envVarMap.put("QPID_SOCKETRECEIVEBUFFER", "connector.socketReceiveBuffer");
+        envVarMap.put("QPID_SOCKETWRITEBUFFER", "connector.socketWriteBuffer");
+        envVarMap.put("QPID_TCPNODELAY", "connector.tcpNoDelay");
+        envVarMap.put("QPID_ENABLEPOOLEDALLOCATOR", "advanced.enablePooledAllocator");
+    }
     
     public ServerConfiguration(File configurationURL) throws ConfigurationException
     {
-        this(config(configurationURL));
+        this(parseConfig(configurationURL));
     }
 
     public ServerConfiguration(Configuration conf) throws ConfigurationException
     {
         _config = conf;
+        
+        substituteEnvironmentVariables();
+        
         _jmxPort = _config.getInt("management.jmxport", 8999);
-
         _securityConfiguration = new SecurityConfiguration(conf.subset("security"));
 
+        setupVirtualHosts(conf);
+    }
+
+    private void setupVirtualHosts(Configuration conf) throws ConfigurationException
+    {
         List vhosts = conf.getList("virtualhosts");
         Iterator i = vhosts.iterator();
         while (i.hasNext())
@@ -85,17 +124,32 @@
         }
     }
 
-    public static String[] objListToStringArray(List objList)
+    private void substituteEnvironmentVariables()
     {
-        String[] networkStrings = new String[objList.size()];
-        int i = 0;
-        for (Object network : objList)
+        for (Entry<String, String> var : envVarMap.entrySet())
         {
-            networkStrings[i++] = (String) network;
+            String val = System.getenv(var.getKey());
+            if (val != null)
+            {
+                _config.setProperty(var.getValue(), val); 
+            }
         }
-        return networkStrings;
     }
 
+    private final static Configuration parseConfig(File file) throws ConfigurationException
+    {      
+        ConfigurationFactory factory = new ConfigurationFactory();
+        factory.setConfigurationFileName(file.getAbsolutePath());
+        Configuration conf = factory.getConfiguration();
+        Iterator keys = conf.getKeys();
+        if (!keys.hasNext())
+        {
+            keys = null;
+            conf = flatConfig(file);
+        }
+        return conf;
+    }
+    
     // Our configuration class needs to make the interpolate method
     // public so it can be called below from the config method.
     private static class MyConfiguration extends CompositeConfiguration
@@ -105,8 +159,8 @@
             return super.interpolate(obj);
         }
     }
-
-    private final static Configuration config(File url) throws ConfigurationException
+    
+    private final static Configuration flatConfig(File file) throws ConfigurationException
     {
         // We have to override the interpolate methods so that
         // interpolation takes place accross the entirety of the
@@ -121,7 +175,7 @@
                 return conf.interpolate(o);
             }
         });
-        conf.addConfiguration(new XMLConfiguration(url)
+        conf.addConfiguration(new XMLConfiguration(file)
         {
             protected String interpolate(String o)
             {
@@ -393,13 +447,13 @@
         return _config.getString("virtualhosts.default");
     }
 
-    public void setHousekeepingExpiredMessageCheckPeriod(long _housekeepingExpiredMessageCheckPeriod)
+    public void setHousekeepingExpiredMessageCheckPeriod(long value)
     {
-        this._housekeepingExpiredMessageCheckPeriod = _housekeepingExpiredMessageCheckPeriod;
+        _config.setProperty("housekeeping.expiredMessageCheckPeriod", value);
     }
 
     public long getHousekeepingExpiredMessageCheckPeriod()
     {
-        return _housekeepingExpiredMessageCheckPeriod;
+        return _config.getLong("housekeeping.expiredMessageCheckPeriod", DEFAULT_HOUSEKEEPING_PERIOD);
     }
 }

Modified: qpid/branches/0.5-fix/qpid/java/build.deps
URL: http://svn.apache.org/viewvc/qpid/branches/0.5-fix/qpid/java/build.deps?rev=764433&r1=764432&r2=764433&view=diff
==============================================================================
--- qpid/branches/0.5-fix/qpid/java/build.deps (original)
+++ qpid/branches/0.5-fix/qpid/java/build.deps Mon Apr 13 13:09:33 2009
@@ -1,9 +1,11 @@
 backport-util-concurrent=lib/backport-util-concurrent-2.2.jar
 
+commons-beanutils-core=lib/commons-beanutils-core-1.8.0.jar
 commons-cli=lib/commons-cli-1.0.jar
 commons-codec=lib/commons-codec-1.3.jar
 commons-collections=lib/commons-collections-3.2.jar
-commons-configuration=lib/commons-configuration-1.2.jar
+commons-configuration=lib/commons-configuration-1.6.jar
+commons-digester=lib/commons-digester-1.8.1.jar
 commons-lang=lib/commons-lang-2.2.jar
 commons-logging=lib/commons-logging-1.0.4.jar
 commons-pool=lib/commons-pool-1.4.jar
@@ -65,8 +67,9 @@
 felix.libs=${osgi-core} ${felix-framework}
 
 common.libs=${slf4j-api} ${backport-util-concurrent} ${mina-core} \
-    ${mina-filter-ssl} ${commons-codec} ${commons-lang} ${commons-collections} \
-    ${commons-configuration}
+    ${mina-filter-ssl} ${commons-beanutils-core} ${commons-codec} \ 
+    ${commons-lang} ${commons-collections} ${commons-configuration} \
+    ${commons-digester}
 client.libs=${common.libs}  ${geronimo-jms}
 tools.libs=${client.libs}
 broker.libs=${common.libs} ${commons-cli} ${commons-logging} ${log4j} \



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org