in src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java [65:98]
public Response<?> apply(RevisionResource rev, Input input)
throws IOException, RestApiException, StorageException, ConfigInvalidException {
Map<String, Boolean> branchMap = input.branchMap;
Change change = rev.getChange();
if (branchMap == null) {
log.debug("Branch map is empty for change {}", change.getKey().get());
return Response.none();
}
String revision = rev.getPatchSet().commitId().name();
MultipleDownstreamMergeInput mdsMergeInput = new MultipleDownstreamMergeInput();
mdsMergeInput.dsBranchMap = branchMap;
mdsMergeInput.changeNumber = change.getId().get();
mdsMergeInput.patchsetNumber = rev.getPatchSet().number();
mdsMergeInput.project = change.getProject().get();
mdsMergeInput.topic = dsCreator.getOrSetTopic(change.getId().get(), change.getTopic());
mdsMergeInput.subject = change.getSubject();
mdsMergeInput.obsoleteRevision = revision;
mdsMergeInput.currentRevision = revision;
log.debug("Multiple downstream merge input: {}", mdsMergeInput.dsBranchMap);
try {
dsCreator.createMergesAndHandleConflicts(mdsMergeInput);
} catch (ConfigInvalidException e) {
throw new ResourceConflictException(
"Automerger configuration file is invalid: " + e.getMessage());
} catch (InvalidQueryParameterException e) {
throw new ResourceConflictException(
"Topic or branch cannot have both braces and quotes: " + e.getMessage());
}
return Response.none();
}