Implement equals/hashCode for SubmitRequirement classes
This removes non-changing submit requirements from meta_diff output.
Google-Bug-Id: b/232799942
Change-Id: I51e57fe8d6635a4702cd3bdb26da16c831ef3557
Release-Notes: n/a
diff --git a/java/com/google/gerrit/extensions/common/SubmitRecordInfo.java b/java/com/google/gerrit/extensions/common/SubmitRecordInfo.java
index 09c9841..acf9a8c 100644
--- a/java/com/google/gerrit/extensions/common/SubmitRecordInfo.java
+++ b/java/com/google/gerrit/extensions/common/SubmitRecordInfo.java
@@ -15,6 +15,7 @@
package com.google.gerrit.extensions.common;
import java.util.List;
+import java.util.Objects;
/** API response containing a {@link com.google.gerrit.entities.SubmitRecord} entity. */
public class SubmitRecordInfo {
@@ -38,6 +39,25 @@
public String label;
public Status status;
public AccountInfo appliedBy;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Label)) {
+ return false;
+ }
+ Label that = (Label) o;
+ return Objects.equals(label, that.label)
+ && status == that.status
+ && Objects.equals(appliedBy, that.appliedBy);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(label, status, appliedBy);
+ }
}
public String ruleName;
@@ -45,4 +65,25 @@
public List<Label> labels;
public List<LegacySubmitRequirementInfo> requirements;
public String errorMessage;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SubmitRecordInfo)) {
+ return false;
+ }
+ SubmitRecordInfo that = (SubmitRecordInfo) o;
+ return Objects.equals(ruleName, that.ruleName)
+ && status == that.status
+ && Objects.equals(labels, that.labels)
+ && Objects.equals(requirements, that.requirements)
+ && Objects.equals(errorMessage, that.errorMessage);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(ruleName, status, labels, requirements, errorMessage);
+ }
}
diff --git a/java/com/google/gerrit/extensions/common/SubmitRequirementExpressionInfo.java b/java/com/google/gerrit/extensions/common/SubmitRequirementExpressionInfo.java
index e9549c9..b4731f2 100644
--- a/java/com/google/gerrit/extensions/common/SubmitRequirementExpressionInfo.java
+++ b/java/com/google/gerrit/extensions/common/SubmitRequirementExpressionInfo.java
@@ -15,6 +15,7 @@
package com.google.gerrit.extensions.common;
import java.util.List;
+import java.util.Objects;
/** Result of evaluating a single submit requirement expression. */
public class SubmitRequirementExpressionInfo {
@@ -42,4 +43,25 @@
* during its evaluation.
*/
public String errorMessage;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SubmitRequirementExpressionInfo)) {
+ return false;
+ }
+ SubmitRequirementExpressionInfo that = (SubmitRequirementExpressionInfo) o;
+ return fulfilled == that.fulfilled
+ && Objects.equals(expression, that.expression)
+ && Objects.equals(passingAtoms, that.passingAtoms)
+ && Objects.equals(failingAtoms, that.failingAtoms)
+ && Objects.equals(errorMessage, that.errorMessage);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(expression, fulfilled, passingAtoms, failingAtoms, errorMessage);
+ }
}
diff --git a/java/com/google/gerrit/extensions/common/SubmitRequirementResultInfo.java b/java/com/google/gerrit/extensions/common/SubmitRequirementResultInfo.java
index 4778038..cf0d53c 100644
--- a/java/com/google/gerrit/extensions/common/SubmitRequirementResultInfo.java
+++ b/java/com/google/gerrit/extensions/common/SubmitRequirementResultInfo.java
@@ -15,6 +15,7 @@
package com.google.gerrit.extensions.common;
import com.google.gerrit.common.Nullable;
+import java.util.Objects;
/** Result of evaluating a submit requirement on a change. */
public class SubmitRequirementResultInfo {
@@ -72,4 +73,34 @@
/** Result of evaluating the override expression. */
@Nullable public SubmitRequirementExpressionInfo overrideExpressionResult;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof SubmitRequirementResultInfo)) {
+ return false;
+ }
+ SubmitRequirementResultInfo that = (SubmitRequirementResultInfo) o;
+ return isLegacy == that.isLegacy
+ && Objects.equals(name, that.name)
+ && Objects.equals(description, that.description)
+ && status == that.status
+ && Objects.equals(applicabilityExpressionResult, that.applicabilityExpressionResult)
+ && Objects.equals(submittabilityExpressionResult, that.submittabilityExpressionResult)
+ && Objects.equals(overrideExpressionResult, that.overrideExpressionResult);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ name,
+ description,
+ status,
+ isLegacy,
+ applicabilityExpressionResult,
+ submittabilityExpressionResult,
+ overrideExpressionResult);
+ }
}
diff --git a/javatests/com/google/gerrit/acceptance/rest/change/GetMetaDiffIT.java b/javatests/com/google/gerrit/acceptance/rest/change/GetMetaDiffIT.java
index 29dd227..26e37f4 100644
--- a/javatests/com/google/gerrit/acceptance/rest/change/GetMetaDiffIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/change/GetMetaDiffIT.java
@@ -60,6 +60,21 @@
}
@Test
+ public void metaDiffSubmitReq() throws Exception {
+ PushOneCommit.Result ch = createChange();
+ ChangeApi chApi = gApi.changes().id(ch.getChangeId());
+ ChangeInfo oldInfo = chApi.get();
+ chApi.setHashtags(new HashtagsInput(ImmutableSet.of(HASHTAG)));
+ ChangeInfo newInfo = chApi.get();
+
+ ChangeInfoDifference difference =
+ chApi.metaDiff(oldInfo.metaRevId, newInfo.metaRevId, ListChangesOption.SUBMIT_REQUIREMENTS);
+
+ assertThat(difference.added().submitRequirements).isNull();
+ assertThat(difference.removed().submitRequirements).isNull();
+ }
+
+ @Test
public void metaDiffReturnsSuccessful() throws Exception {
PushOneCommit.Result ch = createChange();
ChangeInfo info = gApi.changes().id(ch.getChangeId()).get();