Author: kwall
Date: Wed Jun 27 11:21:16 2012
New Revision: 1354429

URL: http://svn.apache.org/viewvc?rev=1354429&view=rev
Log:
NO-JIRA: Implement reload principal data. Also implement system tests for JMX 
UserManagement against both plain and MD-5 digested passwords principal 
databases.

Added:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java
      - copied, changed from r1354023, 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java
Modified:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/build.xml
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBeanTest.java
    qpid/branches/java-config-and-management/qpid/java/broker/etc/log4j.xml
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java
    
qpid/branches/java-config-and-management/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
    qpid/branches/java-config-and-management/qpid/java/test-profiles/CPPExcludes
    qpid/branches/java-config-and-management/qpid/java/test-profiles/Excludes
    
qpid/branches/java-config-and-management/qpid/java/test-profiles/Java010Excludes

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/build.xml
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/build.xml?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/build.xml 
(original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/build.xml 
Wed Jun 27 11:21:16 2012
@@ -18,7 +18,7 @@
  -->
 <project name="Qpid Broker-Plugins JMX" default="build">
     <property name="module.depends" value="common broker broker-plugins 
broker-plugins-jmx management/common" />
-    <property name="module.test.depends" value="test broker/test common/test 
management/common" />
+    <property name="module.test.depends" value="systests test broker/test 
common/test management/common client" />
     
     <property name="module.manifest" value="MANIFEST.MF" />
     <property name="module.plugin" value="true" />

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBean.java
 Wed Jun 27 11:21:16 2012
@@ -24,7 +24,6 @@ import org.apache.log4j.Logger;
 
 import org.apache.qpid.management.common.mbeans.UserManagement;
 import org.apache.qpid.management.common.mbeans.annotations.MBeanDescription;
-import org.apache.qpid.management.common.mbeans.annotations.MBeanOperation;
 import org.apache.qpid.server.jmx.AMQManagedObject;
 import org.apache.qpid.server.jmx.ManagedObject;
 import org.apache.qpid.server.jmx.ManagedObjectRegistry;
@@ -42,6 +41,7 @@ import javax.management.openmbean.Tabula
 import javax.management.openmbean.TabularType;
 import javax.security.auth.login.AccountNotFoundException;
 
+import java.io.IOException;
 import java.util.Map;
 
 @MBeanDescription("User Management Interface")
@@ -131,12 +131,19 @@ public class UserManagementMBean extends
     @Override
     public boolean reloadData()
     {
-        //TODO - implement? deprecate?
-        throw new UnsupportedOperationException("The reload functionality is 
not currently supported");
+        try
+        {
+            _authProvider.reload();
+            return true;
+        }
+        catch (IOException e)
+        {
+            _logger.error("Unable to reload user data", e);
+            return false;
+        }
     }
 
     @Override
-    @MBeanOperation(name = "viewUsers", description = "All users that are 
currently available to the system.")
     public TabularData viewUsers()
     {
         Map<String, Map<String, String>> users = _authProvider.getUsers();

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBeanTest.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBeanTest.java?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBeanTest.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/UserManagementMBeanTest.java
 Wed Jun 27 11:21:16 2012
@@ -21,35 +21,30 @@
 
 package org.apache.qpid.server.jmx.mbeans;
 
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
 
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularData;
+import javax.security.auth.login.AccountNotFoundException;
+
+import junit.framework.TestCase;
 
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.qpid.management.common.mbeans.UserManagement;
-import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
-import org.apache.qpid.server.jmx.NoopManagedObjectRegistry;
+import org.apache.qpid.server.jmx.ManagedObjectRegistry;
 import 
org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider;
-import org.apache.qpid.server.model.adapter.AuthenticationProviderAdapter;
-import 
org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
-import 
org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager;
-import org.apache.qpid.server.util.InternalBrokerBaseCase;
-
-/** 
- * Tests the UserManagementMBean and its interaction with the 
PasswordCredentialManagingAuthenticationProvider.
- */
-public class UserManagementMBeanTest extends InternalBrokerBaseCase
+
+public class UserManagementMBeanTest extends TestCase
 {
-    private UserManagementMBean _umMBean;
-    
-    private File _passwordFile;
-    private PrincipalDatabaseAuthenticationManager _authManager;
-    private AuthenticationProviderAdapter<?> _authProvider;
+    private UserManagementMBean _userManagement;
+    private ManagedObjectRegistry _mockRegistry;
+    private PasswordCredentialManagingAuthenticationProvider _mockProvider;
 
     private static final String TEST_USERNAME = "testuser";
     private static final String TEST_PASSWORD = "password";
@@ -59,74 +54,92 @@ public class UserManagementMBeanTest ext
     {
         super.setUp();
 
-        _passwordFile = 
File.createTempFile(this.getClass().getName(),".password");
-        
-        createFreshTestPasswordFile();
-
-        ConfigurationPlugin config = 
getConfig(PlainPasswordFilePrincipalDatabase.class.getName(), "passwordFile", 
_passwordFile.getAbsolutePath());
-        _authManager = 
PrincipalDatabaseAuthenticationManager.FACTORY.newInstance(config);
-        _authProvider = 
AuthenticationProviderAdapter.createAuthenticationProviderAdapter(null, 
_authManager);
-        _umMBean = new 
UserManagementMBean((PasswordCredentialManagingAuthenticationProvider) 
_authProvider, new NoopManagedObjectRegistry());
+        _mockProvider = 
mock(PasswordCredentialManagingAuthenticationProvider.class);
+        _mockRegistry = mock(ManagedObjectRegistry.class);
+        _userManagement = new UserManagementMBean(_mockProvider, 
_mockRegistry);
     }
 
-    @Override
-    public void tearDown() throws Exception
+    public void testMBeanRegistersItself() throws Exception
     {
-        try
-        {
-            super.tearDown();
-        }
-        finally
-        {
-            //clean up test password files
-            File _oldPasswordFile = new File(_passwordFile.getAbsolutePath() + 
".old");
-            _oldPasswordFile.delete();
-            _passwordFile.delete();
-        }
+        UserManagementMBean userManagementMBean = new 
UserManagementMBean(_mockProvider, _mockRegistry);
+        verify(_mockRegistry).registerObject(userManagementMBean);
     }
 
-    public void testDeleteUser()
+    public void testDeleteUser() throws Exception
     {
-        assertEquals("Unexpected number of users before test", 
1,_umMBean.viewUsers().size());
-        assertTrue("Delete should return true to flag successful delete", 
_umMBean.deleteUser(TEST_USERNAME));
-        assertEquals("Unexpected number of users after test", 
0,_umMBean.viewUsers().size());
+        boolean deleteSuccess = _userManagement.deleteUser(TEST_USERNAME);
+        assertTrue("Expected successful delete", deleteSuccess);
+
+        verify(_mockProvider).deleteUser(TEST_USERNAME);
     }
 
-    public void testDeleteUserWhereUserDoesNotExist()
+    public void testDeleteUserWhereUserDoesNotExist() throws Exception
     {
-        assertEquals("Unexpected number of users before test", 
1,_umMBean.viewUsers().size());
-        assertFalse("Delete should return false to flag unsuccessful delete", 
_umMBean.deleteUser("made.up.username"));
-        assertEquals("Unexpected number of users after test", 
1,_umMBean.viewUsers().size());
+        
doThrow(AccountNotFoundException.class).when(_mockProvider).deleteUser(TEST_USERNAME);
 
+        boolean deleteSuccess = _userManagement.deleteUser(TEST_USERNAME);
+        assertFalse("Expected unsuccessful delete", deleteSuccess);
     }
     
-    public void testCreateUser()
+    public void testCreateUser() throws Exception
     {
-        assertEquals("Unexpected number of users before test", 
1,_umMBean.viewUsers().size());
-        assertTrue("Create should return true to flag successful create", 
_umMBean.createUser("newuser", "mypass"));
-        assertEquals("Unexpected number of users before test", 
2,_umMBean.viewUsers().size());
+        when(_mockProvider.createUser(TEST_USERNAME, TEST_PASSWORD, 
null)).thenReturn(true);
+
+        boolean createSuccess = _userManagement.createUser(TEST_USERNAME, 
TEST_PASSWORD);
+        assertTrue(createSuccess);
     }
 
     public void testCreateUserWhereUserAlreadyExists()
     {
-        assertEquals("Unexpected number of users before test", 
1,_umMBean.viewUsers().size());
-        assertFalse("Create should return false to flag unsuccessful create", 
_umMBean.createUser(TEST_USERNAME, "mypass"));
-        assertEquals("Unexpected number of users before test", 
1,_umMBean.viewUsers().size());
+        when(_mockProvider.createUser(TEST_USERNAME, TEST_PASSWORD, 
null)).thenReturn(false);
+
+        boolean createSuccess = _userManagement.createUser(TEST_USERNAME, 
TEST_PASSWORD);
+        assertFalse(createSuccess);
     }
 
-    public void testSetPassword()
+    public void testSetPassword() throws Exception
     {
-        assertTrue("Set password should return true to flag successful 
change", _umMBean.setPassword(TEST_USERNAME, "newpassword"));
+        boolean setPasswordSuccess = 
_userManagement.setPassword(TEST_USERNAME, TEST_PASSWORD);
+        assertTrue(setPasswordSuccess);
+
+        assertTrue("Set password should return true to flag successful 
change", setPasswordSuccess);
+
+        verify(_mockProvider).setPassword(TEST_USERNAME, TEST_PASSWORD);
     }
-    
-    public void testSetPasswordWhereUserDoesNotExist()
+
+    public void testSetPasswordWhereUserDoesNotExist() throws Exception
+    {
+        
doThrow(AccountNotFoundException.class).when(_mockProvider).setPassword(TEST_USERNAME,
 TEST_PASSWORD);
+
+        boolean setPasswordSuccess = 
_userManagement.setPassword(TEST_USERNAME, TEST_PASSWORD);
+
+        assertFalse("Set password should return false to flag unsuccessful 
change", setPasswordSuccess);
+    }
+
+    public void testReload() throws Exception
     {
-        assertFalse("Set password should return false to flag successful 
change", _umMBean.setPassword("made.up.username", "newpassword"));
+        boolean reloadSuccess = _userManagement.reloadData();
+
+        assertTrue("Reload should return true to flag succesful update", 
reloadSuccess);
+
+        verify(_mockProvider).reload();
     }
 
-    public void testViewUsers()
+    public void testReloadFails() throws Exception
     {
-        TabularData userList = _umMBean.viewUsers();
+        doThrow(IOException.class).when(_mockProvider).reload();
+
+        boolean reloadSuccess = _userManagement.reloadData();
+
+        assertFalse("Expected reload to fail", reloadSuccess);
+    }
+
+    public void testViewUsers() throws Exception
+    {
+        Map<String,String> args = Collections.emptyMap();
+        
when(_mockProvider.getUsers()).thenReturn(Collections.singletonMap(TEST_USERNAME,
 args));
+
+        TabularData userList = _userManagement.viewUsers();
 
         assertNotNull(userList);
         assertEquals("Unexpected number of users in user list", 1, 
userList.size());
@@ -141,42 +154,4 @@ public class UserManagementMBeanTest ext
         assertTrue(userRec.containsKey(UserManagement.RIGHTS_ADMIN));
         assertEquals(false, userRec.get(UserManagement.RIGHTS_ADMIN));
     }
-
-    // ============================ Utility methods =========================
-
-    private void createFreshTestPasswordFile()
-    {
-        try
-        {
-            BufferedWriter passwordWriter = new BufferedWriter(new 
FileWriter(_passwordFile, false));
-            passwordWriter.write(TEST_USERNAME + ":" + TEST_PASSWORD);
-            passwordWriter.newLine();
-            passwordWriter.flush();
-            passwordWriter.close();
-        }
-        catch (IOException e)
-        {
-            fail("Unable to create test password file: " + e.getMessage());
-        }
-    }
-    
-    private ConfigurationPlugin getConfig(final String clazz, final String 
argName, final String argValue) throws Exception
-    {
-        final ConfigurationPlugin config = new 
PrincipalDatabaseAuthenticationManager.PrincipalDatabaseAuthenticationManagerConfiguration();
-
-        XMLConfiguration xmlconfig = new XMLConfiguration();
-        xmlconfig.addProperty("pd-auth-manager.principal-database.class", 
clazz);
-
-        if (argName != null)
-        {
-            
xmlconfig.addProperty("pd-auth-manager.principal-database.attributes.attribute.name",
 argName);
-            
xmlconfig.addProperty("pd-auth-manager.principal-database.attributes.attribute.value",
 argValue);
-        }
-
-        // Create a CompositeConfiguration as this is what the broker uses
-        CompositeConfiguration composite = new CompositeConfiguration();
-        composite.addConfiguration(xmlconfig);
-        config.setConfiguration("security", xmlconfig);
-        return config;
-    }
 }

Added: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java?rev=1354429&view=auto
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
 (added)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementTest.java
 Wed Jun 27 11:21:16 2012
@@ -0,0 +1,251 @@
+/*
+ * 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.systest.management.jmx;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import javax.jms.Connection;
+import javax.jms.JMSException;
+
+import org.apache.qpid.management.common.mbeans.UserManagement;
+import 
org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+import org.apache.qpid.test.utils.JMXTestUtils;
+import org.apache.qpid.test.utils.QpidBrokerTestCase;
+import org.apache.qpid.tools.security.Passwd;
+
+/**
+ * System test for User Management.
+ *
+ */
+public class UserManagementTest extends QpidBrokerTestCase
+{
+    private static final String TEST_NEWPASSWORD = "newpassword";
+    private static final String TEST_PASSWORD = "password";
+    private JMXTestUtils _jmxUtils;
+    private String _testUserName;
+    private File _passwordFile;
+    private UserManagement _userManagement;
+    private Passwd _passwd;
+
+    public void setUp() throws Exception
+    {
+        _passwd = createPasswordEncodingUtility();
+        _passwordFile = createTemporaryPasswordFileWithJmxAdminUser();
+
+        
setConfigurationProperty("security.pd-auth-manager.principal-database.class", 
getPrincipalDatabaseImplClass().getName());
+        
setConfigurationProperty("security.pd-auth-manager.principal-database.attributes.attribute.name",
 "passwordFile");
+        
setConfigurationProperty("security.pd-auth-manager.principal-database.attributes.attribute.value",
 _passwordFile.getAbsolutePath());
+
+        _jmxUtils = new JMXTestUtils(this);
+        _jmxUtils.setUp();
+
+        super.setUp();
+        _jmxUtils.open();
+
+        _testUserName = getTestName() + System.currentTimeMillis();
+
+        _userManagement = _jmxUtils.getUserManagement();
+    }
+
+
+    public void tearDown() throws Exception
+    {
+        try
+        {
+            if (_jmxUtils != null)
+            {
+                _jmxUtils.close();
+            }
+        }
+        finally
+        {
+            super.tearDown();
+        }
+    }
+
+    public void testCreateUser() throws Exception
+    {
+        final int initialNumberOfUsers = _userManagement.viewUsers().size();
+        assertFileDoesNotContainsPasswordForUser(_testUserName);
+
+        boolean success = _userManagement.createUser(_testUserName, 
TEST_PASSWORD);
+        assertTrue("Should have been able to create new user " + 
_testUserName, success);
+        assertEquals("Unexpected number of users after add", 
initialNumberOfUsers + 1, _userManagement.viewUsers().size());
+
+        assertFileContainsPasswordForUser(_testUserName);
+    }
+
+    public void testJmsLoginForNewUser() throws Exception
+    {
+        assertJmsConnectionFails(_testUserName, TEST_PASSWORD);
+        testCreateUser();
+
+        assertJmsConnectionSucceeds(_testUserName, TEST_PASSWORD);
+    }
+
+    public void testDeleteUser() throws Exception
+    {
+        final int initialNumberOfUsers = _userManagement.viewUsers().size();
+
+        testCreateUser();
+
+        boolean success = _userManagement.deleteUser(_testUserName);
+        assertTrue("Should have been able to delete new user " + 
_testUserName, success);
+        assertEquals("Unexpected number of users after delete", 
initialNumberOfUsers, _userManagement.viewUsers().size());
+        assertFileDoesNotContainsPasswordForUser(_testUserName);
+    }
+
+    public void testJmsLoginNotPossibleForDeletedUser() throws Exception
+    {
+        testDeleteUser();
+
+        assertJmsConnectionFails(_testUserName, TEST_PASSWORD);
+    }
+
+    public void testSetPassword() throws Exception
+    {
+        testCreateUser();
+
+        _userManagement.setPassword(_testUserName, TEST_NEWPASSWORD);
+
+        assertFileContainsPasswordForUser(_testUserName);
+    }
+
+    public void testJmsLoginForPasswordChangedUser() throws Exception
+    {
+        testSetPassword();
+
+        assertJmsConnectionSucceeds(_testUserName, TEST_NEWPASSWORD);
+        assertJmsConnectionFails(_testUserName, TEST_PASSWORD);
+    }
+
+    public void testReload() throws Exception
+    {
+        writePasswordFile(_passwordFile, JMXTestUtils.DEFAULT_USERID, 
JMXTestUtils.DEFAULT_PASSWORD, _testUserName, TEST_PASSWORD);
+
+        assertJmsConnectionFails(_testUserName, TEST_PASSWORD);
+
+        _userManagement.reloadData();
+
+        assertJmsConnectionSucceeds(_testUserName, TEST_PASSWORD);
+    }
+
+    protected Passwd createPasswordEncodingUtility()
+    {
+        return new Passwd()
+        {
+            @Override
+            public String getOutput(String username, String password)
+            {
+                return username + ":" + password;
+            }
+        };
+    }
+
+    protected Class<? extends PrincipalDatabase> 
getPrincipalDatabaseImplClass()
+    {
+        return PlainPasswordFilePrincipalDatabase.class;
+    }
+
+    private File createTemporaryPasswordFileWithJmxAdminUser() throws Exception
+    {
+        File passwordFile = File.createTempFile("passwd", "pwd");
+        passwordFile.deleteOnExit();
+        writePasswordFile(passwordFile, JMXTestUtils.DEFAULT_USERID, 
JMXTestUtils.DEFAULT_PASSWORD);
+        return passwordFile;
+    }
+
+    private void writePasswordFile(File passwordFile, String... 
userNamePasswordPairs) throws Exception
+    {
+        FileWriter writer = null;
+        try
+        {
+            writer = new FileWriter(passwordFile);
+            for (int i = 0; i < userNamePasswordPairs.length; i=i+2)
+            {
+                String username = userNamePasswordPairs[i];
+                String password = userNamePasswordPairs[i+1];
+                writer.append(_passwd.getOutput(username, password) + "\n");
+            }
+        }
+        finally
+        {
+            writer.close();
+        }
+    }
+
+
+    private void assertFileContainsPasswordForUser(String username) throws 
IOException
+    {
+        assertTrue("Could not find password for user " + username + " within " 
+ _passwordFile, passwordFileContainsUser(username));
+    }
+
+    private void assertFileDoesNotContainsPasswordForUser(String username) 
throws IOException
+    {
+        assertFalse("Could not find password for user " + username + " within 
" + _passwordFile, passwordFileContainsUser(username));
+    }
+
+    private boolean passwordFileContainsUser(String username) throws 
IOException
+    {
+        BufferedReader reader = null;
+        try
+        {
+            reader = new BufferedReader(new FileReader(_passwordFile));
+            String line = reader.readLine();
+            while(line != null)
+            {
+                if (line.startsWith(username))
+                {
+                    return true;
+                }
+                line = reader.readLine();
+            }
+
+            return false;
+        }
+        finally
+        {
+            reader.close();
+        }
+    }
+
+    private void assertJmsConnectionSucceeds(String username, String password) 
throws Exception
+    {
+        Connection connection = getConnection(username, password);
+        assertNotNull(connection);
+    }
+
+    private void assertJmsConnectionFails(String username, String password) 
throws Exception
+    {
+        try
+        {
+            getConnection(username, password);
+            fail("Exception not thrown");
+        }
+        catch (JMSException e)
+        {
+            // PASS
+        }
+    }
+}

Copied: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java
 (from r1354023, 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java)
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java&p1=qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java&r1=1354023&r2=1354429&rev=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/jmx/src/test/java/org/apache/qpid/systest/management/jmx/UserManagementWithBase64MD5PasswordsTest.java
 Wed Jun 27 11:21:16 2012
@@ -1,5 +1,4 @@
 /*
- *
  * 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
@@ -16,22 +15,25 @@
  * 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;
-
-import java.util.Map;
+package org.apache.qpid.systest.management.jmx;
 
-import javax.security.auth.login.AccountNotFoundException;
+import 
org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+import org.apache.qpid.tools.security.Passwd;
 
-public interface PasswordCredentialManagingAuthenticationProvider extends 
AuthenticationProvider
+public class UserManagementWithBase64MD5PasswordsTest extends 
UserManagementTest
 {
-    boolean createUser(String username, String password, Map<String, String> 
attributes);
-
-    void deleteUser(String user) throws AccountNotFoundException;
-
-    void setPassword(String username, String password) throws 
AccountNotFoundException;
-
-    Map<String, Map<String,String>>  getUsers();
+    @Override
+    protected Passwd createPasswordEncodingUtility()
+    {
+        return new Passwd();
+    }
+
+    @Override
+    protected Class<? extends PrincipalDatabase> 
getPrincipalDatabaseImplClass()
+    {
+        return Base64MD5PasswordFilePrincipalDatabase.class;
+    }
 
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/etc/log4j.xml
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/etc/log4j.xml?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/broker/etc/log4j.xml 
(original)
+++ qpid/branches/java-config-and-management/qpid/java/broker/etc/log4j.xml Wed 
Jun 27 11:21:16 2012
@@ -87,10 +87,6 @@
         </layout>
     </appender>
 
-    <category additivity="true" 
name="org.apache.qpid.server.queue.AMQQueueMBean">
-        <priority value="info"/>
-    </category>
-
     <!-- Provide warnings to standard output -->
     <category additivity="true" name="org.apache.qpid">
         <priority value="warn"/>
@@ -101,8 +97,6 @@
       <level value="info"/>
     </logger>
 
-
-
     <!-- Examples of additional logging settings -->
     <!-- Used to generate extra debug. See debug.log4j.xml -->
     

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java
 Wed Jun 27 11:21:16 2012
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.model;
 
+import java.io.IOException;
 import java.util.Map;
 
 import javax.security.auth.login.AccountNotFoundException;
@@ -34,4 +35,12 @@ public interface PasswordCredentialManag
 
     Map<String, Map<String,String>>  getUsers();
 
+    /**
+     * Refreshes the cache of user and password data from the underlying 
storage.
+     *
+     * If there is a failure whilst reloading the data, the implementation must
+     * throw an {@link IOException} and revert to using the previous cached 
username
+     * and password data.  In this way, the broker will remain usable.
+     */
+    void reload() throws IOException;
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
 Wed Jun 27 11:21:16 2012
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.model.adapter;
 
+import java.io.IOException;
 import java.security.AccessControlException;
 import java.security.Principal;
 import java.util.ArrayList;
@@ -29,8 +30,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.security.auth.login.AccountNotFoundException;
+
+import org.apache.log4j.Logger;
 import org.apache.qpid.server.model.*;
-import org.apache.qpid.server.model.User;
 import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
@@ -40,6 +42,8 @@ import org.apache.qpid.server.security.a
 
 public abstract class AuthenticationProviderAdapter<T extends 
AuthenticationManager> extends AbstractAdapter implements AuthenticationProvider
 {
+    private static final Logger LOGGER = 
Logger.getLogger(AuthenticationProviderAdapter.class);
+
     private final BrokerAdapter _broker;
     private final T _authManager;
 
@@ -78,13 +82,13 @@ public abstract class AuthenticationProv
     @Override
     public String setName(String currentName, String desiredName) throws 
IllegalStateException, AccessControlException
     {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return null;
     }
 
     @Override
     public State getActualState()
     {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return null;
     }
 
     @Override
@@ -97,7 +101,6 @@ public abstract class AuthenticationProv
     public void setDurable(boolean durable)
             throws IllegalStateException, AccessControlException, 
IllegalArgumentException
     {
-        //To change body of implemented methods use File | Settings | File 
Templates.
     }
 
     @Override
@@ -110,7 +113,7 @@ public abstract class AuthenticationProv
     public LifetimePolicy setLifetimePolicy(LifetimePolicy expected, 
LifetimePolicy desired)
             throws IllegalStateException, AccessControlException, 
IllegalArgumentException
     {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return null;
     }
 
     @Override
@@ -177,13 +180,13 @@ public abstract class AuthenticationProv
         {
             // TODO
         }
-        return super.getAttribute(name);    //To change body of overridden 
methods use File | Settings | File Templates.
+        return super.getAttribute(name);
     }
 
     @Override
     public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> 
clazz)
     {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return null;
     }
 
     @Override
@@ -191,7 +194,7 @@ public abstract class AuthenticationProv
                                                       Map<String, Object> 
attributes,
                                                       ConfiguredObject... 
otherParents)
     {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return null;
     }
 
     private static class SimpleAuthenticationProviderAdapter extends 
AuthenticationProviderAdapter<AuthenticationManager>
@@ -251,6 +254,18 @@ public abstract class AuthenticationProv
             getPrincipalDatabase().updatePassword(new 
UsernamePrincipal(username), password.toCharArray());
         }
 
+        public void reload() throws IOException
+        {
+            if(getSecurityManager().authoriseMethod(Operation.UPDATE, 
"UserManagement", "reload"))
+            {
+                getPrincipalDatabase().reload();
+            }
+            else
+            {
+                throw new AccessControlException("Do not have permission to 
reload principal database");
+            }
+        }
+
         @Override
         public Map<String, Map<String, String>> getUsers()
         {
@@ -433,7 +448,7 @@ public abstract class AuthenticationProv
                 {
                     return getName();
                 }
-                return super.getAttribute(name);    //To change body of 
overridden methods use File | Settings | File Templates.
+                return super.getAttribute(name);
             }
 
             @Override
@@ -461,12 +476,11 @@ public abstract class AuthenticationProv
                     }
                     catch (AccountNotFoundException e)
                     {
-                        // TODO - log?
+                        LOGGER.warn("Failed to delete user " + _user, e);
                     }
                     return State.DELETED;
                 }
-                return super.setDesiredState(currentState,
-                                             desiredState);    //To change 
body of overridden methods use File | Settings | File Templates.
+                return super.setDesiredState(currentState, desiredState);
             }
         }
     }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java
 Wed Jun 27 11:21:16 2012
@@ -198,7 +198,7 @@ public abstract class AbstractPasswordFi
         try
         {
             _userUpdate.lock();
-            _userMap.clear();
+            final Map<String, U> newUserMap = new HashMap<String, U>();
 
             BufferedReader reader = null;
             try
@@ -216,7 +216,7 @@ public abstract class AbstractPasswordFi
 
                     U user = createUserFromFileData(result);
                     getLogger().info("Created user:" + user);
-                    _userMap.put(user.getName(), user);
+                    newUserMap.put(user.getName(), user);
                 }
             }
             finally
@@ -226,6 +226,9 @@ public abstract class AbstractPasswordFi
                     reader.close();
                 }
             }
+
+            _userMap.clear();
+            _userMap.putAll(newUserMap);
         }
         finally
         {

Modified: 
qpid/branches/java-config-and-management/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
 Wed Jun 27 11:21:16 2012
@@ -54,8 +54,8 @@ import java.util.Set;
  */
 public class JMXTestUtils
 {
-    private static final String DEFAULT_PASSWORD = "admin";
-    private static final String DEFAULT_USERID = "admin";
+    public static final String DEFAULT_PASSWORD = "admin";
+    public static final String DEFAULT_USERID = "admin";
 
     private MBeanServerConnection _mbsc;
     private JMXConnector _jmxc;
@@ -160,7 +160,6 @@ public class JMXTestUtils
             throws IOException, JMException, MBeanException
     {
         ManagedBroker managedBroker = getManagedBroker(virtualHostName);
-
         managedBroker.unregisterExchange(exchange);
     }
     
@@ -176,87 +175,81 @@ public class JMXTestUtils
             throws IOException, JMException, MBeanException
     {
         ManagedBroker managedBroker = getManagedBroker(virtualHostName);
-
         managedBroker.deleteQueue(queueName);
     }
-    
+
     /**
-        * Sets the logging level.
+     * Sets the logging level.
      *
      * @throws JMException
      * @throws IOException if there is a problem with the JMX Connection
      * @throws MBeanException
      */
     public void setRuntimeLoggerLevel(String logger, String level)
-               throws IOException, JMException, MBeanException
+        throws IOException, JMException, MBeanException
     {
         LoggingManagement loggingManagement = getLoggingManagement();
-               
         loggingManagement.setRuntimeLoggerLevel(logger, level);
     }
-    
+
     /**
-        * Reload logging config file.
+     * Reload logging config file.
      *
      * @throws JMException
      * @throws IOException if there is a problem with the JMX Connection
      * @throws MBeanException
      */
     public void reloadConfigFile()
-               throws IOException, JMException, MBeanException
+        throws IOException, JMException, MBeanException
     {
         LoggingManagement loggingManagement = getLoggingManagement();
-               
         loggingManagement.reloadConfigFile();
     }
     
     /**
-        * Get list of available logger levels.
+     * Get list of available logger levels.
      *
      * @throws JMException
      * @throws IOException if there is a problem with the JMX Connection
      * @throws MBeanException
      */
     public String[] getAvailableLoggerLevels()
-               throws IOException, JMException, MBeanException
+        throws IOException, JMException, MBeanException
     {
         LoggingManagement loggingManagement = getLoggingManagement();
-               
         return loggingManagement.getAvailableLoggerLevels();
     }
-    
+
     /**
-        * Set root logger level.
+     * Set root logger level.
      *
      * @throws JMException
      * @throws IOException if there is a problem with the JMX Connection
      * @throws MBeanException
      */
     public void setRuntimeRootLoggerLevel(String level)
-               throws IOException, JMException, MBeanException
+        throws IOException, JMException, MBeanException
     {
         LoggingManagement loggingManagement = getLoggingManagement();
-               
         loggingManagement.setRuntimeRootLoggerLevel(level);
     }
-    
+
     /**
-        * Get root logger level.
+     * Get root logger level.
      *
      * @throws JMException
      * @throws IOException if there is a problem with the JMX Connection
      * @throws MBeanException
      */
     public String getRuntimeRootLoggerLevel()
-               throws IOException, JMException, MBeanException
+        throws IOException, JMException, MBeanException
     {
         LoggingManagement loggingManagement = getLoggingManagement();
-               
         return loggingManagement.getRuntimeRootLoggerLevel();
     }
     
     /**
-     * Retrive the ObjectName for a Virtualhost.
+     * Retrieve the ObjectName for a Virtualhost.
      *
      * This is then used to create a proxy to the ManagedBroker MBean.
      *
@@ -277,12 +270,12 @@ public class JMXTestUtils
 
         // We have verified we have only one value in objectNames so return it
         ObjectName objectName = objectNames.iterator().next();
-               _test.getLogger().info("Loading: " + objectName);
+        _test.getLogger().info("Loading: " + objectName);
         return objectName;
     }
 
     /**
-     * Retrive the ObjectName for the given Queue on a Virtualhost.
+     * Retrieve the ObjectName for the given Queue on a Virtualhost.
      *
      * This is then used to create a proxy to the ManagedQueue MBean.
      *
@@ -305,7 +298,7 @@ public class JMXTestUtils
 
         // We have verified we have only one value in objectNames so return it
         ObjectName objectName = objectNames.iterator().next();
-               _test.getLogger().info("Loading: " + objectName);
+        _test.getLogger().info("Loading: " + objectName);
         return objectName;
     }
 
@@ -333,7 +326,7 @@ public class JMXTestUtils
 
         // We have verified we have only one value in objectNames so return it
         ObjectName objectName = objectNames.iterator().next();
-               _test.getLogger().info("Loading: " + objectName);
+        _test.getLogger().info("Loading: " + objectName);
         return objectName;
     }
 
@@ -346,7 +339,7 @@ public class JMXTestUtils
         _test.assertEquals("Unexpected number of objects matching " + 
managedClass + " returned", 1, objectNames.size());
 
         ObjectName objectName = objectNames.iterator().next();
-               _test.getLogger().info("Loading: " + objectName);
+        _test.getLogger().info("Loading: " + objectName);
         return getManagedObject(managedClass, objectName);
     }
 
@@ -379,34 +372,34 @@ public class JMXTestUtils
     {
         return getManagedObject(ManagedBroker.class, 
getVirtualHostManagerObjectName(virtualHost));
     }
-       
+
     public ManagedExchange getManagedExchange(String exchangeName)
     {
-               ObjectName objectName = getExchangeObjectName("test", 
exchangeName);
+        ObjectName objectName = getExchangeObjectName("test", exchangeName);
         return MBeanServerInvocationHandler.newProxyInstance(_mbsc, 
objectName, ManagedExchange.class, false);
     }
-    
+
     public ManagedQueue getManagedQueue(String queueName)
     {
         ObjectName objectName = getQueueObjectName("test", queueName);
         return getManagedObject(ManagedQueue.class, objectName);
     }
 
-       public LoggingManagement getLoggingManagement() throws 
MalformedObjectNameException
+    public LoggingManagement getLoggingManagement() throws 
MalformedObjectNameException
     {
-               ObjectName objectName = new 
ObjectName("org.apache.qpid:type=LoggingManagement,name=LoggingManagement");
+        ObjectName objectName = new 
ObjectName("org.apache.qpid:type=LoggingManagement,name=LoggingManagement");
         return getManagedObject(LoggingManagement.class, objectName);
     }
-       
-       public ConfigurationManagement getConfigurationManagement() throws 
MalformedObjectNameException
+
+    public ConfigurationManagement getConfigurationManagement() throws 
MalformedObjectNameException
     {
-               ObjectName objectName = new 
ObjectName("org.apache.qpid:type=ConfigurationManagement,name=ConfigurationManagement");
+        ObjectName objectName = new 
ObjectName("org.apache.qpid:type=ConfigurationManagement,name=ConfigurationManagement");
         return getManagedObject(ConfigurationManagement.class, objectName);
     }
-       
-       public UserManagement getUserManagement() throws 
MalformedObjectNameException
+
+    public UserManagement getUserManagement() throws 
MalformedObjectNameException
     {
-               ObjectName objectName = new 
ObjectName("org.apache.qpid:type=UserManagement,name=UserManagement");
+        ObjectName objectName = new 
ObjectName("org.apache.qpid:type=UserManagement,name=UserManagement");
         return getManagedObject(UserManagement.class, objectName);
     }
 

Modified: 
qpid/branches/java-config-and-management/qpid/java/test-profiles/CPPExcludes
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/test-profiles/CPPExcludes?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/test-profiles/CPPExcludes 
(original)
+++ 
qpid/branches/java-config-and-management/qpid/java/test-profiles/CPPExcludes 
Wed Jun 27 11:21:16 2012
@@ -102,10 +102,8 @@ org.apache.qpid.server.logging.actors.*
 
 // CPP Broker does not have a JMX interface to test
 org.apache.qpid.management.jmx.*
-org.apache.qpid.server.queue.AMQQueueMBeanTest#*
-org.apache.qpid.server.exchange.ExchangeMBeanTest#*
-org.apache.qpid.server.AMQBrokerManagerMBeanTest#*
-org.apache.qpid.server.protocol.AMQProtocolSessionMBeanTest#*
+org.apache.qpid.server.jmx.mbeans.*
+org.apache.qpid.systest.management.jmx.*
 
 // JMX is used in this test for validation
 org.apache.qpid.server.queue.ModelTest#*

Modified: 
qpid/branches/java-config-and-management/qpid/java/test-profiles/Excludes
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/test-profiles/Excludes?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- qpid/branches/java-config-and-management/qpid/java/test-profiles/Excludes 
(original)
+++ qpid/branches/java-config-and-management/qpid/java/test-profiles/Excludes 
Wed Jun 27 11:21:16 2012
@@ -43,5 +43,3 @@ org.apache.qpid.systest.disttest.endtoen
 org.apache.qpid.management.jmx.ManagementActorLoggingTest#*
 # Expects management log messages in SystemOut that arent present anymore due 
to move to plugin
 org.apache.qpid.server.logging.ManagementLoggingTest#*
-#Need to implement a new way to instantiate the BDBHA MBean
-#org.apache.qpid.server.store.berkeleydb.*

Modified: 
qpid/branches/java-config-and-management/qpid/java/test-profiles/Java010Excludes
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/test-profiles/Java010Excludes?rev=1354429&r1=1354428&r2=1354429&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/test-profiles/Java010Excludes
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/test-profiles/Java010Excludes
 Wed Jun 27 11:21:16 2012
@@ -65,3 +65,8 @@ org.apache.qpid.client.failover.AddressB
 // QPID-3604: Immediate Prefetch no longer supported by 0-10
 
org.apache.qpid.client.AsynchMessageListenerTest#testImmediatePrefetchWithMessageListener
 
+// QPID-4090: Can't connect from Java Client to Java Broker when Broker uses 
Base64MD5PasswordFilePrincipalDatabase principal database (0-10 protocol only)
+org.apache.qpid.systest.management.jmx.UserManagementWithBase64MD5PasswordsTest#testJmsLoginForNewUser
+org.apache.qpid.systest.management.jmx.UserManagementWithBase64MD5PasswordsTest#testJmsLoginNotPossibleForDeletedUser
+org.apache.qpid.systest.management.jmx.UserManagementWithBase64MD5PasswordsTest#testJmsLoginForPasswordChangedUser
+org.apache.qpid.systest.management.jmx.UserManagementWithBase64MD5PasswordsTest#testReload



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

Reply via email to