You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2012/11/16 15:49:04 UTC

svn commit: r1410377 - in /qpid/branches/java-broker-config-qpid-4390/qpid/java: broker/src/main/java/org/apache/qpid/server/configuration/ broker/src/main/java/org/apache/qpid/server/configuration/startup/ broker/src/main/java/org/apache/qpid/server/c...

Author: robbie
Date: Fri Nov 16 14:49:00 2012
New Revision: 1410377

URL: http://svn.apache.org/viewvc?rev=1410377&view=rev
Log:
Some more WIP cleanup

Added:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Plugin.java
Removed:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObjectType.java
Modified:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationEntry.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/RecovererProvider.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/BrokerRecoverer.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/PortConfigurationHelper.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Port.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/model/configuration/ConfigurationEntryTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationEntry.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/ConfigurationEntry.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationEntry.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ConfigurationEntry.java Fri Nov 16 14:49:00 2012
@@ -29,17 +29,16 @@ import java.util.Set;
 import java.util.UUID;
 
 import org.apache.qpid.server.configuration.startup.AttributeMap;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 
 public class ConfigurationEntry
 {
     private final UUID _id;
-    private final ConfiguredObjectType _type;
+    private final String _type;
     private final Map<String, Object> _attributes;
     private final Set<UUID> _childrenIds;
     private final ConfigurationEntryStore _store;
 
-    public ConfigurationEntry(UUID id, ConfiguredObjectType type, Map<String, Object> attributes, Set<UUID> childrenIds,
+    public ConfigurationEntry(UUID id, String type, Map<String, Object> attributes, Set<UUID> childrenIds,
             ConfigurationEntryStore store)
     {
         super();
@@ -55,7 +54,7 @@ public class ConfigurationEntry
         return _id;
     }
 
-    public ConfiguredObjectType getType()
+    public String getType()
     {
         return _type;
     }
@@ -65,11 +64,6 @@ public class ConfigurationEntry
         return _attributes;
     }
 
-    public AttributeMap getAttributesAsAttributeMap()
-    {
-        return new AttributeMap(getAttributes());
-    }
-
     public Set<UUID> getChildrenIds()
     {
         return _childrenIds;
@@ -83,20 +77,20 @@ public class ConfigurationEntry
     /**
      * Returns this entry's children. The collection should not be modified.
      */
-    public Map<ConfiguredObjectType, Collection<ConfigurationEntry>> getChildren()
+    public Map<String, Collection<ConfigurationEntry>> getChildren()
     {
-        Map<ConfiguredObjectType, Collection<ConfigurationEntry>> children = null;
+        Map<String, Collection<ConfigurationEntry>> children = null;
         if (_childrenIds == null)
         {
             children = Collections.emptyMap();
         }
         else
         {
-            children = new HashMap<ConfiguredObjectType, Collection<ConfigurationEntry>>();
+            children = new HashMap<String, Collection<ConfigurationEntry>>();
             for (UUID childId : _childrenIds)
             {
                 ConfigurationEntry entry = _store.getEntry(childId);
-                ConfiguredObjectType type = entry.getType();
+                String type = entry.getType();
                 Collection<ConfigurationEntry> childrenOfType = children.get(type);
                 if (childrenOfType == null)
                 {

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/RecovererProvider.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/RecovererProvider.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/RecovererProvider.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/RecovererProvider.java Fri Nov 16 14:49:00 2012
@@ -21,9 +21,8 @@
 package org.apache.qpid.server.configuration;
 
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 
 public interface RecovererProvider
 {
-    ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(ConfiguredObjectType type);
+    ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(String type);
 }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java Fri Nov 16 14:49:00 2012
@@ -75,7 +75,6 @@ public class ServerConfiguration extends
 
     // Configuration values to be read from the configuration file
     //todo Move all properties to static values to ensure system testing can be performed.
-    public static final String MGMT_CUSTOM_REGISTRY_SOCKET = "management.custom-registry-socket";
     public static final String MGMT_JMXPORT_REGISTRYSERVER = "management.jmxport.registryServer";
     public static final String MGMT_JMXPORT_CONNECTORSERVER = "management.jmxport.connectorServer";
     public static final String SECURITY_DEFAULT_AUTH_MANAGER = "security.default-auth-manager";
@@ -390,17 +389,6 @@ public class ServerConfiguration extends
         return getIntValue(MGMT_JMXPORT_CONNECTORSERVER, getJMXPortRegistryServer() + JMXPORT_CONNECTORSERVER_OFFSET);
     }
 
-    public boolean getUseCustomRMISocketFactory()
-    {
-        return getBooleanValue(MGMT_CUSTOM_REGISTRY_SOCKET,
-                               Boolean.parseBoolean(System.getProperty(USE_CUSTOM_RMI_SOCKET_FACTORY, "true")));
-    }
-
-    public void setUseCustomRMISocketFactory(boolean bool)
-    {
-        getConfig().setProperty(MGMT_CUSTOM_REGISTRY_SOCKET, bool);
-    }
-
     public boolean getPlatformMbeanserver()
     {
         return getBooleanValue("management.platform-mbeanserver", true);

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/BrokerRecoverer.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/BrokerRecoverer.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/BrokerRecoverer.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/BrokerRecoverer.java Fri Nov 16 14:49:00 2012
@@ -11,12 +11,10 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.adapter.AuthenticationProviderAdapter;
 import org.apache.qpid.server.model.adapter.AuthenticationProviderFactory;
 import org.apache.qpid.server.model.adapter.BrokerAdapter;
-import org.apache.qpid.server.model.adapter.PortAdapter;
 import org.apache.qpid.server.model.adapter.PortFactory;
 import org.apache.qpid.server.registry.IApplicationRegistry;
 import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
@@ -40,8 +38,8 @@ public class BrokerRecoverer implements 
     public Broker create(RecovererProvider recovererProvider, ConfigurationEntry entry, ConfiguredObject... parents)
     {
         BrokerAdapter broker = new BrokerAdapter(entry.getId(), entry.getAttributes(), _registry, _authenticationProviderFactory, _portFactory);
-        Map<ConfiguredObjectType, Collection<ConfigurationEntry>> childEntries = entry.getChildren();
-        for (ConfiguredObjectType type : childEntries.keySet())
+        Map<String, Collection<ConfigurationEntry>> childEntries = entry.getChildren();
+        for (String type : childEntries.keySet())
         {
             ConfiguredObjectRecoverer<?> recoverer = recovererProvider.getRecoverer(type);
             if (recoverer == null)
@@ -59,24 +57,20 @@ public class BrokerRecoverer implements 
                 broker.recoverChild(object);
             }
         }
-        wireUpConfiguredObjects(broker, entry.getAttributesAsAttributeMap());
+        wireUpConfiguredObjects(broker, entry.getAttributes());
 
         return broker;
     }
 
     // XXX unit test this
-    private void wireUpConfiguredObjects(BrokerAdapter broker, AttributeMap brokerAttributes)
+    private void wireUpConfiguredObjects(BrokerAdapter broker, Map<String,Object> brokerAttributes)
     {
         AuthenticationProvider defaultAuthenticationProvider = null;
         Collection<AuthenticationProvider> authenticationProviders = broker.getAuthenticationProviders();
         int numberOfAuthenticationProviders = authenticationProviders.size();
         if (numberOfAuthenticationProviders == 0)
         {
-            LOGGER.error("No authentication providers configured");
-            return;
-            // XXX reinstate when wire-up has been separated from creation:
-            // throw new
-            // IllegalConfigurationException("No authentication providers configured");
+        	throw new IllegalConfigurationException("No authentication provider was onfigured");
         }
         else if (numberOfAuthenticationProviders == 1)
         {
@@ -84,7 +78,12 @@ public class BrokerRecoverer implements 
         }
         else
         {
-            String name = brokerAttributes.getStringAttribute(Broker.DEFAULT_AUTHENTICATION_PROVIDER);
+            String name = (String) brokerAttributes.get(Broker.DEFAULT_AUTHENTICATION_PROVIDER);
+            if (name == null)
+            {
+            	throw new IllegalConfigurationException("Multiple authentication providers defined, but no default was configured.");
+            }
+            
             defaultAuthenticationProvider = getAuthenticationProviderByName(broker, name);
         }
         broker.setDefaultAuthenticationProvider(defaultAuthenticationProvider);
@@ -92,12 +91,9 @@ public class BrokerRecoverer implements 
         GroupPrincipalAccessor groupPrincipalAccessor = new GroupPrincipalAccessor(broker.getGroupProviders());
         for (AuthenticationProvider authenticationProvider : authenticationProviders)
         {
-            // XXX : review this cast
-            if (authenticationProvider instanceof AuthenticationProviderAdapter)
-            {
-                ((AuthenticationProviderAdapter<?>) authenticationProvider).setGroupAccessor(groupPrincipalAccessor);
-            }
+            authenticationProvider.setGroupAccessor(groupPrincipalAccessor);
         }
+
         Collection<Port> ports = broker.getPorts();
         for (Port port : ports)
         {
@@ -111,7 +107,7 @@ public class BrokerRecoverer implements 
             {
                 provider = defaultAuthenticationProvider;
             }
-            ((PortAdapter) port).setAuthenticationProvider(provider);
+            port.setAuthenticationProvider(provider);
         }
     }
 

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java Fri Nov 16 14:49:00 2012
@@ -20,11 +20,14 @@
  */
 package org.apache.qpid.server.configuration.startup;
 
-
 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.model.ConfiguredObjectType;
+import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.GroupProvider;
+import org.apache.qpid.server.model.Plugin;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.adapter.AuthenticationProviderFactory;
 import org.apache.qpid.server.model.adapter.PortFactory;
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
@@ -53,23 +56,33 @@ public class DefaultRecovererProvider im
     }
 
     @Override
-    public ConfiguredObjectRecoverer<?> getRecoverer(ConfiguredObjectType type)
+    public ConfiguredObjectRecoverer<?> getRecoverer(String type)
     {
-        switch(type)
+        if(Broker.class.getSimpleName().equals(type))
         {
-        case BROKER:
             return new BrokerRecoverer(_authenticationProviderFactory, _portFactory, _registry);
-        case VIRTUAL_HOST:
+        }
+        else if(VirtualHost.class.getSimpleName().equals(type))
+        {
             return new VirtualHostRecoverer(_registry.getVirtualHostRegistry(),(StatisticsGatherer)_registry, _registry.getSecurityManager());
-        case AUTHENTICATION_PROVIDER:
+        }
+        else if(AuthenticationProvider.class.getSimpleName().equals(type))
+        {
             return new AuthenticationProviderRecoverer(_authenticationProviderFactory);
-        case PORT:
+        }
+        else if(Port.class.getSimpleName().equals(type))
+        {
             return new PortRecoverer(_portFactory);
-        case GROUP_PROVIDER:
+        }
+        else if(GroupProvider.class.getSimpleName().equals(type))
+        {
             return new GroupProviderRecoverer(_groupManagerServiceLoader);
-        case PLUGIN:
+        }
+        else if(Plugin.class.getSimpleName().equals(type))
+        {
             return new PluginRecoverer(_pluginFactoryServiceLoader);
         }
+
         return null;
     }
 

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/PortConfigurationHelper.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/PortConfigurationHelper.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/PortConfigurationHelper.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/PortConfigurationHelper.java Fri Nov 16 14:49:00 2012
@@ -38,7 +38,6 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.ConfigurationEntryStore;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.configuration.ServerConfiguration;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.model.Transport;
@@ -213,7 +212,7 @@ public class PortConfigurationHelper
             attributes.put(Port.WANT_CLIENT_AUTH, serverConfig.wantClientAuth());
             attributes.put(Port.AUTHENTICATION_MANAGER, serverConfig.getPortAuthenticationMappings().get(port));
 
-            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PORT, attributes,
+            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), Port.class.getSimpleName(), attributes,
                     null, _configurationEntryStore);
 
             portConfiguration.put(entry.getId(), entry);

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/XMLConfigurationEntryStore.java Fri Nov 16 14:49:00 2012
@@ -34,10 +34,10 @@ import java.util.Set;
 import java.util.UUID;
 
 import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.ConfigurationUtils;
 import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.configuration.tree.ConfigurationNode;
 import org.apache.log4j.Logger;
 import org.apache.qpid.server.BrokerOptions;
@@ -47,14 +47,14 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.ServerConfiguration;
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 import org.apache.qpid.server.model.GroupProvider;
 import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Plugin;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.plugin.PluginFactory;
 import org.apache.qpid.server.plugin.QpidServiceLoader;
-
 import org.apache.qpid.server.security.group.FileGroupManagerFactory;
 
 public class XMLConfigurationEntryStore implements ConfigurationEntryStore
@@ -123,7 +123,7 @@ public class XMLConfigurationEntryStore 
         brokerAttributes.put(Broker.HOUSEKEEPING_CHECK_PERIOD, _serverConfiguration.getHousekeepingCheckPeriod());
 
         brokerAttributes.put(Broker.DEFAULT_AUTHENTICATION_PROVIDER, _serverConfiguration.getDefaultAuthenticationManager());
-        ConfigurationEntry rootEntry = new ConfigurationEntry(_rootId, ConfiguredObjectType.BROKER, brokerAttributes,
+        ConfigurationEntry rootEntry = new ConfigurationEntry(_rootId, Broker.class.getSimpleName(), brokerAttributes,
                 Collections.unmodifiableSet(_rootChildren.keySet()), this);
 
         _logger.warn("Returning root entry: " + rootEntry);
@@ -168,7 +168,7 @@ public class XMLConfigurationEntryStore 
                     }
                 }
                 ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(),
-                        ConfiguredObjectType.AUTHENTICATION_PROVIDER, attributes, null, this);
+                        AuthenticationProvider.class.getSimpleName(), attributes, null, this);
                 rootChildren.put(entry.getId(), entry);
             }
         }
@@ -185,7 +185,7 @@ public class XMLConfigurationEntryStore 
             Map<String, Object> attributes = new HashMap<String, Object>();
             attributes.put(GroupProvider.TYPE, "file-group-manager");
             attributes.put("file", file);
-            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.GROUP_PROVIDER, attributes, null, this);
+            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), GroupProvider.class.getSimpleName(), attributes, null, this);
             rootChildren.put(entry.getId(), entry);
         }
     }
@@ -265,7 +265,7 @@ public class XMLConfigurationEntryStore 
         attributes.put(Port.TRANSPORTS, Collections.singleton(transport));
         attributes.put(Port.PORT, port);
         attributes.put(Port.BINDING_ADDRESS, null);
-        return new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PORT, attributes, null, this);
+        return new ConfigurationEntry(UUID.randomUUID(), Port.class.getSimpleName(), attributes, null, this);
     }
 
     private void createVirtualHostConfig(ServerConfiguration serverConfiguration, Map<UUID, ConfigurationEntry> rootChildren)
@@ -295,7 +295,7 @@ public class XMLConfigurationEntryStore 
             }
 
             attributes.put(org.apache.qpid.server.model.VirtualHost.CONFIGURATION, configuration.getAbsolutePath());
-            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.VIRTUAL_HOST,
+            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), VirtualHost.class.getSimpleName(),
                     attributes, null, this);
             rootChildren.put(entry.getId(), entry);
         }
@@ -338,7 +338,7 @@ public class XMLConfigurationEntryStore 
         attributes.put(Port.WANT_CLIENT_AUTH, serverConfiguration.wantClientAuth());
         attributes.put(Port.AUTHENTICATION_MANAGER, serverConfiguration.getPortAuthenticationMappings().get(portNumber));
 
-        ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PORT, attributes, null,
+        ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), Port.class.getSimpleName(), attributes, null,
                 this);
         return entry;
     }
@@ -357,7 +357,7 @@ public class XMLConfigurationEntryStore 
             attributes.put("httpSaslAuthenticationEnabled", serverConfiguration.getHTTPManagementSaslAuthEnabled());
             attributes.put("httpsSaslAuthenticationEnabled", serverConfiguration.getHTTPSManagementSaslAuthEnabled());
 
-            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PLUGIN, attributes, null, this);
+            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), Plugin.class.getSimpleName(), attributes, null, this);
             rootChildren.put(entry.getId(), entry);
         }
     }
@@ -373,7 +373,7 @@ public class XMLConfigurationEntryStore 
             attributes.put("usePlatformMBeanServer", serverConfiguration.getPlatformMbeanserver());
             attributes.put("managementRightsInferAllAccess", serverConfiguration.getManagementRightsInferAllAccess());
 
-            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PLUGIN, attributes, null, this);
+            ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), Plugin.class.getSimpleName(), attributes, null, this);
             rootChildren.put(entry.getId(), entry);
         }
     }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.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/AuthenticationProvider.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java Fri Nov 16 14:49:00 2012
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Collections;
 
 import org.apache.qpid.server.security.SubjectCreator;
+import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
 
 public interface AuthenticationProvider extends ConfiguredObject
 {
@@ -64,6 +65,5 @@ public interface AuthenticationProvider 
      */
     SubjectCreator getSubjectCreator();
 
-    // XXX just an idea
-    //setGroupProviders(Collection<GroupProvider> groupProviders);
+	void setGroupAccessor(GroupPrincipalAccessor groupPrincipalAccessor);
 }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.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/ConfiguredObject.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java Fri Nov 16 14:49:00 2012
@@ -246,7 +246,4 @@ public interface ConfiguredObject
     <C extends ConfiguredObject> C createChild(Class<C> childClass,
                                                Map<String, Object> attributes,
                                                ConfiguredObject... otherParents);
-
-    ConfiguredObjectType getConfiguredObjectType();
-
 }

Added: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Plugin.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/Plugin.java?rev=1410377&view=auto
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Plugin.java (added)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Plugin.java Fri Nov 16 14:49:00 2012
@@ -0,0 +1,26 @@
+/*
+ *
+ * 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.model;
+
+public interface Plugin extends ConfiguredObject
+{
+	//Hack, using it for the class name only for consistency with the other things.
+}

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Port.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/Port.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Port.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Port.java Fri Nov 16 14:49:00 2012
@@ -119,4 +119,5 @@ public interface Port extends Configured
 
     AuthenticationProvider getAuthenticationProvider();
 
+    void setAuthenticationProvider(AuthenticationProvider authenticationProvider);
 }

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.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/AbstractAdapter.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java Fri Nov 16 14:49:00 2012
@@ -29,7 +29,6 @@ import java.util.UUID;
 
 import org.apache.qpid.server.model.ConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 import org.apache.qpid.server.model.IllegalStateTransitionException;
 import org.apache.qpid.server.model.State;
 
@@ -196,12 +195,6 @@ abstract class AbstractAdapter implement
     }
 
     @Override
-    public ConfiguredObjectType getConfiguredObjectType()
-    {
-        throw new RuntimeException("Not implemented"); //XXX: implement this method in each concrete adapter class
-    }
-
-    @Override
     public String toString()
     {
         return getClass().getSimpleName() + " [id=" + _id + "]";

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.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/AbstractPluginAdapter.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java Fri Nov 16 14:49:00 2012
@@ -28,10 +28,11 @@ import java.util.UUID;
 
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Plugin;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.Statistics;
 
-public abstract class AbstractPluginAdapter extends AbstractAdapter
+public abstract class AbstractPluginAdapter extends AbstractAdapter implements Plugin
 {
 
     protected AbstractPluginAdapter(UUID id)

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java Fri Nov 16 14:49:00 2012
@@ -53,7 +53,6 @@ import org.apache.qpid.server.logging.me
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.security.SecurityManager;
@@ -190,7 +189,7 @@ public class ApplicationRegistry impleme
             _securityManager = new SecurityManager(configuration.getConfig());
 
             RecovererProvider provider = new DefaultRecovererProvider(this);
-            ConfiguredObjectRecoverer<? extends ConfiguredObject> brokerRecoverer =  provider.getRecoverer(ConfiguredObjectType.BROKER);
+            ConfiguredObjectRecoverer<? extends ConfiguredObject> brokerRecoverer =  provider.getRecoverer(Broker.class.getSimpleName());
             _broker = (Broker) brokerRecoverer.create(provider, _store.getRootEntry());
 
             getVirtualHostRegistry().setDefaultVirtualHostName(configuration.getDefaultVirtualHost());

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java Fri Nov 16 14:49:00 2012
@@ -20,10 +20,10 @@
  */
 package org.apache.qpid.server.configuration.startup;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.verify;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -37,61 +37,60 @@ import junit.framework.TestCase;
 
 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.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ConfiguredObjectType;
 import org.apache.qpid.server.model.GroupProvider;
+import org.apache.qpid.server.model.Plugin;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.adapter.AuthenticationProviderFactory;
 import org.apache.qpid.server.model.adapter.PortFactory;
 import org.apache.qpid.server.registry.IApplicationRegistry;
+import org.apache.qpid.server.security.group.GroupPrincipalAccessor;
 
 public class BrokerRecovererTest extends TestCase
 {
     private BrokerRecoverer _brokerRecoverer;
-
-    private IApplicationRegistry _applicationRegistry = mock(IApplicationRegistry.class);
-
-    private PortRecoverer _portRecoverer = mock(PortRecoverer.class);
-    private AuthenticationProviderRecoverer _authenticationProviderRecoverer = mock(AuthenticationProviderRecoverer.class);
-
-    private AuthenticationProviderFactory _authenticationProviderFactory = mock(AuthenticationProviderFactory.class);
-    private PortFactory _portFactory = mock(PortFactory.class);
-
-    private GroupProviderRecoverer _groupProviderRecoverer = mock(GroupProviderRecoverer.class);
-
-    private ConfigurationEntry _entry = mock(ConfigurationEntry.class);
+    private ConfigurationEntry _brokerEntry = mock(ConfigurationEntry.class);
 
     private UUID _brokerId = UUID.randomUUID();
-    private Map<ConfiguredObjectType, Collection<ConfigurationEntry>> _entryChildren = new HashMap<ConfiguredObjectType, Collection<ConfigurationEntry>>();
-
-    private PluginRecoverer _pluginRecoverer = mock(PluginRecoverer.class);
-
+    private Map<String, Collection<ConfigurationEntry>> _brokerEntryChildren = new HashMap<String, Collection<ConfigurationEntry>>();
+    private ConfigurationEntry _authenticationProviderEntry1;
+    private AuthenticationProvider _authenticationProvider1;
 
     @Override
     protected void setUp() throws Exception
     {
         super.setUp();
-        _brokerRecoverer = new BrokerRecoverer(_authenticationProviderFactory, _portFactory, _applicationRegistry);
-        when(_entry.getId()).thenReturn(_brokerId);
-        when(_entry.getChildren()).thenReturn(_entryChildren);
 
+        _brokerRecoverer = new BrokerRecoverer(mock(AuthenticationProviderFactory.class), mock(PortFactory.class), mock(IApplicationRegistry.class));
+        when(_brokerEntry.getId()).thenReturn(_brokerId);
+        when(_brokerEntry.getChildren()).thenReturn(_brokerEntryChildren);
+
+        //Add a base AuthenticationProvider for all tests
+        _authenticationProvider1 = mock(AuthenticationProvider.class);
+        when(_authenticationProvider1.getName()).thenReturn("authenticationProvider1");
+        _authenticationProviderEntry1 = mock(ConfigurationEntry.class);
+        _brokerEntryChildren.put(AuthenticationProvider.class.getSimpleName(), Arrays.asList(_authenticationProviderEntry1));
     }
 
     public void testCreateBrokerWithVirtualHost()
     {
         final ConfigurationEntry virtualHostEntry = mock(ConfigurationEntry.class);
-        when(virtualHostEntry.getType()).thenReturn(ConfiguredObjectType.VIRTUAL_HOST);
-        _entryChildren.put(ConfiguredObjectType.VIRTUAL_HOST, Arrays.asList(virtualHostEntry));
+
+        String typeName = VirtualHost.class.getSimpleName();
+        when(virtualHostEntry.getType()).thenReturn(typeName);
+        _brokerEntryChildren.put(typeName, Arrays.asList(virtualHostEntry));
 
         final VirtualHost virtualHost = mock(VirtualHost.class);
 
-        RecovererProvider recovererProvider = createRecoveryProvider(virtualHostEntry, virtualHost);
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[]{virtualHostEntry, _authenticationProviderEntry1},
+                                                                     new ConfiguredObject[]{virtualHost, _authenticationProvider1});
 
-        Broker broker = _brokerRecoverer.create(recovererProvider, _entry);
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
 
         assertNotNull(broker);
         assertEquals(_brokerId, broker.getId());
@@ -105,46 +104,160 @@ public class BrokerRecovererTest extends
     {
         ConfigurationEntry portEntry = mock(ConfigurationEntry.class);
         Port port = mock(Port.class);
-        _entryChildren.put(ConfiguredObjectType.PORT, Arrays.asList(portEntry));
+        _brokerEntryChildren.put(Port.class.getSimpleName(), Arrays.asList(portEntry));
 
-        RecovererProvider recovererProvider = createRecoveryProvider(portEntry, port);
-        when(_portRecoverer.create(same(recovererProvider), same(portEntry), any(Broker.class))).thenReturn(port);
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[]{portEntry, _authenticationProviderEntry1},
+                                                                     new ConfiguredObject[]{port, _authenticationProvider1});
 
-        Broker broker = _brokerRecoverer.create(recovererProvider, _entry);
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
 
         assertNotNull(broker);
         assertEquals(_brokerId, broker.getId());
         assertEquals(Collections.singletonList(port), broker.getPorts());
     }
 
-    public void testCreateBrokerWithAuthenticationProviders()
+    public void testCreateBrokerWithoutAuthenticationProviderThrowsException()
     {
-        ConfigurationEntry authenticationProviderEntry = mock(ConfigurationEntry.class);
-        AuthenticationProvider authenticationProvider = mock(AuthenticationProvider.class);
-        _entryChildren.put(ConfiguredObjectType.AUTHENTICATION_PROVIDER, Arrays.asList(authenticationProviderEntry));
+        assertNotNull("expected to remove the base entry", _brokerEntryChildren.remove(AuthenticationProvider.class.getSimpleName()));
+        assertTrue("should be empty", _brokerEntryChildren.isEmpty());
 
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[0], new ConfiguredObject[0]);
 
-        RecovererProvider recovererProvider = createRecoveryProvider(authenticationProviderEntry, authenticationProvider);
+        try
+        {
+            _brokerRecoverer.create(recovererProvider, _brokerEntry);
+            fail("should have thrown an exception due to missing authentication provider configuration");
+        }
+        catch(IllegalConfigurationException e)
+        {
+            //expected
+        }
+    }
+
+    public void testCreateBrokerWithOneAuthenticationProvider()
+    {
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[]{_authenticationProviderEntry1},
+                                                                     new ConfiguredObject[]{_authenticationProvider1});
 
-        when(_authenticationProviderRecoverer.create(same(recovererProvider), same(authenticationProviderEntry),
-                any(Broker.class))).thenReturn(authenticationProvider);
-        Broker broker = _brokerRecoverer.create(recovererProvider, _entry);
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
 
         assertNotNull(broker);
         assertEquals(_brokerId, broker.getId());
-        assertEquals(Collections.singletonList(authenticationProvider), broker.getAuthenticationProviders());
+        assertEquals(Collections.singletonList(_authenticationProvider1), broker.getAuthenticationProviders());
+    }
+
+    public void testCreateBrokerWithMultipleAuthenticationProvidersAndNoDefaultThrowsException()
+    {
+        AuthenticationProvider authenticationProvider2 = mock(AuthenticationProvider.class);
+        when(authenticationProvider2.getName()).thenReturn("authenticationProvider2");
+        ConfigurationEntry authenticationProviderEntry2 = mock(ConfigurationEntry.class);
+        _brokerEntryChildren.put(AuthenticationProvider.class.getSimpleName(), Arrays.asList(_authenticationProviderEntry1, authenticationProviderEntry2));
+
+        Map<String,Object> emptyBrokerAttributes = new HashMap<String,Object>();
+        when(_brokerEntry.getAttributes()).thenReturn(emptyBrokerAttributes);
+
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[]{authenticationProviderEntry2, _authenticationProviderEntry1},
+                                                                     new ConfiguredObject[]{authenticationProvider2, _authenticationProvider1});
+        try
+        {
+            _brokerRecoverer.create(recovererProvider, _brokerEntry);
+            fail("should have thrown an exception due to missing authentication provider default");
+        }
+        catch(IllegalConfigurationException e)
+        {
+            //expected
+        }
+    }
+
+    public void testCreateBrokerWithMultipleAuthenticationProvidersAndPorts()
+    {
+        //Create a second authentication provider
+        AuthenticationProvider authenticationProvider2 = mock(AuthenticationProvider.class);
+        when(authenticationProvider2.getName()).thenReturn("authenticationProvider2");
+        ConfigurationEntry authenticationProviderEntry2 = mock(ConfigurationEntry.class);
+        _brokerEntryChildren.put(AuthenticationProvider.class.getSimpleName(), Arrays.asList(_authenticationProviderEntry1, authenticationProviderEntry2));
+
+        //Set the default authentication provider
+        Map<String,Object> brokerAtttributes = new HashMap<String,Object>();
+        when(_brokerEntry.getAttributes()).thenReturn(brokerAtttributes);
+        brokerAtttributes.put(Broker.DEFAULT_AUTHENTICATION_PROVIDER, "authenticationProvider2");
+
+        //Add a couple ports, one with a defined authentication provider and
+        //one without (which should then use the default)
+        ConfigurationEntry portEntry1 = mock(ConfigurationEntry.class);
+        Port port1 = mock(Port.class);
+        when(port1.getName()).thenReturn("port1");
+        when(port1.getPort()).thenReturn(5671);
+        when(port1.getAuthenticationManagerName()).thenReturn("authenticationProvider1");
+        ConfigurationEntry portEntry2 = mock(ConfigurationEntry.class);
+        Port port2 = mock(Port.class);
+        when(port2.getName()).thenReturn("port2");
+        when(port2.getPort()).thenReturn(5672);
+        _brokerEntryChildren.put(Port.class.getSimpleName(), Arrays.asList(portEntry1, portEntry2));
+
+        RecovererProvider recovererProvider = createRecoveryProvider(
+                new ConfigurationEntry[]{portEntry1, portEntry2, authenticationProviderEntry2, _authenticationProviderEntry1},
+                new ConfiguredObject[]{port1, port2, authenticationProvider2, _authenticationProvider1});
+
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
+
+        assertNotNull(broker);
+        assertEquals("Unexpected number of authentication providers", 2,broker.getAuthenticationProviders().size());
+
+        Collection<Port> ports = broker.getPorts();
+        assertEquals("Unexpected number of ports", 2, ports.size());
+        assertTrue(ports.contains(port1));
+        assertTrue(ports.contains(port2));
+
+        verify(port1).setAuthenticationProvider(any(AuthenticationProvider.class));
+        verify(port1).setAuthenticationProvider(_authenticationProvider1);
+
+        verify(port2).setAuthenticationProvider(any(AuthenticationProvider.class));
+        verify(port2).setAuthenticationProvider(authenticationProvider2);
+    }
+
+    public void testCreateBrokerAssignsGroupAccessorToAuthenticationProviders()
+    {
+        //Create a second authentication provider
+        AuthenticationProvider authenticationProvider2 = mock(AuthenticationProvider.class);
+        when(authenticationProvider2.getName()).thenReturn("authenticationProvider2");
+        ConfigurationEntry authenticationProviderEntry2 = mock(ConfigurationEntry.class);
+        _brokerEntryChildren.put(AuthenticationProvider.class.getSimpleName(), Arrays.asList(_authenticationProviderEntry1, authenticationProviderEntry2));
+
+        //Set the default authentication provider
+        Map<String,Object> brokerAtttributes = new HashMap<String,Object>();
+        when(_brokerEntry.getAttributes()).thenReturn(brokerAtttributes);
+        brokerAtttributes.put(Broker.DEFAULT_AUTHENTICATION_PROVIDER, "authenticationProvider2");
+
+        //Create a group provider
+        ConfigurationEntry groupProviderEntry = mock(ConfigurationEntry.class);
+        GroupProvider groupProvider = mock(GroupProvider.class);
+        _brokerEntryChildren.put(GroupProvider.class.getSimpleName(), Arrays.asList(groupProviderEntry));
+
+        RecovererProvider recovererProvider = createRecoveryProvider(
+                new ConfigurationEntry[]{groupProviderEntry, authenticationProviderEntry2, _authenticationProviderEntry1},
+                new ConfiguredObject[]{groupProvider, authenticationProvider2, _authenticationProvider1});
+
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
+
+        assertNotNull(broker);
+        assertEquals("Unexpected number of authentication providers", 2, broker.getAuthenticationProviders().size());
+
+        //verify that a GroupAcessor was added to the AuthenticationProviders
+        verify(_authenticationProvider1).setGroupAccessor(any(GroupPrincipalAccessor.class));
+        verify(authenticationProvider2).setGroupAccessor(any(GroupPrincipalAccessor.class));
     }
 
-    public void testCreateBrokerWithGroupProviders()
+    public void testCreateBrokerWithGroupProvider()
     {
         ConfigurationEntry groupProviderEntry = mock(ConfigurationEntry.class);
         GroupProvider groupProvider = mock(GroupProvider.class);
-        _entryChildren.put(ConfiguredObjectType.GROUP_PROVIDER, Arrays.asList(groupProviderEntry));
+        _brokerEntryChildren.put(GroupProvider.class.getSimpleName(), Arrays.asList(groupProviderEntry));
 
-        RecovererProvider recovererProvider = createRecoveryProvider(groupProviderEntry, groupProvider);
-        when(_groupProviderRecoverer.create(same(recovererProvider), same(groupProviderEntry), any(Broker.class))).thenReturn(groupProvider);
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[]{groupProviderEntry, _authenticationProviderEntry1},
+                                                                     new ConfiguredObject[]{groupProvider, _authenticationProvider1});
 
-        Broker broker = _brokerRecoverer.create(recovererProvider, _entry);
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
 
         assertNotNull(broker);
         assertEquals(_brokerId, broker.getId());
@@ -155,28 +268,43 @@ public class BrokerRecovererTest extends
     {
         ConfigurationEntry pluginEntry = mock(ConfigurationEntry.class);
         ConfiguredObject plugin = mock(ConfiguredObject.class);
-        _entryChildren.put(ConfiguredObjectType.PLUGIN, Arrays.asList(pluginEntry));
+        _brokerEntryChildren.put(Plugin.class.getSimpleName(), Arrays.asList(pluginEntry));
 
-        RecovererProvider recovererProvider = createRecoveryProvider(pluginEntry, plugin);
-        when(_pluginRecoverer.create(same(recovererProvider), same(pluginEntry), any(Broker.class))).thenReturn(plugin);
+        RecovererProvider recovererProvider = createRecoveryProvider(new ConfigurationEntry[]{pluginEntry, _authenticationProviderEntry1},
+                                                                     new ConfiguredObject[]{plugin, _authenticationProvider1});
 
-        Broker broker = _brokerRecoverer.create(recovererProvider, _entry);
+        Broker broker = _brokerRecoverer.create(recovererProvider, _brokerEntry);
 
         assertNotNull(broker);
         assertEquals(_brokerId, broker.getId());
         assertEquals(Collections.singleton(plugin), new HashSet<ConfiguredObject>(broker.getChildren(ConfiguredObject.class)));
     }
 
-    private <T extends ConfiguredObject> RecovererProvider createRecoveryProvider(final ConfigurationEntry entry, final T objectToRecoverer)
+    private  RecovererProvider createRecoveryProvider(final ConfigurationEntry[] entries, final ConfiguredObject[] objectsToRecoverer)
     {
         RecovererProvider recovererProvider = new RecovererProvider()
         {
             @Override
-            public ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(ConfiguredObjectType type)
+            public ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(String type)
             {
-                @SuppressWarnings("unchecked")
-                final ConfiguredObjectRecoverer<T> recovever = mock(ConfiguredObjectRecoverer.class);
-                when(recovever.create(same(this), same(entry), any(Broker.class))).thenReturn(objectToRecoverer);
+                @SuppressWarnings({ "unchecked", "rawtypes" })
+                final ConfiguredObjectRecoverer<?  extends ConfiguredObject> recovever = new ConfiguredObjectRecoverer()
+                {
+                    @Override
+                    public ConfiguredObject create(RecovererProvider recovererProvider, ConfigurationEntry entry, ConfiguredObject... parents)
+                    {
+                        for (int i = 0; i < entries.length; i++)
+                        {
+                            ConfigurationEntry e = entries[i];
+                            if (entry == e)
+                            {
+                                return objectsToRecoverer[i];
+                            }
+                        }
+                        return null;
+                    }
+                };
+              
                 return recovever;
             }
         };

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProviderTest.java Fri Nov 16 14:49:00 2012
@@ -21,27 +21,30 @@
 package org.apache.qpid.server.configuration.startup;
 
 import static org.mockito.Mockito.mock;
+import junit.framework.TestCase;
 
 import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
-import org.apache.qpid.server.model.ConfiguredObjectType;
+import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.GroupProvider;
+import org.apache.qpid.server.model.Plugin;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.registry.IApplicationRegistry;
 
-import junit.framework.TestCase;
-
 public class DefaultRecovererProviderTest extends TestCase
 {
-
     public void testGetRecoverer()
     {
-        ConfiguredObjectType[] supportedTypes = {ConfiguredObjectType.BROKER,
-                ConfiguredObjectType.VIRTUAL_HOST, ConfiguredObjectType.AUTHENTICATION_PROVIDER,
-                ConfiguredObjectType.GROUP_PROVIDER, ConfiguredObjectType.PLUGIN, ConfiguredObjectType.PORT};
+        String[] supportedTypes = {Broker.class.getSimpleName(),
+        		VirtualHost.class.getSimpleName(), AuthenticationProvider.class.getSimpleName(),
+                GroupProvider.class.getSimpleName(), Plugin.class.getSimpleName(), Port.class.getSimpleName()};
 
         DefaultRecovererProvider provider = new DefaultRecovererProvider(mock(IApplicationRegistry.class));
-        for (ConfiguredObjectType configuredObjectType : supportedTypes)
+        for (String configuredObjectType : supportedTypes)
         {
             ConfiguredObjectRecoverer<?> recovever = provider.getRecoverer(configuredObjectType);
-            assertNotNull("Null recoveverer for type: " + configuredObjectType, recovever);
+            assertNotNull("Null recoverer for type: " + configuredObjectType, recovever);
         }
     }
 

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/model/configuration/ConfigurationEntryTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/model/configuration/ConfigurationEntryTest.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/model/configuration/ConfigurationEntryTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/model/configuration/ConfigurationEntryTest.java Fri Nov 16 14:49:00 2012
@@ -36,7 +36,8 @@ import junit.framework.TestCase;
 
 import org.apache.qpid.server.configuration.ConfigurationEntry;
 import org.apache.qpid.server.configuration.ConfigurationEntryStore;
-import org.apache.qpid.server.model.ConfiguredObjectType;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.VirtualHost;
 
 public class ConfigurationEntryTest extends TestCase
@@ -45,11 +46,11 @@ public class ConfigurationEntryTest exte
     {
         ConfigurationEntryStore store = mock(ConfigurationEntryStore.class);
 
-        ConfigurationEntry virtualHostEntry1 = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.VIRTUAL_HOST,
+        ConfigurationEntry virtualHostEntry1 = new ConfigurationEntry(UUID.randomUUID(), VirtualHost.class.getSimpleName(),
                 Collections.<String, Object> emptyMap(), Collections.<UUID> emptySet(), store);
-        ConfigurationEntry virtualHostEntry2 = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.VIRTUAL_HOST,
+        ConfigurationEntry virtualHostEntry2 = new ConfigurationEntry(UUID.randomUUID(), VirtualHost.class.getSimpleName(),
                 Collections.<String, Object> emptyMap(), Collections.<UUID> emptySet(), store);
-        ConfigurationEntry portEntry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.PORT,
+        ConfigurationEntry portEntry = new ConfigurationEntry(UUID.randomUUID(), Port.class.getSimpleName(),
                 Collections.<String, Object> emptyMap(), Collections.<UUID> emptySet(), store);
 
         when(store.getEntry(virtualHostEntry1.getId())).thenReturn(virtualHostEntry1);
@@ -60,14 +61,14 @@ public class ConfigurationEntryTest exte
         childrenIds.add(virtualHostEntry1.getId());
         childrenIds.add(virtualHostEntry2.getId());
         childrenIds.add(portEntry.getId());
-        ConfigurationEntry parentEntry = new ConfigurationEntry(UUID.randomUUID(), ConfiguredObjectType.BROKER,
+        ConfigurationEntry parentEntry = new ConfigurationEntry(UUID.randomUUID(), Broker.class.getSimpleName(),
                 Collections.<String, Object> emptyMap(), childrenIds, store);
 
-        Map<ConfiguredObjectType, Collection<ConfigurationEntry>> children = parentEntry.getChildren();
+        Map<String, Collection<ConfigurationEntry>> children = parentEntry.getChildren();
         assertNotNull("Null is returned for children", children);
         assertEquals("Unexpected size", 2, children.size());
-        Collection<ConfigurationEntry> virtualHosts = children.get(ConfiguredObjectType.VIRTUAL_HOST);
-        Collection<ConfigurationEntry> ports = children.get(ConfiguredObjectType.PORT);
+        Collection<ConfigurationEntry> virtualHosts = children.get(VirtualHost.class.getSimpleName());
+        Collection<ConfigurationEntry> ports = children.get(Port.class.getSimpleName());
         assertEquals("Unexpected virtual hosts",
                 new HashSet<ConfigurationEntry>(Arrays.asList(virtualHostEntry1, virtualHostEntry2)),
                 new HashSet<ConfigurationEntry>(virtualHosts));
@@ -80,12 +81,12 @@ public class ConfigurationEntryTest exte
         ConfigurationEntryStore store = mock(ConfigurationEntryStore.class);
 
         UUID id = UUID.randomUUID();
-        ConfigurationEntry entry1 = new ConfigurationEntry(id, ConfiguredObjectType.VIRTUAL_HOST,
+        ConfigurationEntry entry1 = new ConfigurationEntry(id, VirtualHost.class.getSimpleName(),
                 Collections.<String, Object> emptyMap(), Collections.singleton(UUID.randomUUID()), store);
-        ConfigurationEntry entry2 = new ConfigurationEntry(id, ConfiguredObjectType.VIRTUAL_HOST,
+        ConfigurationEntry entry2 = new ConfigurationEntry(id, VirtualHost.class.getSimpleName(),
                 Collections.<String, Object> emptyMap(), Collections.singleton(UUID.randomUUID()), store);
         ConfigurationEntry entryWithDifferentId = new ConfigurationEntry(UUID.randomUUID(),
-                ConfiguredObjectType.VIRTUAL_HOST, Collections.<String, Object> emptyMap(), Collections.singleton(UUID.randomUUID()), store);
+        		VirtualHost.class.getSimpleName(), Collections.<String, Object> emptyMap(), Collections.singleton(UUID.randomUUID()), store);
 
         assertTrue(entry1.hashCode() == entry2.hashCode());
         assertFalse(entry1.hashCode() == entryWithDifferentId.hashCode());
@@ -98,16 +99,16 @@ public class ConfigurationEntryTest exte
         UUID id = UUID.randomUUID();
         Map<String, Object> attributes1 = new HashMap<String, Object>();
         attributes1.put(VirtualHost.NAME, "name1");
-        ConfigurationEntry entry1 = new ConfigurationEntry(id, ConfiguredObjectType.VIRTUAL_HOST, attributes1,
+        ConfigurationEntry entry1 = new ConfigurationEntry(id, VirtualHost.class.getSimpleName(), attributes1,
                 Collections.singleton(UUID.randomUUID()), store);
 
         Map<String, Object> attributes2 = new HashMap<String, Object>();
         attributes2.put(VirtualHost.NAME, "name2");
 
-        ConfigurationEntry entry2 = new ConfigurationEntry(id, ConfiguredObjectType.VIRTUAL_HOST, attributes2,
+        ConfigurationEntry entry2 = new ConfigurationEntry(id, VirtualHost.class.getSimpleName(), attributes2,
                 Collections.singleton(UUID.randomUUID()), store);
         ConfigurationEntry entryWithDifferentId = new ConfigurationEntry(UUID.randomUUID(),
-                ConfiguredObjectType.VIRTUAL_HOST, attributes1, Collections.singleton(UUID.randomUUID()), store);
+        		VirtualHost.class.getSimpleName(), attributes1, Collections.singleton(UUID.randomUUID()), store);
 
         assertTrue(entry1.equals(entry2));
         assertFalse(entry1.equals(entryWithDifferentId));

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java Fri Nov 16 14:49:00 2012
@@ -78,7 +78,6 @@ public class JMXTestUtils
     public void setUp() throws IOException, ConfigurationException, Exception
     {
         _test.setConfigurationProperty("management.enabled", "true");
-        _test.setSystemProperty("qpid.use_custom_rmi_socket_factory", "false");
     }
 
     public void open() throws Exception

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java?rev=1410377&r1=1410376&r2=1410377&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java Fri Nov 16 14:49:00 2012
@@ -393,7 +393,7 @@ public class QpidBrokerTestCase extends 
 
         if (_brokerType.equals(BrokerType.INTERNAL) && !existingInternalBroker())
         {
-            setConfigurationProperty(ServerConfiguration.MGMT_CUSTOM_REGISTRY_SOCKET, String.valueOf(false));
+            setSystemProperty("qpid.use_custom_rmi_socket_factory", "false");
             testConfig = saveTestConfiguration(port, testConfiguration);
             _logger.info("Set test.config property to: " + testConfig);
             _logger.info("Set test.virtualhosts property to: " + virtualHostsConfig);



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