Merge "GroupReference: Fix NPE in hashcode and compareTo if UUID wraps null"
diff --git a/java/com/google/gerrit/common/data/GroupReference.java b/java/com/google/gerrit/common/data/GroupReference.java
index cfaad17..b00b812 100644
--- a/java/com/google/gerrit/common/data/GroupReference.java
+++ b/java/com/google/gerrit/common/data/GroupReference.java
@@ -73,7 +73,11 @@
}
private static String uuid(GroupReference a) {
- return a.getUUID() != null ? a.getUUID().get() : "?";
+ if (a.getUUID() != null && a.getUUID().get() != null) {
+ return a.getUUID().get();
+ }
+
+ return "?";
}
@Override
diff --git a/javatests/com/google/gerrit/common/data/GroupReferenceTest.java b/javatests/com/google/gerrit/common/data/GroupReferenceTest.java
index 717e122..fdc9dc6 100644
--- a/javatests/com/google/gerrit/common/data/GroupReferenceTest.java
+++ b/javatests/com/google/gerrit/common/data/GroupReferenceTest.java
@@ -154,4 +154,15 @@
assertThat(groupReference1.equals(groupReference3)).isFalse();
assertThat(groupReference2.equals(groupReference3)).isFalse();
}
+
+ @Test
+ public void testHashcode() {
+ AccountGroup.UUID uuid1 = new AccountGroup.UUID("uuid1");
+ assertThat(new GroupReference(uuid1, "foo").hashCode())
+ .isEqualTo(new GroupReference(uuid1, "bar").hashCode());
+
+ // Check that the following calls don't fail with an exception.
+ new GroupReference(null, "bar").hashCode();
+ new GroupReference(new AccountGroup.UUID(null), "bar").hashCode();
+ }
}