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();
+  }
 }