Merge "SubmitRequirementResult: make "legacy" field optional"
diff --git a/java/com/google/gerrit/entities/SubmitRequirementResult.java b/java/com/google/gerrit/entities/SubmitRequirementResult.java
index b7fa398..13625c1 100644
--- a/java/com/google/gerrit/entities/SubmitRequirementResult.java
+++ b/java/com/google/gerrit/entities/SubmitRequirementResult.java
@@ -44,8 +44,14 @@
/**
* Whether this result was created from a legacy {@link SubmitRecord}, or by evaluating a {@link
* SubmitRequirement}.
+ *
+ * <p>If equals {@link Optional#empty()}, we treat the result as non-legacy (false).
*/
- public abstract boolean legacy();
+ public abstract Optional<Boolean> legacy();
+
+ public boolean isLegacy() {
+ return legacy().orElse(false);
+ }
@Memoized
public Status status() {
@@ -122,7 +128,7 @@
public abstract Builder patchSetCommitId(ObjectId value);
- public abstract Builder legacy(boolean value);
+ public abstract Builder legacy(Optional<Boolean> value);
public abstract SubmitRequirementResult build();
}
diff --git a/java/com/google/gerrit/server/change/SubmitRequirementsJson.java b/java/com/google/gerrit/server/change/SubmitRequirementsJson.java
index ebb0790..8eeec62 100644
--- a/java/com/google/gerrit/server/change/SubmitRequirementsJson.java
+++ b/java/com/google/gerrit/server/change/SubmitRequirementsJson.java
@@ -47,7 +47,7 @@
submitRequirementExpressionToInfo(
req.submittabilityExpression(), result.submittabilityExpressionResult());
info.status = SubmitRequirementResultInfo.Status.valueOf(result.status().toString());
- info.isLegacy = result.legacy();
+ info.isLegacy = result.isLegacy();
return info;
}
diff --git a/java/com/google/gerrit/server/notedb/SubmitRequirementProtoConverter.java b/java/com/google/gerrit/server/notedb/SubmitRequirementProtoConverter.java
index 9bf56d8..3caa4d4 100644
--- a/java/com/google/gerrit/server/notedb/SubmitRequirementProtoConverter.java
+++ b/java/com/google/gerrit/server/notedb/SubmitRequirementProtoConverter.java
@@ -34,14 +34,18 @@
SubmitRequirementResultProto.getDescriptor().findFieldByNumber(2);
private static final FieldDescriptor SR_OVERRIDE_EXPR_RESULT_FIELD =
SubmitRequirementResultProto.getDescriptor().findFieldByNumber(4);
+ private static final FieldDescriptor SR_LEGACY_FIELD =
+ SubmitRequirementResultProto.getDescriptor().findFieldByNumber(6);
@Override
public SubmitRequirementResultProto toProto(SubmitRequirementResult r) {
SubmitRequirementResultProto.Builder builder = SubmitRequirementResultProto.newBuilder();
builder
.setSubmitRequirement(SubmitRequirementSerializer.serialize(r.submitRequirement()))
- .setLegacy(r.legacy())
.setCommit(ObjectIdConverter.create().toByteString(r.patchSetCommitId()));
+ if (r.legacy().isPresent()) {
+ builder.setLegacy(r.legacy().get());
+ }
if (r.applicabilityExpressionResult().isPresent()) {
builder.setApplicabilityExpressionResult(
SubmitRequirementExpressionResultSerializer.serialize(
@@ -61,10 +65,12 @@
public SubmitRequirementResult fromProto(SubmitRequirementResultProto proto) {
SubmitRequirementResult.Builder builder =
SubmitRequirementResult.builder()
- .legacy(proto.getLegacy())
.patchSetCommitId(ObjectIdConverter.create().fromByteString(proto.getCommit()))
.submitRequirement(
SubmitRequirementSerializer.deserialize(proto.getSubmitRequirement()));
+ if (proto.hasField(SR_LEGACY_FIELD)) {
+ builder.legacy(Optional.of(proto.getLegacy()));
+ }
if (proto.hasField(SR_APPLICABILITY_EXPR_RESULT_FIELD)) {
builder.applicabilityExpressionResult(
Optional.of(
diff --git a/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java b/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java
index 7252fe9..539edc1 100644
--- a/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java
+++ b/java/com/google/gerrit/server/project/SubmitRequirementsAdapter.java
@@ -29,6 +29,7 @@
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.eclipse.jgit.lib.ObjectId;
@@ -88,7 +89,7 @@
.setAllowOverrideInChildProjects(labelType.isCanOverride());
result.add(
SubmitRequirementResult.builder()
- .legacy(true)
+ .legacy(Optional.of(true))
.submitRequirement(req.build())
.submittabilityExpressionResult(
createExpressionResult(toExpression(atoms), mapStatus(label), atoms))
@@ -111,7 +112,7 @@
.build();
return ImmutableList.of(
SubmitRequirementResult.builder()
- .legacy(true)
+ .legacy(Optional.of(true))
.submitRequirement(sr)
.submittabilityExpressionResult(
createExpressionResult(
@@ -130,7 +131,7 @@
.build();
result.add(
SubmitRequirementResult.builder()
- .legacy(true)
+ .legacy(Optional.of(true))
.submitRequirement(sr)
.submittabilityExpressionResult(
createExpressionResult(
diff --git a/java/com/google/gerrit/server/project/SubmitRequirementsEvaluatorImpl.java b/java/com/google/gerrit/server/project/SubmitRequirementsEvaluatorImpl.java
index 2caa9dd..9555bf3 100644
--- a/java/com/google/gerrit/server/project/SubmitRequirementsEvaluatorImpl.java
+++ b/java/com/google/gerrit/server/project/SubmitRequirementsEvaluatorImpl.java
@@ -108,7 +108,7 @@
: Optional.empty();
return SubmitRequirementResult.builder()
- .legacy(false)
+ .legacy(Optional.of(false))
.submitRequirement(sr)
.patchSetCommitId(cd.currentPatchSet().commitId())
.submittabilityExpressionResult(blockingResult)
diff --git a/java/com/google/gerrit/server/query/change/ChangeData.java b/java/com/google/gerrit/server/query/change/ChangeData.java
index b8c8c07..9ea6475 100644
--- a/java/com/google/gerrit/server/query/change/ChangeData.java
+++ b/java/com/google/gerrit/server/query/change/ChangeData.java
@@ -962,7 +962,7 @@
// Closed changes: Load submit requirement results from NoteDb.
Map<SubmitRequirement, SubmitRequirementResult> projectConfigRequirements =
notes().getSubmitRequirementsResult().stream()
- .filter(r -> !r.legacy())
+ .filter(r -> !r.isLegacy())
.collect(Collectors.toMap(r -> r.submitRequirement(), Function.identity()));
if (!experimentFeatures.isFeatureEnabled(
ExperimentFeaturesConstants
diff --git a/javatests/com/google/gerrit/server/notedb/ChangeNotesStateTest.java b/javatests/com/google/gerrit/server/notedb/ChangeNotesStateTest.java
index 52eaf11..61002f9 100644
--- a/javatests/com/google/gerrit/server/notedb/ChangeNotesStateTest.java
+++ b/javatests/com/google/gerrit/server/notedb/ChangeNotesStateTest.java
@@ -687,7 +687,7 @@
.submitRequirementsResult(
ImmutableList.of(
SubmitRequirementResult.builder()
- .legacy(true)
+ .legacy(Optional.of(true))
.patchSetCommitId(
ObjectId.fromString("26e50c7d315a33a13e5cc00902781fa876bc36cd"))
.submitRequirement(