Author: robbie
Date: Wed May  1 12:14:40 2013
New Revision: 1477965

URL: http://svn.apache.org/r1477965
Log:
QPID-4795: update naming of the UserManagement MBeans to remove restriction 
preventing there being multiple AuthenticationProviders capable of user 
management

Modified:
    
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
    
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java
    
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
    
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java

Modified: 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
 Wed May  1 12:14:40 2013
@@ -27,9 +27,11 @@ import org.apache.qpid.management.common
 import org.apache.qpid.server.jmx.AMQManagedObject;
 import org.apache.qpid.server.jmx.ManagedObject;
 import org.apache.qpid.server.jmx.ManagedObjectRegistry;
+import org.apache.qpid.server.model.AuthenticationProvider;
 import 
org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider;
 
 import javax.management.JMException;
+import javax.management.ObjectName;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.CompositeType;
@@ -51,6 +53,9 @@ public class UserManagementMBean extends
 
     private PasswordCredentialManagingAuthenticationProvider _authProvider;
 
+    private String _mbeanName;
+    private String _type;
+
     // Setup for the TabularType
     private static final TabularType _userlistDataType; // Datatype for 
representing User Lists
     private static final CompositeType _userDataType; // Composite type for 
representing User
@@ -81,14 +86,16 @@ public class UserManagementMBean extends
     public 
UserManagementMBean(PasswordCredentialManagingAuthenticationProvider provider, 
ManagedObjectRegistry registry) throws JMException
     {
         super(UserManagement.class, UserManagement.TYPE, registry);
-        register();
         _authProvider = provider;
+        _mbeanName = UserManagement.TYPE + "-" + _authProvider.getName();
+        _type = 
String.valueOf(_authProvider.getAttribute(AuthenticationProvider.TYPE));
+        register();
     }
 
     @Override
     public String getObjectInstanceName()
     {
-        return UserManagement.TYPE;
+        return ObjectName.quote(_mbeanName);
     }
 
     @Override
@@ -176,4 +183,10 @@ public class UserManagementMBean extends
     {
         return null;
     }
+
+    @Override
+    public String getAuthenticationProviderType()
+    {
+        return _type;
+    }
 }

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
 Wed May  1 12:14:40 2013
@@ -88,20 +88,6 @@ public class AuthenticationProviderFacto
                 AuthenticationProviderAdapter<?> authenticationProvider;
                 if (manager instanceof PrincipalDatabaseAuthenticationManager)
                 {
-                    // a temporary restriction to prevent creation of several 
instances
-                    // of 
PlainPasswordFileAuthenticationProvider/Base64MD5PasswordFileAuthenticationProvider
-                    // due to current limitation of JMX management which 
cannot cope
-                    // with several user management MBeans as MBean type is 
used as a name.
-
-                    // TODO: Remove this check after fixing of JMX management
-                    for (AuthenticationProvider provider : 
broker.getAuthenticationProviders())
-                    {
-                        if (provider instanceof 
PasswordCredentialManagingAuthenticationProvider)
-                        {
-                            throw new IllegalConfigurationException("An 
authentication provider which can manage users already exists ["
-                                    + provider.getName() + "]. Only one 
instance is allowed.");
-                        }
-                    }
                     authenticationProvider = new 
PrincipalDatabaseAuthenticationManagerAdapter(id, broker,
                             (PrincipalDatabaseAuthenticationManager) manager, 
attributes, factory.getAttributeNames());
                 }

Modified: 
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java
 Wed May  1 12:14:40 2013
@@ -33,7 +33,6 @@ import java.util.UUID;
 
 import junit.framework.TestCase;
 
-import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.Broker;
 import 
org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider;
@@ -114,8 +113,7 @@ public class AuthenticationProviderFacto
         return provider;
     }
 
-    @SuppressWarnings("unchecked")
-    public void 
testCreatePasswordCredentialManagingAuthenticationProviderFailsWhenAnotherOneAlreadyExist()
+    public void 
testCreatePasswordCredentialManagingAuthenticationProviderFailsWhenAnotherOneAlready()
     {
         Broker broker = mock(Broker.class);
         PasswordCredentialManagingAuthenticationProvider anotherProvider = 
mock(PasswordCredentialManagingAuthenticationProvider.class);
@@ -127,15 +125,12 @@ public class AuthenticationProviderFacto
         
when(loader.atLeastOneInstanceOf(AuthenticationManagerFactory.class)).thenReturn(Collections.singleton(managerFactory));
 
         AuthenticationProviderFactory providerFactory = new 
AuthenticationProviderFactory(loader);
-        try
-        {
-            providerFactory.create(UUID.randomUUID(), broker, new 
HashMap<String, Object>());
-            fail("Creation of anaother 
PasswordCredentialManagingAuthenticationProvider should fail");
-        }
-        catch (IllegalConfigurationException e)
-        {
-            // pass
-        }
+
+        UUID randomUUID = UUID.randomUUID();
+        AuthenticationProvider provider = providerFactory.create(randomUUID, 
broker, new HashMap<String, Object>());
+
+        assertNotNull("Provider is not created", provider);
+        assertEquals("Unexpected ID", randomUUID, provider.getId());
     }
 
     @SuppressWarnings("unchecked")

Modified: 
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
 (original)
+++ 
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ServerInformation.java
 Wed May  1 12:14:40 2013
@@ -46,7 +46,7 @@ public interface ServerInformation
      *  Qpid JMX API 1.1 can be assumed.
      */
     int QPID_JMX_API_MAJOR_VERSION = 2;
-    int QPID_JMX_API_MINOR_VERSION = 5;
+    int QPID_JMX_API_MINOR_VERSION = 6;
     
     
     /**

Modified: 
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
 (original)
+++ 
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
 Wed May  1 12:14:40 2013
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.management.common.mbeans;
 
+import org.apache.qpid.management.common.mbeans.annotations.MBeanAttribute;
 import org.apache.qpid.management.common.mbeans.annotations.MBeanOperation;
 import 
org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParameter;
 
@@ -118,5 +119,11 @@ public interface UserManagement
                     impact = MBeanOperationInfo.INFO)
     TabularData viewUsers();
 
-
+    /**
+     * The type of the underlying authentication provider being managed.
+     *
+     * @since Qpid JMX API 2.6
+     */
+    @MBeanAttribute(name="AuthenticationProviderType", description="The type 
of the underlying authentication provider being managed.")
+    String getAuthenticationProviderType();
 }

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
 Wed May  1 12:14:40 2013
@@ -23,7 +23,6 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -31,9 +30,6 @@ import javax.jms.Connection;
 import javax.jms.JMSException;
 
 import org.apache.qpid.management.common.mbeans.UserManagement;
-import org.apache.qpid.server.model.Port;
-import org.apache.qpid.server.model.Protocol;
-import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 import 
org.apache.qpid.server.security.auth.manager.AbstractPrincipalDatabaseAuthManagerFactory;
 import 
org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory;
@@ -74,7 +70,7 @@ public class UserManagementTest extends 
 
         _testUserName = getTestName() + System.currentTimeMillis();
 
-        _userManagement = _jmxUtils.getUserManagement();
+        _userManagement = 
_jmxUtils.getUserManagement(TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER);
     }
 
 
@@ -160,6 +156,12 @@ public class UserManagementTest extends 
         assertJmsConnectionSucceeds(_testUserName, TEST_PASSWORD);
     }
 
+    public void testGetAuthenticationProviderType() throws Exception
+    {
+        String actualType = _userManagement.getAuthenticationProviderType();
+        assertEquals("unexpected authentication provider type", 
getAuthenticationManagerType(), actualType);
+    }
+
     protected Passwd createPasswordEncodingUtility()
     {
         return new Passwd()

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
 Wed May  1 12:14:40 2013
@@ -60,7 +60,7 @@ public class AuthenticationProviderRestT
         }
     }
 
-    public void testPutCreateSecondPlainPrincipalDatabaseProviderFails() 
throws Exception
+    public void testPutCreateSecondPlainPrincipalDatabaseProviderSucceeds() 
throws Exception
     {
         File principalDatabase = 
getRestTestHelper().createTemporaryPasswdFile(new String[]{"admin2", "guest2", 
"test2"});
 
@@ -71,7 +71,7 @@ public class AuthenticationProviderRestT
         
attributes.put(PlainPasswordFileAuthenticationManagerFactory.ATTRIBUTE_PATH, 
principalDatabase.getAbsolutePath());
 
         int responseCode = 
getRestTestHelper().submitRequest("/rest/authenticationprovider/" + 
providerName, "PUT", attributes);
-        assertEquals("Expected to fail because we can have only one password 
provider", 409, responseCode);
+        assertEquals("failed to create authentication provider", 201, 
responseCode);
     }
 
     public void testPutCreateNewAnonymousProvider() throws Exception
@@ -107,19 +107,6 @@ public class AuthenticationProviderRestT
         assertEquals("Update with new ID should fail", 409, responseCode);
     }
 
-    public void testDeleteOfDefaultAuthenticationProviderFails() throws 
Exception
-    {
-        String providerName = 
TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER;
-
-        int responseCode = 
getRestTestHelper().submitRequest("/rest/authenticationprovider/" + 
providerName , "DELETE", null);
-        assertEquals("Unexpected response code", 409, responseCode);
-
-        List<Map<String, Object>> providerDetails = 
getRestTestHelper().getJsonAsList("/rest/authenticationprovider/" + 
providerName);
-        assertNotNull("Providers details cannot be null", providerDetails);
-        assertEquals("Unexpected number of providers", 1, 
providerDetails.size());
-        assertProvider(true, 
PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE, 
providerDetails.get(0));
-    }
-
     public void testDeleteOfUsedAuthenticationProviderFails() throws Exception
     {
         // create provider

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java?rev=1477965&r1=1477964&r2=1477965&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
 Wed May  1 12:14:40 2013
@@ -381,9 +381,10 @@ public class JMXTestUtils
         return getManagedObject(LoggingManagement.class, objectName);
     }
 
-    public UserManagement getUserManagement() throws 
MalformedObjectNameException
+    public UserManagement getUserManagement(String name) throws 
MalformedObjectNameException
     {
-        ObjectName objectName = new 
ObjectName("org.apache.qpid:type=UserManagement,name=UserManagement");
+        String umName = ObjectName.quote(UserManagement.TYPE + "-" + name);
+        ObjectName objectName = new 
ObjectName("org.apache.qpid:type=UserManagement,name=" + umName);
         return getManagedObject(UserManagement.class, objectName);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to