SubmitRule: Remove SubmitRuleOptions arg from evaluate method
The SubmitRuleOptions contain mostly Prolog-specific settings and are only used by the PrologRule. All other implementation of SubmitRule ignore the options, hence the interface is cleaner without the SubmitRuleOptions arg. All Prolog-specific settings from SubmitRuleOptions are now moved into a new PrologOptions AutoValue class that is only used by PrologRule and PrologRuleEvaluator. There are only 2 variants of the prolog options that are used, one for checking the submittability of changes against the Prolog rules that are configured in the project, one for testing Prolog rules that are passed in into the TestSubmitRule / TestSubmitType REST endpoints. For the first case we go through SubmitRuleEvaluator. In this case we pass no options to PrologRule, but PrologRule just uses the default options which work for production. For the second case we invoke PrologRule directly and pass in the dry run options. SubmitRuleOptions contains only a single option now (allowClosed), but this options is checked before submit rules are invoked. Hence this option is not relevant for SubmitRule implementations. The SubmitRuleOptions that are used for computing submit records that are stored in the change index (SUBMIT_RULE_OPTIONS_LENIENT and SUBMIT_RULE_OPTIONS_STRICT) are not changed since they only use the one field in SubmitRuleOptions that is still there (allowClosed). Change-Id: Ifa474e2c16fee02f52b6e6339bdf980b8f4f3a50 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -26,7 +26,6 @@ import com.google.gerrit.extensions.annotations.Exports;
|
||||
import com.google.gerrit.extensions.common.ChangeInfo;
|
||||
import com.google.gerrit.extensions.common.SubmitRequirementInfo;
|
||||
import com.google.gerrit.extensions.config.FactoryModule;
|
||||
import com.google.gerrit.server.project.SubmitRuleOptions;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.rules.SubmitRule;
|
||||
import com.google.inject.Module;
|
||||
@@ -67,7 +66,7 @@ public class ChangeSubmitRequirementIT extends AbstractDaemonTest {
|
||||
|
||||
private static class CustomSubmitRule implements SubmitRule {
|
||||
@Override
|
||||
public Collection<SubmitRecord> evaluate(ChangeData changeData, SubmitRuleOptions options) {
|
||||
public Collection<SubmitRecord> evaluate(ChangeData changeData) {
|
||||
SubmitRecord record = new SubmitRecord();
|
||||
record.labels = new ArrayList<>();
|
||||
record.status = SubmitRecord.Status.NOT_READY;
|
||||
|
||||
@@ -46,7 +46,6 @@ import com.google.gerrit.server.logging.Metadata;
|
||||
import com.google.gerrit.server.logging.PerformanceLogger;
|
||||
import com.google.gerrit.server.logging.TraceContext;
|
||||
import com.google.gerrit.server.project.CreateProjectArgs;
|
||||
import com.google.gerrit.server.project.SubmitRuleOptions;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.rules.SubmitRule;
|
||||
import com.google.gerrit.server.validators.ProjectCreationValidationListener;
|
||||
@@ -680,7 +679,7 @@ public class TraceIT extends AbstractDaemonTest {
|
||||
boolean failOnce;
|
||||
|
||||
@Override
|
||||
public Collection<SubmitRecord> evaluate(ChangeData changeData, SubmitRuleOptions options) {
|
||||
public Collection<SubmitRecord> evaluate(ChangeData changeData) {
|
||||
if (failOnce) {
|
||||
failOnce = false;
|
||||
throw new IllegalStateException("forced failure from test");
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.google.gerrit.acceptance.PushOneCommit;
|
||||
import com.google.gerrit.common.data.LabelType;
|
||||
import com.google.gerrit.common.data.SubmitRecord;
|
||||
import com.google.gerrit.common.data.SubmitRequirement;
|
||||
import com.google.gerrit.server.project.SubmitRuleOptions;
|
||||
import com.google.gerrit.server.rules.IgnoreSelfApprovalRule;
|
||||
import com.google.inject.Inject;
|
||||
import java.util.Collection;
|
||||
@@ -42,8 +41,7 @@ public class IgnoreSelfApprovalRuleIT extends AbstractDaemonTest {
|
||||
PushOneCommit.Result r = createChange();
|
||||
approve(r.getChangeId());
|
||||
|
||||
Collection<SubmitRecord> submitRecords =
|
||||
rule.evaluate(r.getChange(), SubmitRuleOptions.defaults());
|
||||
Collection<SubmitRecord> submitRecords = rule.evaluate(r.getChange());
|
||||
|
||||
assertThat(submitRecords).hasSize(1);
|
||||
SubmitRecord result = submitRecords.iterator().next();
|
||||
@@ -69,8 +67,7 @@ public class IgnoreSelfApprovalRuleIT extends AbstractDaemonTest {
|
||||
// Approve as admin
|
||||
approve(r.getChangeId());
|
||||
|
||||
Collection<SubmitRecord> submitRecords =
|
||||
rule.evaluate(r.getChange(), SubmitRuleOptions.defaults());
|
||||
Collection<SubmitRecord> submitRecords = rule.evaluate(r.getChange());
|
||||
assertThat(submitRecords).isEmpty();
|
||||
}
|
||||
|
||||
@@ -81,8 +78,7 @@ public class IgnoreSelfApprovalRuleIT extends AbstractDaemonTest {
|
||||
PushOneCommit.Result r = createChange();
|
||||
approve(r.getChangeId());
|
||||
|
||||
Collection<SubmitRecord> submitRecords =
|
||||
rule.evaluate(r.getChange(), SubmitRuleOptions.defaults());
|
||||
Collection<SubmitRecord> submitRecords = rule.evaluate(r.getChange());
|
||||
assertThat(submitRecords).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.TestAccount;
|
||||
import com.google.gerrit.common.data.SubmitRecord;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.server.project.SubmitRuleOptions;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.rules.PrologOptions;
|
||||
import com.google.gerrit.server.rules.PrologRuleEvaluator;
|
||||
import com.google.gerrit.testing.TestChanges;
|
||||
import com.google.inject.Inject;
|
||||
@@ -156,6 +156,6 @@ public class PrologRuleEvaluatorIT extends AbstractDaemonTest {
|
||||
}
|
||||
|
||||
private PrologRuleEvaluator makeEvaluator() {
|
||||
return evaluatorFactory.create(makeChangeData(), SubmitRuleOptions.defaults());
|
||||
return evaluatorFactory.create(makeChangeData(), PrologOptions.defaultOptions());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user