Merge "Fix /submit_type to return only uppercase names"
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt
index 2cc1f50..bccf018 100644
--- a/Documentation/rest-api-changes.txt
+++ b/Documentation/rest-api-changes.txt
@@ -1611,7 +1611,7 @@
Content-Type: application/json;charset=UTF-8
)]}'
- "cherry_pick"
+ "CHERRY_PICK"
----
[[test-submit-rule]]
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
index 2aff0a8..c773735 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java
@@ -58,7 +58,7 @@
private static final Logger log = LoggerFactory.getLogger(Mergeable.class);
public static class MergeableInfo {
- public String submitType;
+ public Project.SubmitType submitType;
public boolean mergeable;
}
@@ -123,21 +123,10 @@
private boolean refresh(Change change,
PatchSet ps,
- String submitType,
+ Project.SubmitType type,
Repository git,
Map<String, Ref> refs,
Ref ref) throws IOException, OrmException {
- Project.SubmitType type;
- try {
- type = Project.SubmitType.valueOf(submitType);
- } catch (IllegalArgumentException unsupported) {
- log.warn(String.format(
- "Change %d uses unsupported submit_type \"%s\"",
- change.getId().get(),
- submitType));
- return false;
- }
-
RevWalk rw = new RevWalk(git) {
@Override
protected CodeReviewCommit createCommit(AnyObjectId id) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java
index e7e1f32..5a4f9e2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java
@@ -20,6 +20,7 @@
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.RestModifyView;
import com.google.gerrit.extensions.restapi.RestReadView;
+import com.google.gerrit.reviewdb.client.Project.SubmitType;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.rules.RulesCache;
import com.google.gerrit.server.change.TestSubmitRule.Filters;
@@ -30,6 +31,7 @@
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
+import com.googlecode.prolog_cafe.lang.SymbolTerm;
import com.googlecode.prolog_cafe.lang.Term;
import org.kohsuke.args4j.Option;
@@ -51,8 +53,8 @@
}
@Override
- public String apply(RevisionResource rsrc, Input input) throws OrmException,
- BadRequestException, AuthException {
+ public SubmitType apply(RevisionResource rsrc, Input input)
+ throws OrmException, BadRequestException, AuthException {
if (input == null) {
input = new Input();
}
@@ -96,7 +98,16 @@
evaluator.getSubmitRule().toString(),
type));
}
- return type.toString();
+
+ String typeName = ((SymbolTerm) type).name();
+ try {
+ return SubmitType.valueOf(typeName.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ throw new BadRequestException(String.format(
+ "rule %s produced invalid result: %s",
+ evaluator.getSubmitRule().toString(),
+ type));
+ }
}
static class Get implements RestReadView<RevisionResource> {
@@ -108,8 +119,8 @@
}
@Override
- public String apply(RevisionResource resource) throws BadRequestException,
- OrmException, AuthException {
+ public SubmitType apply(RevisionResource resource)
+ throws BadRequestException, OrmException, AuthException {
return test.apply(resource, null);
}
}