You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2012/12/12 18:43:25 UTC

svn commit: r1420874 - in /qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src: main/java/org/apache/qpid/server/configuration/ main/java/org/apache/qpid/server/configuration/startup/ main/java/org/apache/qpid/server/model/adapter/ test/jav...

Author: orudyy
Date: Wed Dec 12 17:43:22 2012
New Revision: 1420874

URL: http://svn.apache.org/viewvc?rev=1420874&view=rev
Log:
QPID-4390: Move virtual host configuration creation into virtual host adapter

Modified:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.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/model/adapter/BrokerAdapter.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.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/VirtualHostConfiguration.java?rev=1420874&r1=1420873&r2=1420874&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java Wed Dec 12 17:43:22 2012
@@ -23,11 +23,13 @@ package org.apache.qpid.server.configura
 import org.apache.commons.configuration.CompositeConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
 
 import org.apache.qpid.server.configuration.plugins.AbstractConfiguration;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.store.MemoryMessageStore;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -47,6 +49,35 @@ public class VirtualHostConfiguration ex
         setConfiguration(config);
     }
 
+    public VirtualHostConfiguration(String name, File configurationFile, Broker broker) throws ConfigurationException
+    {
+        _name = name;
+        _broker = broker;
+        Configuration configuration = null;
+        if (configurationFile == null)
+        {
+            configuration = new XMLConfiguration();
+        }
+        else
+        {
+            Configuration virtualHostConfig = XmlConfigurationUtilities.parseConfig(configurationFile, null);
+
+            Configuration config = virtualHostConfig.subset("virtualhost." + XmlConfigurationUtilities.escapeTagName(name));
+            if (config.isEmpty())
+            {
+                // try to load virtual host configuration from 'name' element
+                config = virtualHostConfig.subset(XmlConfigurationUtilities.escapeTagName(name));
+                if (config.isEmpty())
+                {
+                    // fallback to the original configuration
+                    config = virtualHostConfig;
+                }
+            }
+            configuration = config;
+        }
+        setConfiguration(configuration);
+    }
+
     /**
      * Apply the given configuration to this VirtualHostConfiguration
      *

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=1420874&r1=1420873&r2=1420874&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 Wed Dec 12 17:43:22 2012
@@ -20,20 +20,9 @@
  */
 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.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.configuration.XmlConfigurationUtilities;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.VirtualHost;
@@ -54,45 +43,7 @@ public class VirtualHostRecoverer implem
     public VirtualHost create(RecovererProvider recovererProvider, ConfigurationEntry entry, ConfiguredObject... parents)
     {
         Broker broker = RecovererHelper.verifyOnlyBrokerIsParent(parents);
-        Map<String, Object> attributes = entry.getAttributes();
-        String name = getStringAttribute(VirtualHost.NAME, attributes);
-        String configuration = getStringAttribute(VirtualHost.CONFIGURATION, attributes, null);
-        Configuration conf = null;
-        if (configuration == null)
-        {
-            // TODO throw an exception
-            conf = new XMLConfiguration();
-        }
-        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);
-            }
-        }
-        // TODO: remove virtual host configuration
-        VirtualHostConfiguration virtualHostConfiguration = null;
-        try
-        {
-            virtualHostConfiguration = new VirtualHostConfiguration(name, conf, broker);
-        }
-        catch (ConfigurationException e)
-        {
-            throw new IllegalConfigurationException("Cannot create configuration for virtual host '" + name + "'");
-        }
-        return new VirtualHostAdapter(entry.getId(), broker, attributes, _brokerStatisticsGatherer, broker.getSecurityManager(),
-                virtualHostConfiguration);
+        return new VirtualHostAdapter(entry.getId(), entry.getAttributes(),broker, _brokerStatisticsGatherer);
     }
 
 }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.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/BrokerAdapter.java?rev=1420874&r1=1420873&r2=1420874&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Wed Dec 12 17:43:22 2012
@@ -213,8 +213,8 @@ public class BrokerAdapter extends Abstr
     private VirtualHost createVirtualHost(final Map<String, Object> attributes)
             throws AccessControlException, IllegalArgumentException
     {
-        final VirtualHostAdapter virtualHostAdapter = new VirtualHostAdapter(UUID.randomUUID(), this, attributes,
-                _statisticsGatherer, _securityManager, null);
+        final VirtualHostAdapter virtualHostAdapter = new VirtualHostAdapter(UUID.randomUUID(), attributes, this,
+                _statisticsGatherer);
 
         synchronized (_vhostAdapters)
         {

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.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/VirtualHostAdapter.java?rev=1420874&r1=1420873&r2=1420874&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java Wed Dec 12 17:43:22 2012
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.model.adapter;
 
+import java.io.File;
 import java.security.AccessControlException;
 import java.security.Principal;
 import java.util.ArrayList;
@@ -84,30 +85,20 @@ public final class VirtualHostAdapter ex
 
     private final Map<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter> _exchangeAdapters =
             new HashMap<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter>();
-
     private StatisticsAdapter _statistics;
-
     private final Broker _broker;
-
     private final List<VirtualHostAlias> _aliases = new ArrayList<VirtualHostAlias>();
-
     private final String _name;
-
-    private VirtualHostConfiguration _configuration;
-
+    private final String _configurationFile;
     private StatisticsGatherer _brokerStatisticsGatherer;
 
-    private SecurityManager _securityManager;
-
-    public VirtualHostAdapter(UUID id, Broker broker, Map<String, Object> attributes,
-            StatisticsGatherer brokerStatisticsGatherer, SecurityManager securityManager, VirtualHostConfiguration configuration)
+    public VirtualHostAdapter(UUID id, Map<String, Object> attributes, Broker broker, StatisticsGatherer brokerStatisticsGatherer)
     {
         super(id);
         _broker = broker;
         _name = (String)attributes.get(NAME);
-        _configuration = configuration;
+        _configurationFile = (String)attributes.get(CONFIGURATION);
         _brokerStatisticsGatherer = brokerStatisticsGatherer;
-        _securityManager = securityManager;
         addParent(Broker.class, broker);
     }
 
@@ -902,11 +893,12 @@ public final class VirtualHostAdapter ex
             VirtualHostRegistry virtualHostRegistry = _broker.getVirtualHostRegistry();
             try
             {
-                _virtualHost = new VirtualHostImpl(virtualHostRegistry, _brokerStatisticsGatherer, _securityManager, _configuration);
+                VirtualHostConfiguration configuration = new VirtualHostConfiguration(_name, new File(_configurationFile) , _broker);
+                _virtualHost = new VirtualHostImpl(_broker.getVirtualHostRegistry(), _brokerStatisticsGatherer, _broker.getSecurityManager(), configuration);
             }
             catch (Exception e)
             {
-               throw new RuntimeException("Failed to create virtual host", e);
+               throw new RuntimeException("Failed to create virtual host " + _name, e);
             }
 
             virtualHostRegistry.registerVirtualHost(_virtualHost);

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.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/VirtualHostConfigurationTest.java?rev=1420874&r1=1420873&r2=1420874&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java Wed Dec 12 17:43:22 2012
@@ -79,7 +79,7 @@ public class VirtualHostConfigurationTes
 
     private VirtualHost createVirtualHost(String hostName) throws Exception
     {
-        Configuration config = getConfigXml().subset("virtualhosts.virtualhost." + VirtualHostConfiguration.escapeTagName(hostName));
+        Configuration config = getConfigXml().subset("virtualhosts.virtualhost." + XmlConfigurationUtilities.escapeTagName(hostName));
         VirtualHostConfiguration virtualHostConfiguration = new VirtualHostConfiguration(hostName, config, _broker);
         return BrokerTestHelper.createVirtualHost(virtualHostConfiguration, _virtualHostRegistry);
     }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java?rev=1420874&r1=1420873&r2=1420874&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java Wed Dec 12 17:43:22 2012
@@ -21,15 +21,15 @@
 package org.apache.qpid.server.virtualhost;
 
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 import org.apache.commons.configuration.ConfigurationException;
 
-import org.apache.qpid.server.configuration.ConfigurationEntry;
-import org.apache.qpid.server.configuration.startup.VirtualHostRecoverer;
+import org.apache.qpid.server.configuration.VirtualHostConfiguration;
+
 import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.stats.StatisticsGatherer;
 import org.apache.qpid.server.store.MemoryMessageStore;
 import org.apache.qpid.server.util.BrokerTestHelper;
@@ -39,9 +39,6 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
 
 public class VirtualHostImplTest extends QpidTestCase
 {
@@ -100,15 +97,11 @@ public class VirtualHostImplTest extends
         }
         catch (RuntimeException e)
         {
-            // PASS
-            assertEquals("Failed to create virtual host", e.getMessage());
-
             assertNotNull(e.getCause());
-            assertNotNull(e.getCause().getCause());
 
-            assertEquals(ConfigurationException.class, e.getCause().getCause().getClass());
+            assertEquals(ConfigurationException.class, e.getCause().getClass());
 
-            Throwable configException = e.getCause().getCause();
+            Throwable configException = e.getCause();
             assertEquals("Illegal attempt to bind queue '" + queueName + "' to the default exchange with a key other than the queue name: " + customBinding, configException.getMessage());
         }
     }
@@ -148,15 +141,11 @@ public class VirtualHostImplTest extends
         }
         catch (RuntimeException e)
         {
-            // PASS
-            assertEquals("Failed to create virtual host", e.getMessage());
-
             assertNotNull(e.getCause());
-            assertNotNull(e.getCause().getCause());
 
-            assertEquals(ConfigurationException.class, e.getCause().getCause().getClass());
+            assertEquals(ConfigurationException.class, e.getCause().getClass());
 
-            Throwable configException = e.getCause().getCause();
+            Throwable configException = e.getCause();
             assertEquals("Attempt to bind queue '" + queueName + "' to unknown exchange:" + exchangeName, configException.getMessage());
         }
     }
@@ -189,30 +178,14 @@ public class VirtualHostImplTest extends
 
     private VirtualHost createVirtualHost(String vhostName, File config) throws Exception
     {
-        recoverAndStartVirtualHost(vhostName, config);
-        return _virtualHostRegistry.getVirtualHost(vhostName);
-    }
-
-    private void recoverAndStartVirtualHost(String vhostName, File config)
-    {
-        // broker mock object with security manager
         Broker broker = BrokerTestHelper.createBrokerMock();
         _virtualHostRegistry = broker.getVirtualHostRegistry();
 
-        // configuration entry
-        Map<String, Object> attributes = new HashMap<String, Object>();
-        attributes.put(org.apache.qpid.server.model.VirtualHost.NAME, vhostName);
-        attributes.put(org.apache.qpid.server.model.VirtualHost.CONFIGURATION, config.getAbsoluteFile());
-        ConfigurationEntry entry = mock(ConfigurationEntry.class);
-        when(entry.getId()).thenReturn(UUID.randomUUID());
-        when(entry.getAttributes()).thenReturn(attributes);
-
-        // recovering
-        VirtualHostRecoverer recovever = new VirtualHostRecoverer(mock(StatisticsGatherer.class));
-        org.apache.qpid.server.model.VirtualHost model= recovever.create(null, entry, broker);
+        VirtualHostConfiguration configuration = new  VirtualHostConfiguration(vhostName, config, broker);
+        VirtualHost host = new VirtualHostImpl(_virtualHostRegistry, mock(StatisticsGatherer.class), new SecurityManager(null), configuration);
+        _virtualHostRegistry.registerVirtualHost(host);
 
-        // starting
-        model.setDesiredState(org.apache.qpid.server.model.State.INITIALISING, org.apache.qpid.server.model.State.ACTIVE);
+        return host;
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org