Author: lquack
Date: Tue Aug  9 09:45:58 2016
New Revision: 1755587

URL: http://svn.apache.org/viewvc?rev=1755587&view=rev
Log:
QPID-7346: [Java Broker] Make QpidPrincipal#equals() take the origin into 
account

Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java
    
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java?rev=1755587&r1=1755586&r2=1755587&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/auth/UsernamePrincipal.java
 Tue Aug  9 09:45:58 2016
@@ -56,30 +56,37 @@ public class UsernamePrincipal implement
     }
 
     @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        return prime * _name.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj)
+    public boolean equals(final Object o)
     {
-        if (this == obj)
+        if (this == o)
         {
             return true;
         }
-        else
+        if (o == null || getClass() != o.getClass())
+        {
+            return false;
+        }
+
+        final UsernamePrincipal that = (UsernamePrincipal) o;
+
+        if (!_name.equals(that._name))
         {
-            if (obj instanceof UsernamePrincipal)
-            {
-                UsernamePrincipal other = (UsernamePrincipal) obj;
-                return _name.equals(other._name);
-            }
-            else
-            {
-                return false;
-            }
+            return false;
         }
+        if (_authenticationProvider == null || that._authenticationProvider == 
null)
+        {
+            return _authenticationProvider == null && 
that._authenticationProvider == null;
+        }
+
+        return 
(_authenticationProvider.getType().equals(that._authenticationProvider.getType())
+                && 
_authenticationProvider.getName().equals(that._authenticationProvider.getName()));
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = _name.hashCode();
+        result = 31 * result + (_authenticationProvider != null ? 
_authenticationProvider.hashCode() : 0);
+        return result;
     }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java?rev=1755587&r1=1755586&r2=1755587&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/GroupPrincipal.java
 Tue Aug  9 09:45:58 2016
@@ -23,9 +23,7 @@ package org.apache.qpid.server.security.
 import java.security.Principal;
 import java.util.Enumeration;
 
-import org.apache.qpid.server.model.AuthenticationProvider;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.GroupProvider;
 import org.apache.qpid.server.security.QpidPrincipal;
 
 /**
@@ -38,21 +36,16 @@ public class GroupPrincipal implements Q
 {
     /** Name of the group */
     private final String _groupName;
-    private final GroupProvider<?> _groupProvider;
-    private final AuthenticationProvider<?> _groupAuthProvider;
+    private final ConfiguredObject<?> _origin;
 
-    public GroupPrincipal(final String groupName, final GroupProvider<?> 
groupProvider)
-    {
-        _groupName = groupName;
-        _groupProvider = groupProvider;
-        _groupAuthProvider = null;
-    }
-
-    public GroupPrincipal(final String groupName, final 
AuthenticationProvider<?> groupAuthProvider)
+    public GroupPrincipal(final String groupName, final ConfiguredObject<?> 
origin)
     {
+        if (groupName == null)
+        {
+            throw new IllegalArgumentException("group name cannot be null");
+        }
         _groupName = groupName;
-        _groupProvider = null;
-        _groupAuthProvider = groupAuthProvider;
+        _origin = origin;
     }
 
     public String getName()
@@ -83,39 +76,36 @@ public class GroupPrincipal implements Q
     @Override
     public ConfiguredObject<?> getOrigin()
     {
-        return (_groupAuthProvider != null ? _groupAuthProvider : 
_groupProvider);
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode()
-    {
-        final int prime = 37;
-        return prime * _groupName.hashCode();
+        return _origin;
     }
 
-    /**
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj)
+    @Override
+    public boolean equals(final Object o)
     {
-        if (this == obj)
+        if (this == o)
         {
             return true;
         }
-        else
+        if (o == null || getClass() != o.getClass())
+        {
+            return false;
+        }
+
+        final GroupPrincipal that = (GroupPrincipal) o;
+
+        if (!_groupName.equals(that._groupName))
         {
-            if (obj instanceof GroupPrincipal)
-            {
-                GroupPrincipal other = (GroupPrincipal) obj;
-                return _groupName.equals(other._groupName);
-            }
-            else
-            {
-                return false;
-            }
+            return false;
         }
+        return _origin != null ? _origin.equals(that._origin) : that._origin 
== null;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = _groupName.hashCode();
+        result = 31 * result + (_origin != null ? _origin.hashCode() : 0);
+        return result;
     }
 
     @Override

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java?rev=1755587&r1=1755586&r2=1755587&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java
 Tue Aug  9 09:45:58 2016
@@ -110,7 +110,7 @@ public class ExternalAuthenticationManag
     public void testAuthenticatePrincipalCnOnly() throws Exception
     {
         X500Principal principal = new X500Principal("CN=person");
-        UsernamePrincipal expectedPrincipal = new UsernamePrincipal("person", 
null);
+        UsernamePrincipal expectedPrincipal = new UsernamePrincipal("person", 
_manager);
         SaslServer saslServer = _manager.createSaslServer("EXTERNAL", 
"example.example.com", principal);
 
         AuthenticationResult result = _manager.authenticate(saslServer, new 
byte[0]);
@@ -125,7 +125,7 @@ public class ExternalAuthenticationManag
     public void testAuthenticatePrincipalCnAndDc() throws Exception
     {
         X500Principal principal = new X500Principal("CN=person, DC=example, 
DC=com");
-        UsernamePrincipal expectedPrincipal = new 
UsernamePrincipal("[email protected]", null);
+        UsernamePrincipal expectedPrincipal = new 
UsernamePrincipal("[email protected]", _manager);
         SaslServer saslServer = _manager.createSaslServer("EXTERNAL", 
"example.example.com", principal);
 
         AuthenticationResult result = _manager.authenticate(saslServer, new 
byte[0]);
@@ -140,7 +140,7 @@ public class ExternalAuthenticationManag
     public void testAuthenticatePrincipalCnDc_OtherComponentsIgnored() throws 
Exception
     {
         X500Principal principal = new X500Principal("CN=person, DC=example, 
DC=com, O=My Company Ltd, L=Newbury, ST=Berkshire, C=GB");
-        UsernamePrincipal expectedPrincipal = new 
UsernamePrincipal("[email protected]", null);
+        UsernamePrincipal expectedPrincipal = new 
UsernamePrincipal("[email protected]", _manager);
         SaslServer saslServer = _manager.createSaslServer("EXTERNAL", 
"example.example.com", principal);
 
         AuthenticationResult result = _manager.authenticate(saslServer, new 
byte[0]);
@@ -155,7 +155,7 @@ public class ExternalAuthenticationManag
     public void testAuthenticatePrincipalCn_OtherComponentsIgnored() throws 
Exception
     {
         X500Principal principal = new X500Principal("CN=person, O=My Company 
Ltd, L=Newbury, ST=Berkshire, C=GB");
-        UsernamePrincipal expectedPrincipal = new UsernamePrincipal("person", 
null);
+        UsernamePrincipal expectedPrincipal = new UsernamePrincipal("person", 
_manager);
         SaslServer saslServer = _manager.createSaslServer("EXTERNAL", 
"example.example.com", principal);
 
         AuthenticationResult result = _manager.authenticate(saslServer, new 
byte[0]);

Modified: 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java?rev=1755587&r1=1755586&r2=1755587&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
 Tue Aug  9 09:45:58 2016
@@ -58,7 +58,6 @@ public class PrincipalDatabaseAuthentica
 {
     private static final String LOCALHOST = "localhost";
     private static final String MOCK_MECH_NAME = "MOCK-MECH-NAME";
-    private static final UsernamePrincipal PRINCIPAL = new 
UsernamePrincipal("guest", null);
 
     private PrincipalDatabaseAuthenticationManager _manager = null; // Class 
under test
     private PrincipalDatabase _principalDatabase;
@@ -197,7 +196,9 @@ public class PrincipalDatabaseAuthentica
 
         AuthenticationResult result = _manager.authenticate(testServer, 
"12345".getBytes());
 
-        assertOnlyContainsWrapped(PRINCIPAL, result.getPrincipals());
+        UsernamePrincipal expectedPrincipal = new UsernamePrincipal("guest", 
_manager);
+
+        assertOnlyContainsWrapped(expectedPrincipal, result.getPrincipals());
         assertEquals(AuthenticationStatus.SUCCESS, result.getStatus());
     }
 
@@ -243,7 +244,9 @@ public class PrincipalDatabaseAuthentica
         when(_principalDatabase.verifyPassword("guest", 
"guest".toCharArray())).thenReturn(true);
 
         AuthenticationResult result = _manager.authenticate("guest", "guest");
-        assertOnlyContainsWrapped(PRINCIPAL, result.getPrincipals());
+
+        UsernamePrincipal expectedPrincipal = new UsernamePrincipal("guest", 
_manager);
+        assertOnlyContainsWrapped(expectedPrincipal, result.getPrincipals());
         assertEquals(AuthenticationStatus.SUCCESS, result.getStatus());
     }
 



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

Reply via email to