Author: orudyy
Date: Mon Nov 12 15:49:55 2012
New Revision: 1408332
URL: http://svn.apache.org/viewvc?rev=1408332&view=rev
Log:
WIP - clean-up
1) stop passing the map of VirtualhostConfiguration into Recoverers
2) remove references to ServerConfiguration from jmx management
3) clean-up the validation of port types in PortFactory
Added:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXConfiguration.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementFactory.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
Mon Nov 12 15:49:55 2012
@@ -77,7 +77,6 @@ public class HttpManagement extends Abst
private final HttpConfiguration _configuration;
- // XXX refactor back to use a single instance of server and add connectors
for different ports
public HttpManagement(UUID id, Broker broker, HttpConfiguration
configuration)
{
super(id);
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXConfiguration.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXConfiguration.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXConfiguration.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXConfiguration.java
Mon Nov 12 15:49:55 2012
@@ -25,13 +25,15 @@ public class JMXConfiguration
private final boolean _platformMBeanServer;
private final String _managementKeyStorePath;
private final String _managementKeyStorePassword;
+ private final boolean _managementRightsInferAllAccess;
public JMXConfiguration( boolean platformMBeanServer, String
managementKeyStorePath,
- String managementKeyStorePassword)
+ String managementKeyStorePassword, boolean
managementRightsInferAllAccess)
{
_platformMBeanServer = platformMBeanServer;
_managementKeyStorePath = managementKeyStorePath;
_managementKeyStorePassword = managementKeyStorePassword;
+ _managementRightsInferAllAccess = managementRightsInferAllAccess;
}
public boolean isPlatformMBeanServer()
@@ -49,4 +51,9 @@ public class JMXConfiguration
return _managementKeyStorePassword;
}
+ public boolean isManagementRightsInferAllAccess()
+ {
+ return _managementRightsInferAllAccess;
+ }
+
}
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java
Mon Nov 12 15:49:55 2012
@@ -78,8 +78,7 @@ public class JMXManagedObjectRegistry im
private final Port _registryPort;
private final Port _connectorPort;
- private final String _managementKeyStorePath;
- private final String _managementKeyStorePassword;
+ private final JMXConfiguration _jmxConfiguration;
public JMXManagedObjectRegistry(
Port connectorPort, Port registryPort,
@@ -93,9 +92,7 @@ public class JMXManagedObjectRegistry im
_mbeanServer =
platformServer ? ManagementFactory.getPlatformMBeanServer()
: MBeanServerFactory.createMBeanServer(ManagedObject.DOMAIN);
-
- _managementKeyStorePath = jmxConfiguration.getManagementKeyStorePath();
- _managementKeyStorePassword =
jmxConfiguration.getManagementKeyStorePassword();
+ _jmxConfiguration = jmxConfiguration;
}
@Override
@@ -126,20 +123,23 @@ public class JMXManagedObjectRegistry im
if (connectorSslEnabled)
{
+ String managementKeyStorePath =
_jmxConfiguration.getManagementKeyStorePath();
+ String managementKeyStorePassword =
_jmxConfiguration.getManagementKeyStorePath();
+
//set the SSL related system properties used by the SSL RMI socket
factories to the values
//given in the configuration file
- checkKeyStorePathExistsAndIsReadable(_managementKeyStorePath);
+ checkKeyStorePathExistsAndIsReadable(managementKeyStorePath );
-
CurrentActor.get().message(ManagementConsoleMessages.SSL_KEYSTORE(_managementKeyStorePath));
+
CurrentActor.get().message(ManagementConsoleMessages.SSL_KEYSTORE(managementKeyStorePath));
- if (_managementKeyStorePassword == null)
+ if (managementKeyStorePassword == null)
{
throw new IllegalConfigurationException(
"JMX management SSL keystore password not defined,
unable to start requested SSL protected JMX server");
}
else
{
- System.setProperty("javax.net.ssl.keyStorePassword",
_managementKeyStorePassword);
+ System.setProperty("javax.net.ssl.keyStorePassword",
managementKeyStorePassword);
}
//create the SSL RMI socket factories
@@ -240,7 +240,7 @@ public class JMXManagedObjectRegistry im
};
//Add the custom invoker as an MBeanServerForwarder, and start the
RMIConnectorServer.
- MBeanServerForwarder mbsf =
MBeanInvocationHandlerImpl.newProxyInstance();
+ MBeanServerForwarder mbsf =
MBeanInvocationHandlerImpl.newProxyInstance(_jmxConfiguration);
_cs.setMBeanServerForwarder(mbsf);
// Install a ManagementLogonLogoffReporter so we can report as users
logon/logoff
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementFactory.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementFactory.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementFactory.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementFactory.java
Mon Nov 12 15:49:55 2012
@@ -36,6 +36,7 @@ public class JMXManagementFactory implem
public static final String USE_PLATFORM_MBEAN_SERVER =
"usePlatformMBeanServer";
public static final String KEY_STORE_PATH = "keyStorePath";
public static final String KEY_STORE_PASSWORD = "keyStorePassword";
+ public static final String MANAGEMENT_RIGHTS_INFER_ALL_ACCESS =
"managementRightsInferAllAccess";
public static final String PLUGIN_NAME = "MANAGEMENT-JMX";
@@ -47,7 +48,8 @@ public class JMXManagementFactory implem
JMXConfiguration jmxConfiguration = new JMXConfiguration(
getBooleanAttribute(USE_PLATFORM_MBEAN_SERVER, attributes,
true),
getStringAttribute(KEY_STORE_PATH, attributes, null),
- getStringAttribute(KEY_STORE_PASSWORD, attributes, null));
+ getStringAttribute(KEY_STORE_PASSWORD, attributes, null),
+ getBooleanAttribute(MANAGEMENT_RIGHTS_INFER_ALL_ACCESS,
attributes, true));
return new JMXManagement(id, broker, jmxConfiguration);
}
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java
Mon Nov 12 15:49:55 2012
@@ -60,13 +60,16 @@ public class MBeanInvocationHandlerImpl
private MBeanServer _mbs;
private final ManagementActor _logActor = new
ManagementActor(_appRegistry.getRootMessageLogger());
- // XXX remove reference to ServerConfiguration
- private final boolean _managementRightsInferAllAccess =
- _appRegistry.getConfiguration().getManagementRightsInferAllAccess();
+ private final boolean _managementRightsInferAllAccess;
- public static MBeanServerForwarder newProxyInstance()
+ MBeanInvocationHandlerImpl(boolean managementRightsInferAllAccess)
{
- final InvocationHandler handler = new MBeanInvocationHandlerImpl();
+ _managementRightsInferAllAccess = managementRightsInferAllAccess;
+ }
+
+ public static MBeanServerForwarder newProxyInstance(JMXConfiguration
configuration)
+ {
+ final InvocationHandler handler = new
MBeanInvocationHandlerImpl(configuration.isManagementRightsInferAllAccess());
final Class<?>[] interfaces = new Class[] { MBeanServerForwarder.class
};
Object proxy =
Proxy.newProxyInstance(MBeanServerForwarder.class.getClassLoader(), interfaces,
handler);
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
Mon Nov 12 15:49:55 2012
@@ -23,20 +23,14 @@ package org.apache.qpid.server.configura
import java.io.File;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Map.Entry;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManagerFactory;
-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.HierarchicalConfiguration;
-import org.apache.commons.configuration.SystemConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.plugins.AbstractConfiguration;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
@@ -147,7 +141,7 @@ public class ServerConfiguration extends
*/
public ServerConfiguration(File configurationURL) throws
ConfigurationException
{
- this(parseConfig(configurationURL));
+ this(XmlConfigurationUtilities.parseConfig(configurationURL,
envVarMap));
_configFile = configurationURL;
}
@@ -304,7 +298,7 @@ public class ServerConfiguration extends
{
throw new ConfigurationException("Virtualhosts file does
not exist");
}
- vhostConfiguration = parseConfig(new File(fileName));
+ vhostConfiguration = XmlConfigurationUtilities.parseConfig(new
File(fileName), envVarMap);
// save the default virtualhost name
String defaultVirtualHost =
vhostConfiguration.getString("default");
@@ -324,36 +318,6 @@ public class ServerConfiguration extends
}
}
- private static void substituteEnvironmentVariables(Configuration conf)
- {
- for (Entry<String, String> var : envVarMap.entrySet())
- {
- String val = System.getenv(var.getKey());
- if (val != null)
- {
- conf.setProperty(var.getValue(), val);
- }
- }
- }
-
- private 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);
- }
-
- substituteEnvironmentVariables(conf);
-
- return conf;
- }
-
/**
* Check the configuration file to see if status updates are enabled.
*
@@ -413,41 +377,6 @@ public class ServerConfiguration extends
return locale;
}
- // Our configuration class needs to make the interpolate method
- // public so it can be called below from the config method.
- public static class MyConfiguration extends CompositeConfiguration
- {
- public String interpolate(String obj)
- {
- return super.interpolate(obj);
- }
- }
-
- public final static Configuration flatConfig(File file) throws
ConfigurationException
- {
- // We have to override the interpolate methods so that
- // interpolation takes place across the entirety of the
- // composite configuration. Without doing this each
- // configuration object only interpolates variables defined
- // inside itself.
- final MyConfiguration conf = new MyConfiguration();
- conf.addConfiguration(new SystemConfiguration()
- {
- protected String interpolate(String o)
- {
- return conf.interpolate(o);
- }
- });
- conf.addConfiguration(new XMLConfiguration(file)
- {
- protected String interpolate(String o)
- {
- return conf.interpolate(o);
- }
- });
- return conf;
- }
-
public String getConfigurationURL()
{
return _configFile == null ? "" : _configFile.getAbsolutePath();
@@ -883,7 +812,6 @@ public class ServerConfiguration extends
return disabledFeatures;
}
- // XXX move into management attributes for JMX & HTTP plugins
public boolean getManagementRightsInferAllAccess()
{
return getBooleanValue("management.managementRightsInferAllAccess",
true);
@@ -952,4 +880,10 @@ public class ServerConfiguration extends
return reply == null ? null : AmqpProtocolVersion.valueOf(reply);
}
+
+ public File getVirtualHostsFile()
+ {
+ return _vhostsFile;
+ }
+
}
Added:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java?rev=1408332&view=auto
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java
(added)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/XmlConfigurationUtilities.java
Mon Nov 12 15:49:55 2012
@@ -0,0 +1,112 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.configuration;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+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.SystemConfiguration;
+import org.apache.commons.configuration.XMLConfiguration;
+
+public class XmlConfigurationUtilities
+{
+
+ // Our configuration class needs to make the interpolate method
+ // public so it can be called below from the config method.
+ public static class MyConfiguration extends CompositeConfiguration
+ {
+ public String interpolate(String obj)
+ {
+ return super.interpolate(obj);
+ }
+ }
+
+ public static Configuration parseConfig(File file, Map<String, String>
envVarMap) 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);
+ }
+
+ XmlConfigurationUtilities.substituteEnvironmentVariables(conf,
envVarMap);
+
+ return conf;
+ }
+
+ public final static Configuration flatConfig(File file) throws
ConfigurationException
+ {
+ // We have to override the interpolate methods so that
+ // interpolation takes place across the entirety of the
+ // composite configuration. Without doing this each
+ // configuration object only interpolates variables defined
+ // inside itself.
+ final MyConfiguration conf = new MyConfiguration();
+ conf.addConfiguration(new SystemConfiguration()
+ {
+ protected String interpolate(String o)
+ {
+ return conf.interpolate(o);
+ }
+ });
+ conf.addConfiguration(new XMLConfiguration(file)
+ {
+ protected String interpolate(String o)
+ {
+ return conf.interpolate(o);
+ }
+ });
+ return conf;
+ }
+
+ static void substituteEnvironmentVariables(Configuration conf, Map<String,
String> envVarMap)
+ {
+ if (envVarMap == null || envVarMap.isEmpty())
+ {
+ return;
+ }
+ for (Entry<String, String> var : envVarMap.entrySet())
+ {
+ String val = System.getenv(var.getKey());
+ if (val != null)
+ {
+ conf.setProperty(var.getValue(), val);
+ }
+ }
+ }
+
+
+ public static String escapeTagName(String name)
+ {
+ return name.replaceAll("\\.", "\\.\\.");
+ }
+}
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
Mon Nov 12 15:49:55 2012
@@ -20,12 +20,10 @@
*/
package org.apache.qpid.server.configuration.startup;
-import java.util.Map;
import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.RecovererProvider;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.model.ConfiguredObjectType;
import org.apache.qpid.server.model.adapter.AuthenticationProviderFactory;
import org.apache.qpid.server.model.adapter.PortFactory;
@@ -42,16 +40,14 @@ public class DefaultRecovererProvider im
private final AuthenticationProviderFactory _authenticationProviderFactory;
private final PortFactory _portFactory;
private final IApplicationRegistry _registry;
- private final Map<String, VirtualHostConfiguration>
_virtualHostConfiguration;
private final QpidServiceLoader<GroupManagerFactory>
_groupManagerServiceLoader;
private final QpidServiceLoader<PluginFactory> _pluginFactoryServiceLoader;
- public DefaultRecovererProvider(IApplicationRegistry registry, Map<String,
VirtualHostConfiguration> virtualHostConfiguration)
+ public DefaultRecovererProvider(IApplicationRegistry registry)
{
_authenticationProviderFactory = new AuthenticationProviderFactory(new
QpidServiceLoader<AuthenticationManagerFactory>());
_portFactory = new PortFactory(registry);
_registry = registry;
- _virtualHostConfiguration = virtualHostConfiguration;
_groupManagerServiceLoader = new
QpidServiceLoader<GroupManagerFactory>();
_pluginFactoryServiceLoader = new QpidServiceLoader<PluginFactory>();
}
@@ -64,7 +60,7 @@ public class DefaultRecovererProvider im
case BROKER:
return new BrokerRecoverer(_authenticationProviderFactory,
_portFactory, _registry);
case VIRTUAL_HOST:
- return new
VirtualHostRecoverer(_registry.getVirtualHostRegistry(),(StatisticsGatherer)_registry,
_registry.getSecurityManager(), _virtualHostConfiguration);
+ return new
VirtualHostRecoverer(_registry.getVirtualHostRegistry(),(StatisticsGatherer)_registry,
_registry.getSecurityManager());
case AUTHENTICATION_PROVIDER:
return new
AuthenticationProviderRecoverer(_authenticationProviderFactory);
case PORT:
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java
Mon Nov 12 15:49:55 2012
@@ -20,12 +20,19 @@
*/
package org.apache.qpid.server.configuration.startup;
+import static org.apache.qpid.server.util.MapValueConverter.getStringAttribute;
+
+import java.io.File;
import java.util.Map;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
import org.apache.qpid.server.configuration.ConfigurationEntry;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.RecovererProvider;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
+import org.apache.qpid.server.configuration.XmlConfigurationUtilities;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.adapter.VirtualHostAdapter;
@@ -38,37 +45,55 @@ public class VirtualHostRecoverer extend
private VirtualHostRegistry _virtualHostRegistry;
private StatisticsGatherer _statisticsGatherer;
private SecurityManager _securityManager;
- private Map<String, VirtualHostConfiguration> _configurations;
- public VirtualHostRecoverer(VirtualHostRegistry virtualHostRegistry,
StatisticsGatherer statisticsGatherer,
- SecurityManager securityManager, Map<String,
VirtualHostConfiguration> configurations)
+ public VirtualHostRecoverer(VirtualHostRegistry virtualHostRegistry,
StatisticsGatherer statisticsGatherer, SecurityManager securityManager)
{
super();
_virtualHostRegistry = virtualHostRegistry;
_statisticsGatherer = statisticsGatherer;
_securityManager = securityManager;
- _configurations = configurations;
}
-
@Override
VirtualHost createBrokerChild(RecovererProvider recovererProvider,
ConfigurationEntry entry, Broker broker)
{
Map<String, Object> attributes = entry.getAttributes();
- String name = (String) attributes.get(VirtualHost.NAME);
- if (name == null)
+ String name = getStringAttribute(VirtualHost.NAME, attributes);
+ String configuration = getStringAttribute(VirtualHost.CONFIGURATION,
attributes, null);
+ Configuration conf = null;
+ if (configuration == null)
{
- throw new IllegalConfigurationException("Mandatory attribute name
is not found in virtual host configuration :"
- + entry);
+ conf = new XMLConfiguration();
}
- // XXX hack
- //VirtualHostConfiguration virtualHostConfiguration =
(VirtualHostConfiguration)attributes.get("configuration");
-
- // String configurationPath = attributes.get("configuration");
- // VirtualHostConfiguration virtualHostConfiguration = new
VirtualHostConfiguration(configurationPath);
-
- return new VirtualHostAdapter(entry.getId(), broker, attributes,
_virtualHostRegistry,
- _statisticsGatherer, _securityManager,
_configurations.get(name));
+ else
+ {
+ File configurationFile = new File(configuration);
+ if (!configurationFile.exists())
+ {
+ throw new IllegalConfigurationException("Configuration file '"
+ configurationFile + "' for virtual host '" + name + "' does not exist.");
+ }
+
+ try
+ {
+ Configuration virtualHostConfig =
XmlConfigurationUtilities.parseConfig(configurationFile, null);
+ conf = virtualHostConfig.subset("virtualhost." +
XmlConfigurationUtilities.escapeTagName(name));
+ }
+ catch (ConfigurationException e)
+ {
+ throw new IllegalConfigurationException("Cannot load
configuration for virtual host '" + name + "' from file " + configurationFile);
+ }
+ }
+ VirtualHostConfiguration virtualHostConfiguration = null;
+ try
+ {
+ virtualHostConfiguration = new VirtualHostConfiguration(name,
conf);
+ }
+ catch (ConfigurationException e)
+ {
+ throw new IllegalConfigurationException("Cannot create
configuration for virtual host '" + name + "'");
+ }
+ return new VirtualHostAdapter(entry.getId(), broker, attributes,
_virtualHostRegistry, _statisticsGatherer, _securityManager,
+ virtualHostConfiguration);
}
}
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
Mon Nov 12 15:49:55 2012
@@ -34,6 +34,7 @@ import java.util.Set;
import java.util.UUID;
import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.ConfigurationUtils;
import org.apache.commons.configuration.HierarchicalConfiguration;
@@ -53,6 +54,7 @@ import org.apache.qpid.server.model.Prot
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.plugin.PluginFactory;
import org.apache.qpid.server.plugin.QpidServiceLoader;
+
import org.apache.qpid.server.security.group.FileGroupManagerFactory;
public class XMLConfigurationEntryStore implements ConfigurationEntryStore
@@ -256,6 +258,27 @@ public class XMLConfigurationEntryStore
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(org.apache.qpid.server.model.VirtualHost.NAME,
name);
+ File configuration = serverConfiguration.getVirtualHostsFile();
+ if (configuration == null)
+ {
+ try
+ {
+ HierarchicalConfiguration virtualHostConfig =
ConfigurationUtils.convertToHierarchical(serverConfiguration.getVirtualHostConfig(name).getConfig());
+ virtualHostConfig.getRootNode().setName(name);
+ configuration = File.createTempFile("_virtualhost",
".xml");
+ XMLConfiguration config = new XMLConfiguration();
+ config.setRootElementName("virtualhosts");
+ config.setProperty("virtualhost.name", name);
+ config.addNodes("virtualhost",
Collections.singletonList(virtualHostConfig.getRootNode()));
+ config.save(configuration);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Cannot store virtual host
configuration!", e);
+ }
+ }
+
+
attributes.put(org.apache.qpid.server.model.VirtualHost.CONFIGURATION,
configuration.getAbsolutePath());
ConfigurationEntry entry = new
ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.VIRTUAL_HOST,
attributes, null, this);
rootChildren.put(entry.getId(), entry);
@@ -332,6 +355,7 @@ public class XMLConfigurationEntryStore
attributes.put("keyStorePath",
serverConfiguration.getManagementKeyStorePath());
attributes.put("keyStorePassword",
serverConfiguration.getManagementKeyStorePassword());
attributes.put("usePlatformMBeanServer",
serverConfiguration.getPlatformMbeanserver());
+ attributes.put("managementRightsInferAllAccess",
serverConfiguration.getManagementRightsInferAllAccess());
ConfigurationEntry entry = new
ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PLUGIN, attributes,
null, this);
rootChildren.put(entry.getId(), entry);
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
Mon Nov 12 15:49:55 2012
@@ -107,7 +107,7 @@ public enum Protocol
return false;
}
- static enum ProtocolType
+ public static enum ProtocolType
{
AMQP, HTTP, JMX, RMI;
}
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
Mon Nov 12 15:49:55 2012
@@ -46,6 +46,7 @@ public interface VirtualHost extends Con
public static final String QUEUE_COUNT = "queueCount";
public static final String EXCHANGE_COUNT = "exchangeCount";
public static final String CONNECTION_COUNT = "connectionCount";
+ public static final String CONFIGURATION = "configuration";
public static final Collection<String> AVAILABLE_STATISTICS =
Collections.unmodifiableList(
@@ -109,7 +110,8 @@ public interface VirtualHost extends Con
ALERT_THRESHOLD_MESSAGE_AGE,
ALERT_THRESHOLD_MESSAGE_SIZE,
ALERT_THRESHOLD_QUEUE_DEPTH_BYTES,
- ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES));
+ ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES,
+ CONFIGURATION));
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java
Mon Nov 12 15:49:55 2012
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.model.adapter;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -28,6 +29,7 @@ import org.apache.qpid.server.configurat
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Protocol;
+import org.apache.qpid.server.model.Protocol.ProtocolType;
import org.apache.qpid.server.registry.IApplicationRegistry;
import org.apache.qpid.server.transport.AmqpPortAdapter;
import org.apache.qpid.server.util.MapValueConverter;
@@ -63,34 +65,18 @@ public class PortFactory
private boolean isAmqpProtocol(Map<String, Object> portAttributes)
{
Set<Object> protocolStrings =
MapValueConverter.getSetAttribute(Port.PROTOCOLS, portAttributes);
- // XXX fix this for non AMQP ports, f.e, JMX_RMI,HTTP
- int amqpProtocolsFound = 0;
- int nonAmqpProtocolsFound = 0;
+ Set<ProtocolType> protocolTypes = new HashSet<ProtocolType>();
for (Object protocolObject : protocolStrings)
{
Protocol protocol = Protocol.valueOfObject(protocolObject);
- if (protocol.isAMQP())
- {
- amqpProtocolsFound++;
- }
- else
- {
- nonAmqpProtocolsFound++;
- }
+ protocolTypes.add(protocol.getProtocolType());
}
- if (amqpProtocolsFound > 0)
+ if (protocolTypes.size() > 1)
{
- if (nonAmqpProtocolsFound > 0)
- {
- throw new IllegalConfigurationException("Found AMQP and
non-AMQP protocols on port configuration: "
- + portAttributes);
- }
- return true;
- }
- else
- {
- return false;
+ throw new IllegalConfigurationException("Found different protocol
types '" + protocolTypes + "' on port configuration: " + portAttributes);
}
+
+ return protocolTypes.contains(ProtocolType.AMQP);
}
}
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
Mon Nov 12 15:49:55 2012
@@ -23,8 +23,6 @@ package org.apache.qpid.server.registry;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;
@@ -205,7 +203,9 @@ public class ApplicationRegistry impleme
_securityManager = new SecurityManager(_configuration.getConfig());
- createBroker();
+ RecovererProvider provider = new DefaultRecovererProvider(this);
+ ConfiguredObjectRecoverer<? extends ConfiguredObject>
brokerRecoverer = provider.getRecoverer(ConfiguredObjectType.BROKER);
+ _broker = (Broker) brokerRecoverer.create(provider,
_store.getRootEntry());
getVirtualHostRegistry().setDefaultVirtualHostName(_configuration.getDefaultVirtualHost());
initialiseStatisticsReporting();
@@ -235,20 +235,6 @@ public class ApplicationRegistry impleme
}
- private void createBroker()
- {
- // XXX get rid of it!!
- Map<String, VirtualHostConfiguration> virtualHostConfigurations = new
HashMap<String, VirtualHostConfiguration>();
- String[] vhNames = _configuration.getVirtualHostsNames();
- for (String name : vhNames)
- {
- virtualHostConfigurations.put(name,
_configuration.getVirtualHostConfig(name));
- }
- RecovererProvider provider = new DefaultRecovererProvider(this,
virtualHostConfigurations);
- ConfiguredObjectRecoverer<? extends ConfiguredObject> brokerRecoverer
= provider.getRecoverer(ConfiguredObjectType.BROKER);
- _broker = (Broker) brokerRecoverer.create(provider,
_store.getRootEntry());
- }
-
public void initialiseStatisticsReporting()
{
long report = _configuration.getStatisticsReportingPeriod() * 1000; //
convert to ms
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java
Mon Nov 12 15:49:55 2012
@@ -37,7 +37,7 @@ public class DefaultRecovererProviderTes
ConfiguredObjectType.VIRTUAL_HOST,
ConfiguredObjectType.AUTHENTICATION_PROVIDER,
ConfiguredObjectType.GROUP_PROVIDER,
ConfiguredObjectType.PLUGIN, ConfiguredObjectType.PORT};
- DefaultRecovererProvider provider = new
DefaultRecovererProvider(mock(IApplicationRegistry.class), null);
+ DefaultRecovererProvider provider = new
DefaultRecovererProvider(mock(IApplicationRegistry.class));
for (ConfiguredObjectType configuredObjectType : supportedTypes)
{
ConfiguredObjectRecoverer<?> recovever =
provider.getRecoverer(configuredObjectType);
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java
Mon Nov 12 15:49:55 2012
@@ -27,7 +27,6 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.qpid.server.configuration.ConfigurationEntry;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.security.SecurityManager;
@@ -44,15 +43,13 @@ public class VirtualHostRecovererTest ex
VirtualHostRegistry virtualHostRegistry =
mock(VirtualHostRegistry.class);
StatisticsGatherer statisticsGatherer = mock(StatisticsGatherer.class);
SecurityManager securityManager = mock(SecurityManager.class);
- Map<String, VirtualHostConfiguration> configurations = new
HashMap<String, VirtualHostConfiguration>();
- VirtualHostRecoverer recoverer = new
VirtualHostRecoverer(virtualHostRegistry, statisticsGatherer, securityManager,
configurations);
+ VirtualHostRecoverer recoverer = new
VirtualHostRecoverer(virtualHostRegistry, statisticsGatherer, securityManager);
ConfigurationEntry entry = mock(ConfigurationEntry.class);
Broker parent = mock(Broker.class);
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHost.NAME, getName());
when(entry.getAttributes()).thenReturn(attributes);
- configurations.put(getName(), mock(VirtualHostConfiguration.class));
VirtualHost host = recoverer.create(null, entry, parent);
Modified:
qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java?rev=1408332&r1=1408331&r2=1408332&view=diff
==============================================================================
---
qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
(original)
+++
qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
Mon Nov 12 15:49:55 2012
@@ -49,7 +49,8 @@ public class Asserts
{
assertNotNull("Virtualhost " + virtualHostName + " data are not
found", virtualHost);
assertAttributesPresent(virtualHost, VirtualHost.AVAILABLE_ATTRIBUTES,
VirtualHost.TIME_TO_LIVE,
- VirtualHost.CREATED, VirtualHost.UPDATED,
VirtualHost.SUPPORTED_QUEUE_TYPES, VirtualHost.STORE_CONFIGURATION);
+ VirtualHost.CREATED, VirtualHost.UPDATED,
VirtualHost.SUPPORTED_QUEUE_TYPES, VirtualHost.STORE_CONFIGURATION,
+ VirtualHost.CONFIGURATION);
assertEquals("Unexpected value of attribute " + VirtualHost.NAME,
virtualHostName, virtualHost.get(VirtualHost.NAME));
assertNotNull("Unexpected value of attribute " + VirtualHost.ID,
virtualHost.get(VirtualHost.ID));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]