public Response apply()

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();
  }