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 2013/02/19 10:35:33 UTC

svn commit: r1447646 [9/16] - in /qpid/trunk/qpid/java: ./ bdbstore/ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/ bdbstore/src/main/java/org/apache/qpid/serv...

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java Tue Feb 19 09:35:28 2013
@@ -20,44 +20,39 @@
  */
 package org.apache.qpid.server.registry;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.log4j.Logger;
-import org.apache.qpid.server.logging.*;
+import java.util.Collection;
+import java.util.Timer;
+import java.util.TimerTask;
 
+import org.apache.log4j.Logger;
 import org.apache.qpid.common.Closeable;
 import org.apache.qpid.common.QpidProperties;
-import org.apache.qpid.server.configuration.ServerConfiguration;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
+import org.apache.qpid.server.configuration.BrokerProperties;
+import org.apache.qpid.server.configuration.ConfigurationEntryStore;
+import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
+import org.apache.qpid.server.configuration.RecovererProvider;
+import org.apache.qpid.server.configuration.startup.DefaultRecovererProvider;
+import org.apache.qpid.server.logging.CompositeStartupMessageLogger;
+import org.apache.qpid.server.logging.Log4jMessageLogger;
+import org.apache.qpid.server.logging.LogActor;
+import org.apache.qpid.server.logging.LogRecorder;
+import org.apache.qpid.server.logging.RootMessageLogger;
+import org.apache.qpid.server.logging.SystemOutMessageLogger;
 import org.apache.qpid.server.logging.actors.AbstractActor;
 import org.apache.qpid.server.logging.actors.BrokerActor;
 import org.apache.qpid.server.logging.actors.CurrentActor;
+import org.apache.qpid.server.logging.actors.GenericActor;
 import org.apache.qpid.server.logging.messages.BrokerMessages;
 import org.apache.qpid.server.logging.messages.VirtualHostMessages;
-import org.apache.qpid.server.management.plugin.ManagementPlugin;
 import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.adapter.BrokerAdapter;
-import org.apache.qpid.server.plugin.GroupManagerFactory;
-import org.apache.qpid.server.plugin.ManagementFactory;
-import org.apache.qpid.server.plugin.QpidServiceLoader;
-import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.security.SubjectCreator;
-import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.apache.qpid.server.security.auth.manager.AuthenticationManagerRegistry;
-import org.apache.qpid.server.security.auth.manager.IAuthenticationManagerRegistry;
-import org.apache.qpid.server.security.group.GroupManager;
-import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.stats.StatisticsCounter;
-import org.apache.qpid.server.transport.QpidAcceptor;
+import org.apache.qpid.server.stats.StatisticsGatherer;
 import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
 
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-
 
 /**
  * An abstract application registry that provides access to configuration information and handles the
@@ -69,307 +64,86 @@ public class ApplicationRegistry impleme
 {
     private static final Logger _logger = Logger.getLogger(ApplicationRegistry.class);
 
-    private static AtomicReference<IApplicationRegistry> _instance = new AtomicReference<IApplicationRegistry>(null);
-
-    private final ServerConfiguration _configuration;
-
-    private final Map<InetSocketAddress, QpidAcceptor> _acceptors =
-            Collections.synchronizedMap(new HashMap<InetSocketAddress, QpidAcceptor>());
-
-    private IAuthenticationManagerRegistry _authenticationManagerRegistry;
-
-    private final VirtualHostRegistry _virtualHostRegistry = new VirtualHostRegistry(this);
-
-    private SecurityManager _securityManager;
+    private final VirtualHostRegistry _virtualHostRegistry = new VirtualHostRegistry();
 
     private volatile RootMessageLogger _rootMessageLogger;
 
-    private CompositeStartupMessageLogger _startupMessageLogger;
-
     private Broker _broker;
 
     private Timer _reportingTimer;
     private StatisticsCounter _messagesDelivered, _dataDelivered, _messagesReceived, _dataReceived;
 
-    private final List<PortBindingListener> _portBindingListeners = new ArrayList<PortBindingListener>();
-
-    private int _httpManagementPort = -1, _httpsManagementPort = -1;
-
     private LogRecorder _logRecorder;
 
-    private List<IAuthenticationManagerRegistry.RegistryChangeListener> _authManagerChangeListeners =
-            new ArrayList<IAuthenticationManagerRegistry.RegistryChangeListener>();
-
-    private List<GroupManagerChangeListener> _groupManagerChangeListeners =
-            new ArrayList<GroupManagerChangeListener>();
-
-    private List<GroupManager> _groupManagerList = new ArrayList<GroupManager>();
-
-    private QpidServiceLoader<GroupManagerFactory> _groupManagerServiceLoader = new QpidServiceLoader<GroupManagerFactory>();
-
-    private final List<ManagementPlugin> _managmentInstanceList = new ArrayList<ManagementPlugin>();
-
-    public Map<InetSocketAddress, QpidAcceptor> getAcceptors()
-    {
-        synchronized (_acceptors)
-        {
-            return new HashMap<InetSocketAddress, QpidAcceptor>(_acceptors);
-        }
-    }
-
-    protected void setSecurityManager(SecurityManager securityManager)
-    {
-        _securityManager = securityManager;
-    }
+    private ConfigurationEntryStore _store;
+    private TaskExecutor _taskExecutor;
 
     protected void setRootMessageLogger(RootMessageLogger rootMessageLogger)
     {
         _rootMessageLogger = rootMessageLogger;
     }
 
-    protected CompositeStartupMessageLogger getStartupMessageLogger()
-    {
-        return _startupMessageLogger;
-    }
-
-    protected void setStartupMessageLogger(CompositeStartupMessageLogger startupMessageLogger)
+    public ApplicationRegistry(ConfigurationEntryStore store)
     {
-        _startupMessageLogger = startupMessageLogger;
-    }
-
-    public static void initialise(IApplicationRegistry instance) throws Exception
-    {
-        if(instance == null)
-        {
-            throw new IllegalArgumentException("ApplicationRegistry instance must not be null");
-        }
-
-        if(!_instance.compareAndSet(null, instance))
-        {
-            throw new IllegalStateException("An ApplicationRegistry is already initialised");
-        }
-
-        _logger.info("Initialising Application Registry(" + instance + ")");
-
-
-        try
-        {
-            instance.initialise();
-        }
-        catch (Exception e)
-        {
-            _instance.set(null);
-
-            //remove the Broker instance, then re-throw
-
-            throw e;
-        }
-    }
-
-    public static boolean isConfigured()
-    {
-        return _instance.get() != null;
-    }
-
-    public static void remove()
-    {
-        IApplicationRegistry instance = _instance.getAndSet(null);
-        try
-        {
-            if (instance != null)
-            {
-                if (_logger.isInfoEnabled())
-                {
-                    _logger.info("Shutting down ApplicationRegistry(" + instance + ")");
-                }
-                instance.close();
-            }
-        }
-        catch (Exception e)
-        {
-            _logger.error("Error shutting down Application Registry(" + instance + "): " + e, e);
-        }
-    }
-
-    public ApplicationRegistry(ServerConfiguration configuration)
-    {
-        _configuration = configuration;
+        _store = store;
+        initialiseStatistics();
     }
 
     public void initialise() throws Exception
     {
+        // Create the RootLogger to be used during broker operation
+        boolean statusUpdatesEnabled = Boolean.parseBoolean(System.getProperty(BrokerProperties.PROPERTY_STATUS_UPDATES, "true"));
+        _rootMessageLogger = new Log4jMessageLogger(statusUpdatesEnabled);
+
         _logRecorder = new LogRecorder();
-        //Create the RootLogger to be used during broker operation
-        _rootMessageLogger = new Log4jMessageLogger(_configuration);
 
         //Create the composite (log4j+SystemOut MessageLogger to be used during startup
         RootMessageLogger[] messageLoggers = {new SystemOutMessageLogger(), _rootMessageLogger};
-        _startupMessageLogger = new CompositeStartupMessageLogger(messageLoggers);
+        CompositeStartupMessageLogger startupMessageLogger = new CompositeStartupMessageLogger(messageLoggers);
 
-        BrokerActor actor = new BrokerActor(_startupMessageLogger);
-        CurrentActor.setDefault(actor);
+        BrokerActor actor = new BrokerActor(startupMessageLogger);
         CurrentActor.set(actor);
-
+        CurrentActor.setDefault(actor);
+        GenericActor.setDefaultMessageLogger(_rootMessageLogger);
         try
         {
-            initialiseStatistics();
-
-            if(_configuration.getHTTPManagementEnabled())
-            {
-                _httpManagementPort = _configuration.getHTTPManagementPort();
-            }
-            if (_configuration.getHTTPSManagementEnabled())
-            {
-                _httpsManagementPort = _configuration.getHTTPSManagementPort();
-            }
-
-            _broker = new BrokerAdapter(this);
-
-            _configuration.initialise();
             logStartupMessages(CurrentActor.get());
 
-            // Management needs to be registered so that JMXManagement.childAdded can create optional management objects
-            createAndStartManagementPlugins(_configuration, _broker);
+            _taskExecutor = new TaskExecutor();
+            _taskExecutor.start();
 
-            _securityManager = new SecurityManager(_configuration.getConfig());
+            RecovererProvider provider = new DefaultRecovererProvider((StatisticsGatherer)this, _virtualHostRegistry, _logRecorder, _rootMessageLogger, _taskExecutor);
+            ConfiguredObjectRecoverer<? extends ConfiguredObject> brokerRecoverer =  provider.getRecoverer(Broker.class.getSimpleName());
+            _broker = (Broker) brokerRecoverer.create(provider, _store.getRootEntry());
 
-            _groupManagerList = createGroupManagers(_configuration);
+            _virtualHostRegistry.setDefaultVirtualHostName((String)_broker.getAttribute(Broker.DEFAULT_VIRTUAL_HOST));
 
-            _authenticationManagerRegistry = createAuthenticationManagerRegistry(_configuration, new GroupPrincipalAccessor(_groupManagerList));
+            initialiseStatisticsReporting();
 
-            if(!_authManagerChangeListeners.isEmpty())
-            {
-                for(IAuthenticationManagerRegistry.RegistryChangeListener listener : _authManagerChangeListeners)
-                {
+            // starting the broker
+            _broker.setDesiredState(State.INITIALISING, State.ACTIVE);
 
-                    _authenticationManagerRegistry.addRegistryChangeListener(listener);
-                    for(AuthenticationManager authMgr : _authenticationManagerRegistry.getAvailableAuthenticationManagers().values())
-                    {
-                        listener.authenticationManagerRegistered(authMgr);
-                    }
-                }
-                _authManagerChangeListeners.clear();
-            }
+            CurrentActor.get().message(BrokerMessages.READY());
         }
         finally
         {
             CurrentActor.remove();
         }
 
-        CurrentActor.set(new BrokerActor(_rootMessageLogger));
-        try
-        {
-            initialiseVirtualHosts();
-            initialiseStatisticsReporting();
-        }
-        finally
-        {
-            // Startup complete, so pop the current actor
-            CurrentActor.remove();
-        }
+        CurrentActor.setDefault(new BrokerActor(_rootMessageLogger));
     }
 
-    private void createAndStartManagementPlugins(ServerConfiguration configuration, Broker broker) throws Exception
+    private void initialiseStatisticsReporting()
     {
-        QpidServiceLoader<ManagementFactory> factories = new QpidServiceLoader<ManagementFactory>();
-        for (ManagementFactory managementFactory: factories.instancesOf(ManagementFactory.class))
-        {
-            ManagementPlugin managementPlugin = managementFactory.createInstance(configuration, broker);
-            if(managementPlugin != null)
-            {
-                try
-                {
-                    managementPlugin.start();
-                }
-                catch(Exception e)
-                {
-                    _logger.error("Management plugin " + managementPlugin.getClass().getSimpleName() + " failed to start normally, stopping it now", e);
-                    managementPlugin.stop();
-                    throw e;
-                }
-
-                _managmentInstanceList.add(managementPlugin);
-            }
-        }
-
-        if (_logger.isDebugEnabled())
-        {
-            _logger.debug("Configured " + _managmentInstanceList.size() + " management instance(s)");
-        }
-    }
-
-    private void closeAllManagementPlugins()
-    {
-        for (ManagementPlugin managementPlugin : _managmentInstanceList)
-        {
-            try
-            {
-                managementPlugin.stop();
-            }
-            catch (Exception e)
-            {
-                _logger.error("Exception thrown whilst stopping management plugin " + managementPlugin.getClass().getSimpleName(), e);
-            }
-        }
-    }
-
-    private List<GroupManager> createGroupManagers(ServerConfiguration configuration) throws ConfigurationException
-    {
-        List<GroupManager> groupManagerList = new ArrayList<GroupManager>();
-        Configuration securityConfig = configuration.getConfig().subset("security");
-
-        for(GroupManagerFactory factory : _groupManagerServiceLoader.instancesOf(GroupManagerFactory.class))
-        {
-            GroupManager groupManager = factory.createInstance(securityConfig);
-            if (groupManager != null)
-            {
-                groupManagerList.add(groupManager);
-                for(GroupManagerChangeListener listener : _groupManagerChangeListeners)
-                {
-                    listener.groupManagerRegistered(groupManager);
-                }
-            }
-        }
-
-        if (_logger.isDebugEnabled())
-        {
-            _logger.debug("Configured " + groupManagerList.size() + " group manager(s)");
-        }
-        return groupManagerList;
-    }
-
-    protected IAuthenticationManagerRegistry createAuthenticationManagerRegistry(ServerConfiguration configuration, GroupPrincipalAccessor groupPrincipalAccessor)
-            throws ConfigurationException
-    {
-        return new AuthenticationManagerRegistry(configuration, groupPrincipalAccessor);
-    }
-
-    protected void initialiseVirtualHosts() throws Exception
-    {
-        for (String name : _configuration.getVirtualHosts())
-        {
-            createVirtualHost(_configuration.getVirtualHostConfig(name));
-        }
-        getVirtualHostRegistry().setDefaultVirtualHostName(_configuration.getDefaultVirtualHost());
-    }
-
-    public void initialiseStatisticsReporting()
-    {
-        long report = _configuration.getStatisticsReportingPeriod() * 1000; // convert to ms
-        final boolean broker = _configuration.isStatisticsGenerationBrokerEnabled();
-        final boolean virtualhost = _configuration.isStatisticsGenerationVirtualhostsEnabled();
-        final boolean reset = _configuration.isStatisticsReportResetEnabled();
+        long report = ((Number)_broker.getAttribute(Broker.STATISTICS_REPORTING_PERIOD)).intValue() * 1000; // convert to ms
+        final boolean reset = (Boolean)_broker.getAttribute(Broker.STATISTICS_REPORTING_RESET_ENABLED);
 
         /* add a timer task to report statistics if generation is enabled for broker or virtualhosts */
-        if (report > 0L && (broker || virtualhost))
+        if (report > 0L)
         {
             _reportingTimer = new Timer("Statistics-Reporting", true);
-
-
-
-            _reportingTimer.scheduleAtFixedRate(new StatisticsReportingTask(broker, virtualhost, reset),
-                                                report / 2,
-                                                report);
+            StatisticsReportingTask task = new StatisticsReportingTask(reset, _rootMessageLogger);
+            _reportingTimer.scheduleAtFixedRate(task, report / 2, report);
         }
     }
 
@@ -378,76 +152,62 @@ public class ApplicationRegistry impleme
         private final int DELIVERED = 0;
         private final int RECEIVED = 1;
 
-        private boolean _broker;
-        private boolean _virtualhost;
-        private boolean _reset;
-
+        private final boolean _reset;
+        private final RootMessageLogger _logger;
 
-        public StatisticsReportingTask(boolean broker, boolean virtualhost, boolean reset)
+        public StatisticsReportingTask(boolean reset, RootMessageLogger logger)
         {
-            _broker = broker;
-            _virtualhost = virtualhost;
             _reset = reset;
+            _logger = logger;
         }
 
         public void run()
         {
-            CurrentActor.set(new AbstractActor(ApplicationRegistry.getInstance().getRootMessageLogger()) {
+            CurrentActor.set(new AbstractActor(_logger)
+            {
                 public String getLogMessage()
                 {
                     return "[" + Thread.currentThread().getName() + "] ";
                 }
             });
-
-            if (_broker)
+            try
             {
                 CurrentActor.get().message(BrokerMessages.STATS_DATA(DELIVERED, _dataDelivered.getPeak() / 1024.0, _dataDelivered.getTotal()));
                 CurrentActor.get().message(BrokerMessages.STATS_MSGS(DELIVERED, _messagesDelivered.getPeak(), _messagesDelivered.getTotal()));
                 CurrentActor.get().message(BrokerMessages.STATS_DATA(RECEIVED, _dataReceived.getPeak() / 1024.0, _dataReceived.getTotal()));
                 CurrentActor.get().message(BrokerMessages.STATS_MSGS(RECEIVED, _messagesReceived.getPeak(), _messagesReceived.getTotal()));
-            }
+                Collection<VirtualHost>  hosts = _virtualHostRegistry.getVirtualHosts();
 
-            if (_virtualhost)
-            {
-                for (VirtualHost vhost : getVirtualHostRegistry().getVirtualHosts())
+                if (hosts.size() > 1)
                 {
-                    String name = vhost.getName();
-                    StatisticsCounter dataDelivered = vhost.getDataDeliveryStatistics();
-                    StatisticsCounter messagesDelivered = vhost.getMessageDeliveryStatistics();
-                    StatisticsCounter dataReceived = vhost.getDataReceiptStatistics();
-                    StatisticsCounter messagesReceived = vhost.getMessageReceiptStatistics();
-
-                    CurrentActor.get().message(VirtualHostMessages.STATS_DATA(name, DELIVERED, dataDelivered.getPeak() / 1024.0, dataDelivered.getTotal()));
-                    CurrentActor.get().message(VirtualHostMessages.STATS_MSGS(name, DELIVERED, messagesDelivered.getPeak(), messagesDelivered.getTotal()));
-                    CurrentActor.get().message(VirtualHostMessages.STATS_DATA(name, RECEIVED, dataReceived.getPeak() / 1024.0, dataReceived.getTotal()));
-                    CurrentActor.get().message(VirtualHostMessages.STATS_MSGS(name, RECEIVED, messagesReceived.getPeak(), messagesReceived.getTotal()));
+                    for (VirtualHost vhost : hosts)
+                    {
+                        String name = vhost.getName();
+                        StatisticsCounter dataDelivered = vhost.getDataDeliveryStatistics();
+                        StatisticsCounter messagesDelivered = vhost.getMessageDeliveryStatistics();
+                        StatisticsCounter dataReceived = vhost.getDataReceiptStatistics();
+                        StatisticsCounter messagesReceived = vhost.getMessageReceiptStatistics();
+
+                        CurrentActor.get().message(VirtualHostMessages.STATS_DATA(name, DELIVERED, dataDelivered.getPeak() / 1024.0, dataDelivered.getTotal()));
+                        CurrentActor.get().message(VirtualHostMessages.STATS_MSGS(name, DELIVERED, messagesDelivered.getPeak(), messagesDelivered.getTotal()));
+                        CurrentActor.get().message(VirtualHostMessages.STATS_DATA(name, RECEIVED, dataReceived.getPeak() / 1024.0, dataReceived.getTotal()));
+                        CurrentActor.get().message(VirtualHostMessages.STATS_MSGS(name, RECEIVED, messagesReceived.getPeak(), messagesReceived.getTotal()));
+                    }
                 }
-            }
 
-            if (_reset)
+                if (_reset)
+                {
+                    resetStatistics();
+                }
+            }
+            catch(Exception e)
             {
-                resetStatistics();
+                ApplicationRegistry._logger.warn("Unexpected exception occured while reporting the statistics", e);
+            }
+            finally
+            {
+                CurrentActor.remove();
             }
-
-            CurrentActor.remove();
-        }
-    }
-
-    /**
-     * Get the ApplicationRegistry
-     * @return the IApplicationRegistry instance
-     * @throws IllegalStateException if no registry instance has been initialised.
-     */
-    public static IApplicationRegistry getInstance() throws IllegalStateException
-    {
-        IApplicationRegistry iApplicationRegistry = _instance.get();
-        if (iApplicationRegistry == null)
-        {
-            throw new IllegalStateException("No ApplicationRegistry has been initialised");
-        }
-        else
-        {
-            return iApplicationRegistry;
         }
     }
 
@@ -478,7 +238,7 @@ public class ApplicationRegistry impleme
         }
 
         //Set the Actor for Broker Shutdown
-        CurrentActor.set(new BrokerActor(getRootMessageLogger()));
+        CurrentActor.set(new BrokerActor(_rootMessageLogger));
         try
         {
             //Stop Statistics Reporting
@@ -487,128 +247,34 @@ public class ApplicationRegistry impleme
                 _reportingTimer.cancel();
             }
 
-            //Stop incoming connections
-            unbind();
+            if (_broker != null)
+            {
+                _broker.setDesiredState(_broker.getActualState(), State.STOPPED);
+            }
 
             //Shutdown virtualhosts
             close(_virtualHostRegistry);
 
-            close(_authenticationManagerRegistry);
+            if (_taskExecutor != null)
+            {
+                _taskExecutor.stop();
+            }
 
             CurrentActor.get().message(BrokerMessages.STOPPED());
 
             _logRecorder.closeLogRecorder();
 
-            closeAllManagementPlugins();
         }
         finally
         {
-            CurrentActor.remove();
-        }
-    }
-
-    private void unbind()
-    {
-        List<QpidAcceptor> removedAcceptors = new ArrayList<QpidAcceptor>();
-        synchronized (_acceptors)
-        {
-            for (InetSocketAddress bindAddress : _acceptors.keySet())
-            {
-                QpidAcceptor acceptor = _acceptors.get(bindAddress);
-
-                removedAcceptors.add(acceptor);
-                try
-                {
-                    acceptor.getNetworkTransport().close();
-                }
-                catch (Throwable e)
-                {
-                    _logger.error("Unable to close network driver due to:" + e.getMessage());
-                }
-
-               CurrentActor.get().message(BrokerMessages.SHUTTING_DOWN(acceptor.toString(), bindAddress.getPort()));
-            }
-        }
-        synchronized (_portBindingListeners)
-        {
-            for(QpidAcceptor acceptor : removedAcceptors)
+            if (_taskExecutor != null)
             {
-                for(PortBindingListener listener : _portBindingListeners)
-                {
-                    listener.unbound(acceptor);
-                }
-            }
-        }
-    }
-
-    public ServerConfiguration getConfiguration()
-    {
-        return _configuration;
-    }
-
-    public void addAcceptor(InetSocketAddress bindAddress, QpidAcceptor acceptor)
-    {
-        synchronized (_acceptors)
-        {
-            _acceptors.put(bindAddress, acceptor);
-        }
-        synchronized (_portBindingListeners)
-        {
-            for(PortBindingListener listener : _portBindingListeners)
-            {
-                listener.bound(acceptor, bindAddress);
+                _taskExecutor.stopImmediately();
             }
+            CurrentActor.remove();
         }
-    }
-
-    public VirtualHostRegistry getVirtualHostRegistry()
-    {
-        return _virtualHostRegistry;
-    }
-
-    public SecurityManager getSecurityManager()
-    {
-        return _securityManager;
-    }
-
-    @Override
-    public SubjectCreator getSubjectCreator(SocketAddress localAddress)
-    {
-        return _authenticationManagerRegistry.getSubjectCreator(localAddress);
-    }
-
-    @Override
-    public IAuthenticationManagerRegistry getAuthenticationManagerRegistry()
-    {
-        return _authenticationManagerRegistry;
-    }
-
-    @Override
-    public List<GroupManager> getGroupManagers()
-    {
-        return _groupManagerList;
-    }
-
-    public RootMessageLogger getRootMessageLogger()
-    {
-        return _rootMessageLogger;
-    }
-
-    public RootMessageLogger getCompositeStartupMessageLogger()
-    {
-        return _startupMessageLogger;
-    }
-
-    public UUID getBrokerId()
-    {
-        return getBroker().getId();
-    }
-
-    public VirtualHost createVirtualHost(final VirtualHostConfiguration vhostConfig) throws Exception
-    {
-        VirtualHostImpl virtualHost = new VirtualHostImpl(this, vhostConfig);
-        _virtualHostRegistry.registerVirtualHost(virtualHost);
-        return virtualHost;
+        _store = null;
+        _broker = null;
     }
 
     public void registerMessageDelivered(long messageSize)
@@ -677,66 +343,4 @@ public class ApplicationRegistry impleme
         logActor.message(BrokerMessages.MAX_MEMORY(Runtime.getRuntime().maxMemory()));
     }
 
-    public Broker getBroker()
-    {
-        return _broker;
-    }
-
-    @Override
-    public void addPortBindingListener(PortBindingListener listener)
-    {
-        synchronized (_portBindingListeners)
-        {
-            _portBindingListeners.add(listener);
-        }
-    }
-
-
-    @Override
-    public boolean useHTTPManagement()
-    {
-        return _httpManagementPort != -1;
-    }
-
-    @Override
-    public int getHTTPManagementPort()
-    {
-        return _httpManagementPort;
-    }
-
-    @Override
-    public boolean useHTTPSManagement()
-    {
-        return _httpsManagementPort != -1;
-    }
-
-    @Override
-    public int getHTTPSManagementPort()
-    {
-        return _httpsManagementPort;
-    }
-
-    public LogRecorder getLogRecorder()
-    {
-        return _logRecorder;
-    }
-
-    @Override
-    public void addAuthenticationManagerRegistryChangeListener(IAuthenticationManagerRegistry.RegistryChangeListener registryChangeListener)
-    {
-        if(_authenticationManagerRegistry == null)
-        {
-            _authManagerChangeListeners.add(registryChangeListener);
-        }
-        else
-        {
-            _authenticationManagerRegistry.addRegistryChangeListener(registryChangeListener);
-        }
-    }
-
-    @Override
-    public void addGroupManagerChangeListener(GroupManagerChangeListener groupManagerChangeListener)
-    {
-        _groupManagerChangeListeners.add(groupManagerChangeListener);
-    }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java Tue Feb 19 09:35:28 2013
@@ -20,25 +20,7 @@
  */
 package org.apache.qpid.server.registry;
 
-import org.apache.qpid.server.configuration.ServerConfiguration;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
-import org.apache.qpid.server.logging.RootMessageLogger;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.security.SubjectCreator;
-import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.apache.qpid.server.security.auth.manager.IAuthenticationManagerRegistry;
-import org.apache.qpid.server.security.group.GroupManager;
 import org.apache.qpid.server.stats.StatisticsGatherer;
-import org.apache.qpid.server.transport.QpidAcceptor;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
 
 public interface IApplicationRegistry extends StatisticsGatherer
 {
@@ -54,71 +36,4 @@ public interface IApplicationRegistry ex
      */
     void close();
 
-    /**
-     * Get the low level configuration. For use cases where the configured object approach is not required
-     * you can get the complete configuration information.
-     * @return a Commons Configuration instance
-     */
-    ServerConfiguration getConfiguration();
-
-    /**
-     * Get the SubjectCreator for the given socket address.
-     *
-     * @param address The (listening) socket address for which the AuthenticationManager is required
-     */
-    SubjectCreator getSubjectCreator(SocketAddress localAddress);
-
-    IAuthenticationManagerRegistry getAuthenticationManagerRegistry();
-
-    List<GroupManager> getGroupManagers();
-
-    VirtualHostRegistry getVirtualHostRegistry();
-
-    SecurityManager getSecurityManager();
-
-    RootMessageLogger getRootMessageLogger();
-
-    /**
-     * Register any acceptors for this registry
-     * @param bindAddress The address that the acceptor has been bound with
-     * @param acceptor The acceptor in use
-     */
-    void addAcceptor(InetSocketAddress bindAddress, QpidAcceptor acceptor);
-
-    public UUID getBrokerId();
-
-    Broker getBroker();
-
-    VirtualHost createVirtualHost(VirtualHostConfiguration vhostConfig) throws Exception;
-
-    void initialiseStatisticsReporting();
-
-    Map<InetSocketAddress, QpidAcceptor> getAcceptors();
-
-    void addPortBindingListener(PortBindingListener listener);
-
-    boolean useHTTPManagement();
-
-    int getHTTPManagementPort();
-
-    boolean useHTTPSManagement();
-
-    int getHTTPSManagementPort();
-
-    void addAuthenticationManagerRegistryChangeListener(IAuthenticationManagerRegistry.RegistryChangeListener registryChangeListener);
-
-    public interface PortBindingListener
-    {
-        public void bound(QpidAcceptor acceptor, InetSocketAddress bindAddress);
-        public void unbound(QpidAcceptor acceptor);
-
-    }
-
-    void addGroupManagerChangeListener(GroupManagerChangeListener groupManagerChangeListener);
-
-    public static interface GroupManagerChangeListener
-    {
-        void groupManagerRegistered(GroupManager groupManager);
-        void groupManagerUnregistered(GroupManager groupManager);
-    }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java Tue Feb 19 09:35:28 2013
@@ -18,8 +18,6 @@
  */
 package org.apache.qpid.server.security;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
 import org.apache.log4j.Logger;
 
 import org.apache.qpid.framing.AMQShortString;
@@ -122,21 +120,21 @@ public class SecurityManager
     /*
      * Used by the VirtualHost to allow deferring to the broker level security plugins if required.
      */
-    public SecurityManager(SecurityManager parent, Configuration config) throws ConfigurationException
+    public SecurityManager(SecurityManager parent, String aclFile)
     {
-        this(config);
+        this(aclFile);
 
         // our global plugins are the parent's host plugins
         _globalPlugins = parent._hostPlugins;
     }
 
-    public SecurityManager(Configuration config) throws ConfigurationException
+    public SecurityManager(String aclFile)
     {
-        Configuration securityConfig = config.subset("security");
-
+        Map<String, Object> attributes = new HashMap<String, Object>();
+        attributes.put("aclFile", aclFile);
         for (AccessControlFactory provider : (new QpidServiceLoader<AccessControlFactory>()).instancesOf(AccessControlFactory.class))
         {
-            AccessControl accessControl = provider.createInstance(securityConfig);
+            AccessControl accessControl = provider.createInstance(attributes);
             if(accessControl != null)
             {
                 addHostPlugin(accessControl);

Added: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java?rev=1447646&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java (added)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractPrincipalDatabaseAuthManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -0,0 +1,71 @@
+/*
+ * 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.security.auth.manager;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+
+/**
+ * Factory for {@link PrincipalDatabaseAuthenticationManager} objects configured
+ * with either the Plain or Base64MD5 digest {@link PrincipalDatabase}
+ * implementation.
+ */
+public abstract class AbstractPrincipalDatabaseAuthManagerFactory implements AuthenticationManagerFactory
+{
+    public static final String ATTRIBUTE_PATH = "path";
+
+    private static final Logger LOGGER = Logger.getLogger(AbstractPrincipalDatabaseAuthManagerFactory.class);
+
+    @Override
+    public AuthenticationManager createInstance(Map<String, Object> attributes)
+    {
+        if (attributes == null || !getType().equals(attributes.get(ATTRIBUTE_TYPE)))
+        {
+            return null;
+        }
+
+        String passwordFile = (String) attributes.get(ATTRIBUTE_PATH);
+        if (passwordFile == null)
+        {
+            LOGGER.warn("Password file path must not be null");
+            return null;
+        }
+
+        PrincipalDatabase principalDatabase = createPrincipalDatabase();
+        try
+        {
+            principalDatabase.setPasswordFile(passwordFile);
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException(e.getMessage(), e);
+        }
+
+        return new PrincipalDatabaseAuthenticationManager(principalDatabase);
+    }
+
+    abstract String getType();
+
+    abstract PrincipalDatabase createPrincipalDatabase();
+}

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -19,20 +19,22 @@
  */
 package org.apache.qpid.server.security.auth.manager;
 
-import org.apache.commons.configuration.Configuration;
+import java.util.Map;
+
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 
 public class AnonymousAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
+    public static final String PROVIDER_TYPE = AnonymousAuthenticationManager.class.getSimpleName();
+
     @Override
-    public AuthenticationManager createInstance(Configuration configuration)
+    public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (configuration.subset("anonymous-auth-manager").isEmpty())
+        if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
-            return null;
+            return new AnonymousAuthenticationManager();
         }
-
-        return new AnonymousAuthenticationManager();
+        return null;
     }
 
 }

Copied: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java (from r1447519, qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java?p2=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java&p1=qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java&r1=1447519&r2=1447646&rev=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -1,4 +1,5 @@
 /*
+ *
  * 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
@@ -15,25 +16,27 @@
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
+ *
  */
-package org.apache.qpid.systest.management.jmx;
+package org.apache.qpid.server.security.auth.manager;
 
 import org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-import org.apache.qpid.tools.security.Passwd;
 
-public class UserManagementWithBase64MD5PasswordsTest extends UserManagementTest
+public class Base64MD5PasswordFileAuthenticationManagerFactory extends AbstractPrincipalDatabaseAuthManagerFactory
 {
+    public static final String PROVIDER_TYPE = "Base64MD5PasswordFileAuthenticationProvider";
+
     @Override
-    protected Passwd createPasswordEncodingUtility()
+    String getType()
     {
-        return new Passwd();
+        return PROVIDER_TYPE;
     }
 
     @Override
-    protected Class<? extends PrincipalDatabase> getPrincipalDatabaseImplClass()
+    PrincipalDatabase createPrincipalDatabase()
     {
-        return Base64MD5PasswordFilePrincipalDatabase.class;
+        return new Base64MD5PasswordFilePrincipalDatabase();
     }
 
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -19,20 +19,22 @@
  */
 package org.apache.qpid.server.security.auth.manager;
 
-import org.apache.commons.configuration.Configuration;
+import java.util.Map;
+
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 
 public class ExternalAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
+    public static final String PROVIDER_TYPE = ExternalAuthenticationManager.class.getSimpleName();
+
     @Override
-    public AuthenticationManager createInstance(Configuration configuration)
+    public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (configuration.subset("external-auth-manager").isEmpty())
+        if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
-            return null;
+            return new ExternalAuthenticationManager();
         }
-
-        return new ExternalAuthenticationManager();
+        return null;
     }
 
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -19,19 +19,21 @@
  */
 package org.apache.qpid.server.security.auth.manager;
 
-import org.apache.commons.configuration.Configuration;
+import java.util.Map;
+
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 
 public class KerberosAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
+    public static final String PROVIDER_TYPE = KerberosAuthenticationManager.class.getSimpleName();
+
     @Override
-    public AuthenticationManager createInstance(Configuration configuration)
+    public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-        if (configuration.subset("kerberos-auth-manager").isEmpty())
+        if (attributes != null && PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
-            return null;
+            return new KerberosAuthenticationManager();
         }
-
-        return new KerberosAuthenticationManager();
+        return null;
     }
 }

Copied: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java (from r1447519, qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java?p2=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java&p1=qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java&r1=1447519&r2=1447646&rev=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -1,4 +1,5 @@
 /*
+ *
  * 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
@@ -15,25 +16,27 @@
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
+ *
  */
-package org.apache.qpid.systest.management.jmx;
+package org.apache.qpid.server.security.auth.manager;
 
-import org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-import org.apache.qpid.tools.security.Passwd;
 
-public class UserManagementWithBase64MD5PasswordsTest extends UserManagementTest
+public class PlainPasswordFileAuthenticationManagerFactory extends AbstractPrincipalDatabaseAuthManagerFactory
 {
+    public static final String PROVIDER_TYPE = "PlainPasswordFileAuthenticationProvider";
+
     @Override
-    protected Passwd createPasswordEncodingUtility()
+    String getType()
     {
-        return new Passwd();
+        return PROVIDER_TYPE;
     }
 
     @Override
-    protected Class<? extends PrincipalDatabase> getPrincipalDatabaseImplClass()
+    PrincipalDatabase createPrincipalDatabase()
     {
-        return Base64MD5PasswordFilePrincipalDatabase.class;
+        return new PlainPasswordFilePrincipalDatabase();
     }
 
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java Tue Feb 19 09:35:28 2013
@@ -50,8 +50,6 @@ import java.util.TreeMap;
  */
 public class PrincipalDatabaseAuthenticationManager implements AuthenticationManager
 {
-    public static final String PD_CLASS = "pd.class";
-    public static final String PD_PASSWORD_FILE = "pd.passwordFile";
 
     private static final Logger _logger = Logger.getLogger(PrincipalDatabaseAuthenticationManager.class);
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -19,32 +19,51 @@
  */
 package org.apache.qpid.server.security.auth.manager;
 
-import org.apache.commons.configuration.Configuration;
+import java.util.Map;
+
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 
 public class SimpleLDAPAuthenticationManagerFactory implements AuthenticationManagerFactory
 {
-
     private static final String DEFAULT_LDAP_CONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
 
+    public static final String PROVIDER_TYPE = SimpleLDAPAuthenticationManager.class.getSimpleName();
+
+    public static final String ATTRIBUTE_LDAP_CONTEXT_FACTORY = "ldapContextFactory";
+    public static final String ATTRIBUTE_SEARCH_FILTER = "searchFilter";
+    public static final String ATTRIBUTE_SEARCH_CONTEXT = "searchContext";
+    public static final String ATTRIBUTE_PROVIDER_AUTH_URL = "providerAuthUrl";
+    public static final String ATTRIBUTE_PROVIDER_SEARCH_URL = "providerSearchUrl";
+    public static final String ATTRIBUTE_PROVIDER_URL = "providerUrl";
+
     @Override
-    public AuthenticationManager createInstance(Configuration configuration)
+    public AuthenticationManager createInstance(Map<String, Object> attributes)
     {
-
-        final Configuration subset = configuration.subset("simple-ldap-auth-manager");
-        if(subset.isEmpty())
+        if (attributes == null || !PROVIDER_TYPE.equals(attributes.get(ATTRIBUTE_TYPE)))
         {
             return null;
         }
+        String providerUrl = (String) attributes.get(ATTRIBUTE_PROVIDER_URL);
+        String providerSearchUrl = (String) attributes.get(ATTRIBUTE_PROVIDER_SEARCH_URL);
+        if (providerSearchUrl == null)
+        {
+            providerSearchUrl = providerUrl;
+        }
+        String providerAuthUrl = (String) attributes.get(ATTRIBUTE_PROVIDER_AUTH_URL);
+        if (providerAuthUrl == null)
+        {
+            providerAuthUrl = providerUrl;
+        }
+        String searchContext = (String) attributes.get(ATTRIBUTE_SEARCH_CONTEXT);
+        String searchFilter = (String) attributes.get(ATTRIBUTE_SEARCH_FILTER);
+        String ldapContextFactory = (String) attributes.get(ATTRIBUTE_LDAP_CONTEXT_FACTORY);
+        if (ldapContextFactory == null)
+        {
+            ldapContextFactory = DEFAULT_LDAP_CONTEXT_FACTORY;
+        }
 
-        String providerUrl = configuration.getString("simple-ldap-auth-manager.provider-url");
-        String providerSearchUrl = configuration.getString("simple-ldap-auth-manager.provider-search-url", providerUrl);
-        String providerAuthUrl = configuration.getString("simple-ldap-auth-manager.provider-auth-url", providerUrl);
-        String searchContext = configuration.getString("simple-ldap-auth-manager.search-context");
-        String searchFilter = configuration.getString("simple-ldap-auth-manager.search-filter");
-        String ldapContextFactory = configuration.getString("simple-ldap-auth-manager.ldap-context-factory", DEFAULT_LDAP_CONTEXT_FACTORY);
-
-        return new SimpleLDAPAuthenticationManager(providerSearchUrl, providerAuthUrl, searchContext, searchFilter, ldapContextFactory);
+        return new SimpleLDAPAuthenticationManager(providerSearchUrl, providerAuthUrl, searchContext, searchFilter,
+                ldapContextFactory);
     }
 
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java Tue Feb 19 09:35:28 2013
@@ -22,7 +22,7 @@ package org.apache.qpid.server.security.
 
 import java.net.SocketAddress;
 
-import org.apache.qpid.server.registry.IApplicationRegistry;
+import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.SubjectCreator;
 import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
@@ -42,13 +42,13 @@ public class RMIPasswordAuthenticator im
     static final String CREDENTIALS_REQUIRED = "User details are required. " +
                         "Please ensure you are using an up to date management console to connect.";
 
-    private final IApplicationRegistry _appRegistry;
-    private final SocketAddress _socketAddress;
+    private final Broker _broker;
+    private final SocketAddress _address;
 
-    public RMIPasswordAuthenticator(IApplicationRegistry appRegistry, SocketAddress socketAddress)
+    public RMIPasswordAuthenticator(Broker broker, SocketAddress address)
     {
-        _appRegistry = appRegistry;
-        _socketAddress = socketAddress;
+        _broker = broker;
+        _address = address;
     }
 
     public Subject authenticate(Object credentials) throws SecurityException
@@ -94,10 +94,10 @@ public class RMIPasswordAuthenticator im
             throw new SecurityException(SHOULD_BE_NON_NULL);
         }
 
-        SubjectCreator subjectCreator = _appRegistry.getSubjectCreator(_socketAddress);
+        SubjectCreator subjectCreator = _broker.getSubjectCreator(_address);
         if (subjectCreator == null)
         {
-            throw new SecurityException("Can't get subject creator for " + _socketAddress);
+            throw new SecurityException("Can't get subject creator for " + _address);
         }
 
         final SubjectAuthenticationResult result = subjectCreator.authenticate(username, password);
@@ -121,7 +121,7 @@ public class RMIPasswordAuthenticator im
         SecurityManager.setThreadSubject(authenticatedSubject);
         try
         {
-            if (!_appRegistry.getSecurityManager().accessManagement())
+            if (!_broker.getSecurityManager().accessManagement())
             {
                 throw new SecurityException(USER_NOT_AUTHORISED_FOR_MANAGEMENT);
             }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManager.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManager.java Tue Feb 19 09:35:28 2013
@@ -25,7 +25,7 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.commons.configuration.ConfigurationException;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.security.auth.UsernamePrincipal;
 
 /**
@@ -49,7 +49,7 @@ public class FileGroupManager implements
     private final FileGroupDatabase _groupDatabase;
 
 
-    public FileGroupManager(String groupFile) throws ConfigurationException
+    public FileGroupManager(String groupFile)
     {
         _groupDatabase = new FileGroupDatabase();
         try
@@ -58,7 +58,7 @@ public class FileGroupManager implements
         }
         catch (IOException e)
         {
-            throw new ConfigurationException("Unable to set group file " + groupFile, e);
+            throw new IllegalConfigurationException("Unable to set group file " + groupFile, e);
         }
     }
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManagerFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManagerFactory.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManagerFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/FileGroupManagerFactory.java Tue Feb 19 09:35:28 2013
@@ -18,48 +18,34 @@
  */
 package org.apache.qpid.server.security.group;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
+import static org.apache.qpid.server.util.MapValueConverter.getStringAttribute;
+
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.GroupProvider;
 import org.apache.qpid.server.plugin.GroupManagerFactory;
 
 public class FileGroupManagerFactory implements GroupManagerFactory
 {
-    private static final String GROUP_FILE_MARKER = "groupFile";
-    private static final String FILE_ATTRIBUTE_VALUE = "file-group-manager.attributes.attribute.value";
-    private static final String FILE_ATTRIBUTE_NAME = "file-group-manager.attributes.attribute.name";
+    static final String FILE_GROUP_MANAGER_TYPE = "file-group-manager";
+    static final String FILE = "file";
 
     @Override
-    public GroupManager createInstance(Configuration configuration)
+    public GroupManager createInstance(Map<String, Object> attributes)
     {
-        if(configuration.subset("file-group-manager").isEmpty())
+        if(!FILE_GROUP_MANAGER_TYPE.equals(getStringAttribute(GroupProvider.TYPE, attributes, null)))
         {
             return null;
         }
 
-        String groupFileArgumentName = configuration.getString(FILE_ATTRIBUTE_NAME);
-        String groupFile = configuration.getString(FILE_ATTRIBUTE_VALUE);
-
-        if (!GROUP_FILE_MARKER.equals(groupFileArgumentName))
-        {
-            throw new RuntimeException("Config for file-group-manager found but " + FILE_ATTRIBUTE_NAME
-                    + " has no value or " + groupFileArgumentName
-                    + " does not equal " + GROUP_FILE_MARKER);
-        }
-
-        if (groupFile == null)
-        {
-            throw new RuntimeException("Config for file-group-manager found but " +  FILE_ATTRIBUTE_VALUE + " has no value."
-                    + " Filename expected.");
-        }
-
-        try
-        {
-            return new FileGroupManager(groupFile);
-        }
-        catch (ConfigurationException e)
+        String groupFile =  getStringAttribute(FILE, attributes, null);
+        if (StringUtils.isBlank(groupFile))
         {
-            throw new RuntimeException(e);
+            throw new IllegalConfigurationException("Path to file containing groups is not specified!");
         }
+        return new FileGroupManager(groupFile);
     }
 
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/GroupPrincipalAccessor.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/GroupPrincipalAccessor.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/GroupPrincipalAccessor.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/group/GroupPrincipalAccessor.java Tue Feb 19 09:35:28 2013
@@ -19,27 +19,30 @@
 package org.apache.qpid.server.security.group;
 
 import java.security.Principal;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
+import org.apache.qpid.server.model.GroupProvider;
+import org.apache.qpid.server.model.adapter.GroupProviderAdapter;
+
 
 public class GroupPrincipalAccessor
 {
-    private final List<GroupManager> _groupManagerList;
+    private final Collection<GroupProvider> _groupProviders;
 
-    public GroupPrincipalAccessor(List<GroupManager> groupManagerList)
+    public GroupPrincipalAccessor(Collection<GroupProvider> groupProviders)
     {
-        _groupManagerList = groupManagerList;
+        _groupProviders = groupProviders;
     }
 
     public Set<Principal> getGroupPrincipals(String username)
     {
         Set<Principal> principals = new HashSet<Principal>();
-        for (GroupManager groupManager : _groupManagerList)
+        for (GroupProvider groupProvider : _groupProviders)
         {
-            Set<Principal> groups = groupManager.getGroupPrincipalsForUser(username);
+            Set<Principal> groups = groupProvider.getGroupPrincipalsForUser(username);
             if (groups != null)
             {
                 principals.addAll(groups);

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/state/AMQStateManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/state/AMQStateManager.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/state/AMQStateManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/state/AMQStateManager.java Tue Feb 19 09:35:28 2013
@@ -31,11 +31,10 @@ import org.apache.qpid.framing.MethodDis
 import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.protocol.AMQMethodEvent;
 import org.apache.qpid.protocol.AMQMethodListener;
+import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.registry.IApplicationRegistry;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.SubjectCreator;
-import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
 
 import java.util.concurrent.CopyOnWriteArraySet;
@@ -48,32 +47,29 @@ public class AMQStateManager implements 
 {
     private static final Logger _logger = Logger.getLogger(AMQStateManager.class);
 
-    private final VirtualHostRegistry _virtualHostRegistry;
+    private final Broker _broker;
     private final AMQProtocolSession _protocolSession;
     /** The current state */
     private AMQState _currentState;
 
     private CopyOnWriteArraySet<StateListener> _stateListeners = new CopyOnWriteArraySet<StateListener>();
 
-    public AMQStateManager(VirtualHostRegistry virtualHostRegistry, AMQProtocolSession protocolSession)
+    public AMQStateManager(Broker broker, AMQProtocolSession protocolSession)
     {
-
-        _virtualHostRegistry = virtualHostRegistry;
+        _broker = broker;
         _protocolSession = protocolSession;
         _currentState = AMQState.CONNECTION_NOT_STARTED;
 
     }
 
     /**
-     * Get the ApplicationRegistry associated with this AMQStateManager
-     *
-     * returns the application registry associated with the VirtualHostRegistry of the AMQStateManager
+     * Get the Broker instance
      *
-     * @return the ApplicationRegistry
+     * @return the Broker
      */
-    public IApplicationRegistry getApplicationRegistry()
+    public Broker getBroker()
     {
-        return _virtualHostRegistry.getApplicationRegistry();
+        return _broker;
     }
 
     public AMQState getCurrentState()
@@ -149,7 +145,7 @@ public class AMQStateManager implements 
 
     public VirtualHostRegistry getVirtualHostRegistry()
     {
-        return _virtualHostRegistry;
+        return _broker.getVirtualHostRegistry();
     }
 
     public AMQProtocolSession getProtocolSession()
@@ -161,6 +157,6 @@ public class AMQStateManager implements 
     
     public SubjectCreator getSubjectCreator()
     {
-        return getApplicationRegistry().getSubjectCreator(getProtocolSession().getLocalAddress());
+        return _broker.getSubjectCreator(getProtocolSession().getLocalAddress());
     }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java Tue Feb 19 09:35:28 2013
@@ -30,6 +30,7 @@ import java.util.concurrent.atomic.Atomi
 /** A simple message store that stores the messages in a thread-safe structure in memory. */
 public class MemoryMessageStore extends NullMessageStore
 {
+    public static final String TYPE = "Memory";
     private final AtomicLong _messageId = new AtomicLong(1);
     private final AtomicBoolean _closed = new AtomicBoolean(false);
 
@@ -138,6 +139,6 @@ public class MemoryMessageStore extends 
     @Override
     public String getStoreType()
     {
-        return "Memory";
+        return TYPE;
     }
 }

Copied: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java (from r1447519, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java?p2=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java&p1=qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java&r1=1447519&r2=1447646&rev=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java Tue Feb 19 09:35:28 2013
@@ -18,16 +18,22 @@
  * under the License.
  *
  */
-package org.apache.qpid.server.logging.actors;
+package org.apache.qpid.server.store;
 
-public class BaseConnectionActorTestCase extends BaseActorTestCase
+
+public class MemoryMessageStoreFactory implements MessageStoreFactory
 {
 
     @Override
-    public void createBroker() throws Exception
+    public String getType()
     {
-        super.createBroker();
+        return MemoryMessageStore.TYPE;
+    }
 
-        _amqpActor = new AMQPConnectionActor(getSession(), _rootLogger);
+    @Override
+    public MessageStore createMessageStore()
+    {
+        return new MemoryMessageStore();
     }
+
 }

Added: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java?rev=1447646&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java (added)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java Tue Feb 19 09:35:28 2013
@@ -0,0 +1,66 @@
+/*
+ *
+ * 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.store;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+
+public class MessageStoreCreator
+{
+    private Map<String, MessageStoreFactory> _factories = new HashMap<String, MessageStoreFactory>();
+
+    public MessageStoreCreator()
+    {
+        QpidServiceLoader<MessageStoreFactory> qpidServiceLoader = new QpidServiceLoader<MessageStoreFactory>();
+        Iterable<MessageStoreFactory> factories = qpidServiceLoader.atLeastOneInstanceOf(MessageStoreFactory.class);
+        for (MessageStoreFactory messageStoreFactory : factories)
+        {
+            String type = messageStoreFactory.getType();
+            MessageStoreFactory factory = _factories.put(type.toLowerCase(), messageStoreFactory);
+            if (factory != null)
+            {
+                throw new IllegalStateException("MessageStoreFactory with type name '" + type
+                        + "' is already registered using class '" + factory.getClass().getName() + "', can not register class '"
+                        + messageStoreFactory.getClass().getName() + "'");
+            }
+        }
+    }
+
+    public MessageStore createMessageStore(String storeType)
+    {
+        MessageStoreFactory factory = _factories.get(storeType.toLowerCase());
+        if (factory == null)
+        {
+            throw new IllegalConfigurationException("Unknown store type: " + storeType);
+        }
+        return factory.createMessageStore();
+    }
+
+    public Collection<MessageStoreFactory> getFactories()
+    {
+        return Collections.unmodifiableCollection(_factories.values());
+    }
+}

Copied: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreFactory.java (from r1447519, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Transport.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreFactory.java?p2=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreFactory.java&p1=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Transport.java&r1=1447519&r2=1447646&rev=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Transport.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/MessageStoreFactory.java Tue Feb 19 09:35:28 2013
@@ -18,10 +18,11 @@
  * under the License.
  *
  */
-package org.apache.qpid.server.model;
+package org.apache.qpid.server.store;
 
-public enum Transport
+public interface MessageStoreFactory
 {
-    TCP,
-    SSL
+    String getType();
+
+    MessageStore createMessageStore();
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java Tue Feb 19 09:35:28 2013
@@ -231,7 +231,7 @@ public class DerbyMessageStore implement
 
     private static final String DERBY_SINGLE_DB_SHUTDOWN_CODE = "08006";
 
-    private static final String DERBY_STORE_TYPE = "DERBY";
+    public static final String TYPE = "DERBY";
 
     private final StateManager _stateManager;
 
@@ -2333,7 +2333,7 @@ public class DerbyMessageStore implement
     @Override
     public String getStoreType()
     {
-        return DERBY_STORE_TYPE;
+        return TYPE;
     }
 
 }
\ No newline at end of file

Copied: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java (from r1447519, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java?p2=qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java&p1=qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java&r1=1447519&r2=1447646&rev=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java Tue Feb 19 09:35:28 2013
@@ -18,16 +18,24 @@
  * under the License.
  *
  */
-package org.apache.qpid.server.logging.actors;
+package org.apache.qpid.server.store.derby;
 
-public class BaseConnectionActorTestCase extends BaseActorTestCase
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.MessageStoreFactory;
+
+public class DerbyMessageStoreFactory implements MessageStoreFactory
 {
 
     @Override
-    public void createBroker() throws Exception
+    public String getType()
     {
-        super.createBroker();
+        return DerbyMessageStore.TYPE;
+    }
 
-        _amqpActor = new AMQPConnectionActor(getSession(), _rootLogger);
+    @Override
+    public MessageStore createMessageStore()
+    {
+        return new DerbyMessageStore();
     }
+
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java Tue Feb 19 09:35:28 2013
@@ -28,13 +28,13 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
-import java.util.UUID;
 import javax.security.sasl.SaslException;
 import javax.security.sasl.SaslServer;
 import org.apache.qpid.common.ServerPropertyNames;
 import org.apache.qpid.properties.ConnectionStartProperties;
+import org.apache.qpid.server.configuration.BrokerProperties;
+import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.protocol.AMQConnectionModel;
-import org.apache.qpid.server.registry.IApplicationRegistry;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.SubjectCreator;
 import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
@@ -54,35 +54,36 @@ public class ServerConnectionDelegate ex
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(ServerConnectionDelegate.class);
 
+    private final Broker _broker;
     private final String _localFQDN;
-    private final IApplicationRegistry _appRegistry;
     private int _maxNoOfChannels;
     private Map<String,Object> _clientProperties;
     private final SubjectCreator _subjectCreator;
 
-    public ServerConnectionDelegate(IApplicationRegistry appRegistry, String localFQDN, SubjectCreator subjectCreator)
+    public ServerConnectionDelegate(Broker broker, String localFQDN, SubjectCreator subjectCreator)
     {
-        this(createConnectionProperties(appRegistry), Collections.singletonList((Object)"en_US"), appRegistry, localFQDN, subjectCreator);
+        this(createConnectionProperties(broker), Collections.singletonList((Object)"en_US"), broker, localFQDN, subjectCreator);
     }
 
     private ServerConnectionDelegate(Map<String, Object> properties,
                                     List<Object> locales,
-                                    IApplicationRegistry appRegistry,
+                                    Broker broker,
                                     String localFQDN,
                                     SubjectCreator subjectCreator)
     {
         super(properties, parseToList(subjectCreator.getMechanisms()), locales);
 
-        _appRegistry = appRegistry;
+        _broker = broker;
         _localFQDN = localFQDN;
-        _maxNoOfChannels = appRegistry.getConfiguration().getMaxChannelCount();
+        _maxNoOfChannels = (Integer)broker.getAttribute(Broker.SESSION_COUNT_LIMIT);
         _subjectCreator = subjectCreator;
     }
 
-    private static List<String> getFeatures(IApplicationRegistry appRegistry)
+    private static List<String> getFeatures(Broker broker)
     {
+        String brokerDisabledFeatures = System.getProperty(BrokerProperties.PROPERTY_DISABLED_FEATURES);
         final List<String> features = new ArrayList<String>();
-        if (!appRegistry.getConfiguration().getDisabledFeatures().contains(ServerPropertyNames.FEATURE_QPID_JMS_SELECTOR))
+        if (brokerDisabledFeatures == null || !brokerDisabledFeatures.contains(ServerPropertyNames.FEATURE_QPID_JMS_SELECTOR))
         {
             features.add(ServerPropertyNames.FEATURE_QPID_JMS_SELECTOR);
         }
@@ -90,12 +91,12 @@ public class ServerConnectionDelegate ex
         return Collections.unmodifiableList(features);
     }
 
-    private static Map<String, Object> createConnectionProperties(final IApplicationRegistry applicationRegistry)
+    private static Map<String, Object> createConnectionProperties(final Broker broker)
     {
         final Map<String,Object> map = new HashMap<String,Object>(2);
         // Federation tag is used by the client to identify the broker instance
-        map.put(ServerPropertyNames.FEDERATION_TAG, applicationRegistry.getBrokerId().toString());
-        final List<String> features = getFeatures(applicationRegistry);
+        map.put(ServerPropertyNames.FEDERATION_TAG, broker.getId().toString());
+        final List<String> features = getFeatures(broker);
         if (features != null && features.size() > 0)
         {
             map.put(ServerPropertyNames.QPID_FEATURES, features);
@@ -179,7 +180,7 @@ public class ServerConnectionDelegate ex
         {
             vhostName = "";
         }
-        vhost = _appRegistry.getVirtualHostRegistry().getVirtualHost(vhostName);
+        vhost = _broker.getVirtualHostRegistry().getVirtualHost(vhostName);
 
         SecurityManager.setThreadSubject(sconn.getAuthorizedSubject());
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java Tue Feb 19 09:35:28 2013
@@ -45,7 +45,6 @@ import org.apache.qpid.server.queue.AMQQ
 import org.apache.qpid.server.queue.AMQQueueFactory;
 import org.apache.qpid.server.queue.BaseQueue;
 import org.apache.qpid.server.queue.QueueRegistry;
-import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.MessageStore;
@@ -1266,18 +1265,12 @@ public class ServerSessionDelegate exten
                             }
                         }
                         queueRegistry.registerQueue(queue);
-                        boolean autoRegister = ApplicationRegistry.getInstance().getConfiguration().getQueueAutoRegister();
 
-                        if (autoRegister)
-                        {
-
-                            ExchangeRegistry exchangeRegistry = getExchangeRegistry(session);
+                        ExchangeRegistry exchangeRegistry = getExchangeRegistry(session);
 
-                            Exchange defaultExchange = exchangeRegistry.getDefaultExchange();
+                        Exchange defaultExchange = exchangeRegistry.getDefaultExchange();
 
-                            virtualHost.getBindingFactory().addBinding(queueName, queue, defaultExchange, null);
-
-                        }
+                        virtualHost.getBindingFactory().addBinding(queueName, queue, defaultExchange, null);
 
                         if (method.hasAutoDelete()
                             && method.getAutoDelete()



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