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]