Revert "Fix ChangeInfoDiffer.getAddedForMap method" This reverts commit 6e8e5de448cb1e696780dd6268ce96218158fbe4. Reason for revert: Need to revert dependency I4fc40fa8e Change-Id: I2c8398d66966b05e9764c4976909d30877466917
diff --git a/java/com/google/gerrit/extensions/common/ChangeInfoDiffer.java b/java/com/google/gerrit/extensions/common/ChangeInfoDiffer.java index 51c35dc..24182cc 100644 --- a/java/com/google/gerrit/extensions/common/ChangeInfoDiffer.java +++ b/java/com/google/gerrit/extensions/common/ChangeInfoDiffer.java
@@ -150,17 +150,16 @@ /** Returns {@code null} if nothing has been added to {@code oldCollection} */ @Nullable private static ImmutableList<?> getAddedForCollection( - @Nullable Collection<?> oldCollection, Collection<?> newCollection) { - ImmutableList<?> notInOldCollection = getAdditionsForCollection(oldCollection, newCollection); + Collection<?> oldCollection, Collection<?> newCollection) { + ImmutableList<?> notInOldCollection = getAdditions(oldCollection, newCollection); return notInOldCollection.isEmpty() ? null : notInOldCollection; } @Nullable - private static ImmutableList<Object> getAdditionsForCollection( - @Nullable Collection<?> oldCollection, Collection<?> newCollection) { - if (oldCollection == null) { - return ImmutableList.copyOf(newCollection); - } + private static ImmutableList<Object> getAdditions( + Collection<?> oldCollection, Collection<?> newCollection) { + if (oldCollection == null) + return newCollection != null ? ImmutableList.copyOf(newCollection) : null; Map<Object, List<Object>> duplicatesMap = newCollection.stream().collect(groupingBy(v -> v)); oldCollection.forEach( @@ -174,18 +173,7 @@ /** Returns {@code null} if nothing has been added to {@code oldMap} */ @Nullable - private static ImmutableMap<Object, Object> getAddedForMap( - @Nullable Map<?, ?> oldMap, Map<?, ?> newMap) { - ImmutableMap<Object, Object> notInOldMap = getAdditionsForMap(oldMap, newMap); - return notInOldMap.isEmpty() ? null : notInOldMap; - } - - @Nullable - private static ImmutableMap<Object, Object> getAdditionsForMap( - @Nullable Map<?, ?> oldMap, Map<?, ?> newMap) { - if (oldMap == null) { - return ImmutableMap.copyOf(newMap); - } + private static ImmutableMap<Object, Object> getAddedForMap(Map<?, ?> oldMap, Map<?, ?> newMap) { ImmutableMap.Builder<Object, Object> additionsBuilder = ImmutableMap.builder(); for (Map.Entry<?, ?> entry : newMap.entrySet()) { Object added = getAdded(oldMap.get(entry.getKey()), entry.getValue()); @@ -193,7 +181,8 @@ additionsBuilder.put(entry.getKey(), added); } } - return additionsBuilder.build(); + ImmutableMap<Object, Object> additions = additionsBuilder.build(); + return additions.isEmpty() ? null : additions; } private static Object get(Field field, Object obj) {
diff --git a/javatests/com/google/gerrit/extensions/common/ChangeInfoDifferTest.java b/javatests/com/google/gerrit/extensions/common/ChangeInfoDifferTest.java index f45d33b..7ed236a 100644 --- a/javatests/com/google/gerrit/extensions/common/ChangeInfoDifferTest.java +++ b/javatests/com/google/gerrit/extensions/common/ChangeInfoDifferTest.java
@@ -48,7 +48,6 @@ assertThat(diff.added().messages).isNull(); assertThat(diff.added().reviewers).isNull(); assertThat(diff.added().hashtags).isNull(); - assertThat(diff.added().removableLabels).isNull(); assertThat(diff.removed()._number).isNull(); assertThat(diff.removed().branch).isNull(); assertThat(diff.removed().project).isNull(); @@ -57,7 +56,6 @@ assertThat(diff.removed().messages).isNull(); assertThat(diff.removed().reviewers).isNull(); assertThat(diff.removed().hashtags).isNull(); - assertThat(diff.removed().removableLabels).isNull(); } @Test @@ -317,295 +315,6 @@ } @Test - public void getDiff_removableLabelsEmpty_returnsNullRemovableLabels() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - oldChangeInfo.removableLabels = ImmutableMap.of(); - newChangeInfo.removableLabels = ImmutableMap.of(); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels).isNull(); - assertThat(diff.removed().removableLabels).isNull(); - } - - @Test - public void getDiff_removableLabelsNullAndEmpty_returnsEmptyRemovableLabels() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - newChangeInfo.removableLabels = ImmutableMap.of(); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels).isEmpty(); - assertThat(diff.removed().removableLabels).isNull(); - } - - @Test - public void getDiff_removableLabelsEmptyAndNull_returnsEmptyRemovableLabels() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - oldChangeInfo.removableLabels = ImmutableMap.of(); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels).isNull(); - assertThat(diff.removed().removableLabels).isEmpty(); - } - - @Test - public void getDiff_removableLabelsLabelAdded() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "Cow"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "Pig"; - AccountInfo acc3 = new AccountInfo(); - acc3.name = "Cat"; - AccountInfo acc4 = new AccountInfo(); - acc4.name = "Dog"; - - oldChangeInfo.removableLabels = - ImmutableMap.of( - "Code-Review", - ImmutableMap.of("+1", ImmutableList.of(acc1), "-1", ImmutableList.of(acc2, acc3))); - newChangeInfo.removableLabels = - ImmutableMap.of( - "Code-Review", - ImmutableMap.of("+1", ImmutableList.of(acc1), "-1", ImmutableList.of(acc2, acc3)), - "Verified", - ImmutableMap.of("-1", ImmutableList.of(acc4))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Verified", ImmutableMap.of("-1", ImmutableList.of(acc4)))); - assertThat(diff.removed().removableLabels).isNull(); - } - - @Test - public void getDiff_removableLabelsLabelRemoved() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "Cow"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "Pig"; - AccountInfo acc3 = new AccountInfo(); - acc3.name = "Cat"; - AccountInfo acc4 = new AccountInfo(); - acc4.name = "Dog"; - - oldChangeInfo.removableLabels = - ImmutableMap.of( - "Code-Review", - ImmutableMap.of("+1", ImmutableList.of(acc1), "-1", ImmutableList.of(acc2, acc3)), - "Verified", - ImmutableMap.of("-1", ImmutableList.of(acc4))); - newChangeInfo.removableLabels = - ImmutableMap.of( - "Code-Review", - ImmutableMap.of("+1", ImmutableList.of(acc1), "-1", ImmutableList.of(acc2, acc3))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels).isNull(); - assertThat(diff.removed().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Verified", ImmutableMap.of("-1", ImmutableList.of(acc4)))); - } - - @Test - public void getDiff_removableLabelsVoteAdded() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "acc2"; - AccountInfo acc3 = new AccountInfo(); - acc3.name = "acc3"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of( - "Code-Review", - ImmutableMap.of("+1", ImmutableList.of(acc1), "-1", ImmutableList.of(acc2, acc3))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("-1", ImmutableList.of(acc2, acc3)))); - assertThat(diff.removed().removableLabels).isNull(); - } - - @Test - public void getDiff_removableLabelsVoteRemoved() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "acc2"; - AccountInfo acc3 = new AccountInfo(); - acc3.name = "acc3"; - - oldChangeInfo.removableLabels = - ImmutableMap.of( - "Code-Review", - ImmutableMap.of("+1", ImmutableList.of(acc1), "-1", ImmutableList.of(acc2, acc3))); - newChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels).isNull(); - assertThat(diff.removed().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("-1", ImmutableList.of(acc2, acc3)))); - } - - @Test - public void getDiff_removableLabelsAccountAdded() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "acc2"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1, acc2))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc2)))); - assertThat(diff.removed().removableLabels).isNull(); - } - - @Test - public void getDiff_removableLabelsAccountRemoved() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "acc2"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1, acc2))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc2)))); - assertThat(diff.removed().removableLabels).isNull(); - } - - @Test - public void getDiff_removableLabelsAccountChanged() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "acc2"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc2))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc2)))); - assertThat(diff.removed().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1)))); - } - - @Test - public void getDiff_removableLabelsScoreChanged() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("-1", ImmutableList.of(acc1))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("-1", ImmutableList.of(acc1)))); - assertThat(diff.removed().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1)))); - } - - @Test - public void getDiff_removableLabelsLabelChanged() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of("Verified", ImmutableMap.of("+1", ImmutableList.of(acc1))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Verified", ImmutableMap.of("+1", ImmutableList.of(acc1)))); - assertThat(diff.removed().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1)))); - } - - @Test - public void getDiff_removableLabelsLabelScoreAndAccountChanged() { - ChangeInfo oldChangeInfo = new ChangeInfo(); - ChangeInfo newChangeInfo = new ChangeInfo(); - AccountInfo acc1 = new AccountInfo(); - acc1.name = "acc1"; - AccountInfo acc2 = new AccountInfo(); - acc2.name = "acc2"; - - oldChangeInfo.removableLabels = - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1))); - newChangeInfo.removableLabels = - ImmutableMap.of("Verified", ImmutableMap.of("-1", ImmutableList.of(acc2))); - - ChangeInfoDifference diff = ChangeInfoDiffer.getDifference(oldChangeInfo, newChangeInfo); - - assertThat(diff.added().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Verified", ImmutableMap.of("-1", ImmutableList.of(acc2)))); - assertThat(diff.removed().removableLabels) - .containsExactlyEntriesIn( - ImmutableMap.of("Code-Review", ImmutableMap.of("+1", ImmutableList.of(acc1)))); - } - - @Test public void getDiff_assertCanConstructAllChangeInfoReferences() throws Exception { buildObjectWithFullFields(ChangeInfo.class); }