Loading cadcAccessControl/src/ca/nrc/cadc/ac/User.java +27 −22 Original line number Diff line number Diff line Loading @@ -72,15 +72,17 @@ import ca.nrc.cadc.auth.HttpPrincipal; import org.json.HTTP; import java.security.Principal; import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; public class User { private InternalID id; private Set<Principal> identities = new HashSet<Principal>(); private Set<Principal> identities = new TreeSet<Principal>(new PrincipalComparator()); public PersonalDetails personalDetails; public PosixDetails posixDetails; Loading @@ -104,13 +106,13 @@ public class User return identities; } public Principal getPrincipal(Class clazz) public <S extends Principal> S getPrincipal(Class<S> clazz) { for (Principal principal : getIdentities()) { if (principal.getClass().equals(clazz)) if (principal.getClass() == clazz) { return principal; return (S) principal; } } return null; Loading @@ -118,26 +120,9 @@ public class User public HttpPrincipal getHttpPrincipal() { Principal principal = getPrincipal(HttpPrincipal.class); if (principal != null) { return (HttpPrincipal) principal; } return null; return getPrincipal(HttpPrincipal.class); } // public <S extends Principal> S getIdentity(Class<S> clazz) // { // for (Principal principal : getIdentities()) // { // if (principal.getClass() == clazz) // { // return (S) principal; // } // } // return null; // } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ Loading Loading @@ -185,4 +170,24 @@ public class User return getClass().getSimpleName() + "[" + id + "]"; } private class PrincipalComparator implements Comparator<Principal> { @Override public int compare(Principal o1, Principal o2) { if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal) { return 0; } else if (o1.getClass() == o2.getClass()) { if (o1.getName().equals(o2.getName())) { return 0; } } return -1; } } } cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java +67 −1 Original line number Diff line number Diff line Loading @@ -69,14 +69,19 @@ package ca.nrc.cadc.ac; import ca.nrc.cadc.auth.DNPrincipal; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.NumericPrincipal; import org.apache.log4j.Logger; import org.junit.Test; import java.lang.reflect.Field; import javax.security.auth.x500.X500Principal; import java.net.URI; import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class UserTest { Loading Loading @@ -107,4 +112,65 @@ public class UserTest assertEquals(user1.hashCode(), user2.hashCode()); } @Test public void comparatorTest() throws Exception { User user = new User(); boolean result = false; // HttpPrincipal HttpPrincipal httpPrincipal1 = new HttpPrincipal("foo"); HttpPrincipal httpPrincipal2 = new HttpPrincipal("bar"); result = user.getIdentities().add(httpPrincipal1); assertTrue(result); result = user.getIdentities().add(httpPrincipal1); assertFalse(result); result = user.getIdentities().add(httpPrincipal2); assertFalse(result); // X500Principal X500Principal x500Principal1 = new X500Principal("cn=foo,c=bar"); X500Principal x500Principal2 = new X500Principal("cn=bar,c=foo"); result = user.getIdentities().add(x500Principal1); assertTrue(result); result = user.getIdentities().add(x500Principal1); assertFalse(result); result = user.getIdentities().add(x500Principal2); assertTrue(result); result = user.getIdentities().add(x500Principal2); assertFalse(result); // NumericPrincipal NumericPrincipal numericPrincipal1 = new NumericPrincipal(UUID.randomUUID()); NumericPrincipal numericPrincipal2 = new NumericPrincipal(UUID.randomUUID()); result = user.getIdentities().add(numericPrincipal1); assertTrue(result); result = user.getIdentities().add(numericPrincipal1); assertFalse(result); result = user.getIdentities().add(numericPrincipal2); assertTrue(result); result = user.getIdentities().add(numericPrincipal2); assertFalse(result); // DNPrincipal DNPrincipal dnPrincipal1 = new DNPrincipal("cn=foo,dc=bar"); DNPrincipal dnPrincipal2 = new DNPrincipal("cn=bar,dc=foo"); result = user.getIdentities().add(dnPrincipal1); assertTrue(result); result = user.getIdentities().add(dnPrincipal1); assertFalse(result); result = user.getIdentities().add(dnPrincipal2); assertTrue(result); result = user.getIdentities().add(dnPrincipal2); assertFalse(result); } } Loading
cadcAccessControl/src/ca/nrc/cadc/ac/User.java +27 −22 Original line number Diff line number Diff line Loading @@ -72,15 +72,17 @@ import ca.nrc.cadc.auth.HttpPrincipal; import org.json.HTTP; import java.security.Principal; import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; public class User { private InternalID id; private Set<Principal> identities = new HashSet<Principal>(); private Set<Principal> identities = new TreeSet<Principal>(new PrincipalComparator()); public PersonalDetails personalDetails; public PosixDetails posixDetails; Loading @@ -104,13 +106,13 @@ public class User return identities; } public Principal getPrincipal(Class clazz) public <S extends Principal> S getPrincipal(Class<S> clazz) { for (Principal principal : getIdentities()) { if (principal.getClass().equals(clazz)) if (principal.getClass() == clazz) { return principal; return (S) principal; } } return null; Loading @@ -118,26 +120,9 @@ public class User public HttpPrincipal getHttpPrincipal() { Principal principal = getPrincipal(HttpPrincipal.class); if (principal != null) { return (HttpPrincipal) principal; } return null; return getPrincipal(HttpPrincipal.class); } // public <S extends Principal> S getIdentity(Class<S> clazz) // { // for (Principal principal : getIdentities()) // { // if (principal.getClass() == clazz) // { // return (S) principal; // } // } // return null; // } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ Loading Loading @@ -185,4 +170,24 @@ public class User return getClass().getSimpleName() + "[" + id + "]"; } private class PrincipalComparator implements Comparator<Principal> { @Override public int compare(Principal o1, Principal o2) { if (o1 instanceof HttpPrincipal && o2 instanceof HttpPrincipal) { return 0; } else if (o1.getClass() == o2.getClass()) { if (o1.getName().equals(o2.getName())) { return 0; } } return -1; } } }
cadcAccessControl/test/src/ca/nrc/cadc/ac/UserTest.java +67 −1 Original line number Diff line number Diff line Loading @@ -69,14 +69,19 @@ package ca.nrc.cadc.ac; import ca.nrc.cadc.auth.DNPrincipal; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.NumericPrincipal; import org.apache.log4j.Logger; import org.junit.Test; import java.lang.reflect.Field; import javax.security.auth.x500.X500Principal; import java.net.URI; import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class UserTest { Loading Loading @@ -107,4 +112,65 @@ public class UserTest assertEquals(user1.hashCode(), user2.hashCode()); } @Test public void comparatorTest() throws Exception { User user = new User(); boolean result = false; // HttpPrincipal HttpPrincipal httpPrincipal1 = new HttpPrincipal("foo"); HttpPrincipal httpPrincipal2 = new HttpPrincipal("bar"); result = user.getIdentities().add(httpPrincipal1); assertTrue(result); result = user.getIdentities().add(httpPrincipal1); assertFalse(result); result = user.getIdentities().add(httpPrincipal2); assertFalse(result); // X500Principal X500Principal x500Principal1 = new X500Principal("cn=foo,c=bar"); X500Principal x500Principal2 = new X500Principal("cn=bar,c=foo"); result = user.getIdentities().add(x500Principal1); assertTrue(result); result = user.getIdentities().add(x500Principal1); assertFalse(result); result = user.getIdentities().add(x500Principal2); assertTrue(result); result = user.getIdentities().add(x500Principal2); assertFalse(result); // NumericPrincipal NumericPrincipal numericPrincipal1 = new NumericPrincipal(UUID.randomUUID()); NumericPrincipal numericPrincipal2 = new NumericPrincipal(UUID.randomUUID()); result = user.getIdentities().add(numericPrincipal1); assertTrue(result); result = user.getIdentities().add(numericPrincipal1); assertFalse(result); result = user.getIdentities().add(numericPrincipal2); assertTrue(result); result = user.getIdentities().add(numericPrincipal2); assertFalse(result); // DNPrincipal DNPrincipal dnPrincipal1 = new DNPrincipal("cn=foo,dc=bar"); DNPrincipal dnPrincipal2 = new DNPrincipal("cn=bar,dc=foo"); result = user.getIdentities().add(dnPrincipal1); assertTrue(result); result = user.getIdentities().add(dnPrincipal1); assertFalse(result); result = user.getIdentities().add(dnPrincipal2); assertTrue(result); result = user.getIdentities().add(dnPrincipal2); assertFalse(result); } }