diff options
author | Martin Ritchie <ritchiem@apache.org> | 2009-04-13 14:18:20 +0000 |
---|---|---|
committer | Martin Ritchie <ritchiem@apache.org> | 2009-04-13 14:18:20 +0000 |
commit | 5a09f68cccab2d71122d4e15c67e6699cbda0650 (patch) | |
tree | cafe493c122cae8930748d68b35b0f69ed7c6e87 | |
parent | f4721304dfb4a53d70f653622f28bbf1af3853ee (diff) | |
download | qpid-python-5a09f68cccab2d71122d4e15c67e6699cbda0650.tar.gz |
QPID-1776: fix interpolation of variables.
merged from trunk r758730
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.5-fix@764482 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 28 insertions, 4 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java index a7c7e073c3..93661f2d9a 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java @@ -130,10 +130,16 @@ public class ServerConfiguration implements SignalHandler for (int j = 0; j < hosts.size(); j++) { String name = (String) hosts.get(j); - CompositeConfiguration mungedConf = new CompositeConfiguration(); - mungedConf.addConfiguration(conf.subset("virtualhosts.virtualhost."+name)); - mungedConf.addConfiguration(vhostConfiguration.subset("virtualhost." + name)); - VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration(name, mungedConf); + // Add the keys of the virtual host to the main config then bail out + + Configuration myConf = vhostConfiguration.subset("virtualhost." + name); + Iterator k = myConf.getKeys(); + while (k.hasNext()) + { + String key = (String) k.next(); + conf.setProperty("virtualhosts.virtualhost."+name+"."+key, myConf.getProperty(key)); + } + VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration(name, conf.subset("virtualhosts.virtualhost."+name), this); _virtualHosts.put(vhostConfig.getName(), vhostConfig); } } diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java index ad1df1c777..2c39d006b9 100644 --- a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java @@ -677,6 +677,24 @@ public class ServerConfigurationTest extends TestCase assertEquals(true, config.getQpidNIO()); // From the second file, not // present in the first } + + public void testVariableInterpolation() throws Exception + { + File mainFile = File.createTempFile(getClass().getName(), null); + + mainFile.deleteOnExit(); + + FileWriter out = new FileWriter(mainFile); + out.write("<broker>\n"); + out.write("\t<work>foo</work>\n"); + out.write("\t<management><ssl><keyStorePath>${work}</keyStorePath></ssl></management>\n"); + out.write("</broker>\n"); + out.close(); + + ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile()); + assertEquals("Did not get correct interpolated value", + "foo", config.getManagementKeyStorePath()); + } public void testCombinedConfigurationFirewall() throws Exception { |