diff --git a/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java b/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java index 16265fbfbd6bca861a4710138a0413c20df8d914..870639d179eb34dc13e3e89ffc69a20db1244608 100644 --- a/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java +++ b/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java @@ -156,16 +156,19 @@ public class GroupURI } @Override - public boolean equals(Object rhs) + public boolean equals(Object other) { - if (rhs == null) + if (other == null) return false; - if (this == rhs) + if (this == other) return true; - if (rhs instanceof GroupURI) + if (other instanceof GroupURI) { - GroupURI vu = (GroupURI) rhs; - return uri.toString().equals(vu.uri.toString()); + + GroupURI oID = (GroupURI) other; + String otherURI = getServiceIDString() + "?" + oID.getName(); + String thisURI = getServiceIDString() + "?" + this.getName(); + return thisURI.equals(otherURI); } return false; } @@ -200,15 +203,20 @@ public class GroupURI return name; } - public URI getServiceID() + public String getServiceIDString() { - String serviceID = uri.getScheme() + + return uri.getScheme() + "://" + uri.getAuthority() + uri.getPath(); + } + + public URI getServiceID() + { + String serviceIDString = getServiceIDString(); try { - return new URI(serviceID); + return new URI(serviceIDString); } catch (URISyntaxException e) { diff --git a/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java b/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java index 423f7df9f070bf2d8771c67a31bdb40e3adf28f0..16b658bbefa8308e336af149285fedb6f5575f78 100644 --- a/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java +++ b/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java @@ -18,6 +18,18 @@ public class GroupURITest Log4jInit.setLevel("ca.nrc.cadc.ac", Level.DEBUG); } + @Test + public void testEquals() + { + GroupURI uri1 = new GroupURI("ivo://example.org/gms?name"); + GroupURI uri2 = new GroupURI("ivo://example.org/gms?name"); + Assert.assertTrue(uri1.equals(uri2)); + + uri1 = new GroupURI("ivo://example.org/gms?name"); + uri2 = new GroupURI("ivo://example.org/gms#name"); + Assert.assertTrue(uri1.equals(uri2)); + } + @Test public void testMalformed() {