Fix: change list shows '1' instead of '-1' for label score.
If a user votes '-1', and then another user votes '+1' for a label, the
label will be shown as a red '1' in the change list instead of red '-1'.
Change the logic of setting the label score to handle this case properly.
Bug: Issue 2125
Change-Id: Icf32c11ddcda7a40ee162ac6829015b8fd1b3988
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
index dfeee42..ce6ab2e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
@@ -414,16 +414,16 @@
}
if (score != 0) {
- if (score == type.getMax().getValue()) {
- label.approved = accountLoader.get(accountId);
- } else if (score == type.getMin().getValue()) {
+ if (score == type.getMin().getValue()) {
label.rejected = accountLoader.get(accountId);
- } else if (score > 0) {
- label.recommended = accountLoader.get(accountId);
- label.value = score;
+ } else if (score == type.getMax().getValue()) {
+ label.approved = accountLoader.get(accountId);
} else if (score < 0) {
label.disliked = accountLoader.get(accountId);
label.value = score;
+ } else if (score > 0 && label.disliked == null) {
+ label.recommended = accountLoader.get(accountId);
+ label.value = score;
}
}