blob: ee95240dcbca3b22f33b5cd54c64825ea9b71609 [file] [log] [blame]
package com.criteo.gerrit.plugins.automerge;
import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.PostReview;
import com.google.gerrit.server.change.RevisionResource;
import com.google.gerrit.server.update.UpdateException;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.query.change.ChangeData;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
public class ReviewUpdater {
/**
* Prefix used in front of messages pushed to Gerrit by this plugin. This prefix is used to
* discriminate the messages emitted by the plugin from the other messages and avoid infinite
* loops.
*/
public static final String commentsPrefix = "[Autosubmitter] ";
@Inject
Provider<PostReview> reviewer;
@Inject
private AtomicityHelper atomicityHelper;
public void commentOnReview(String project, int number, String comment) throws RestApiException, OrmException, IOException, UpdateException {
ReviewInput reviewInput = createComment(comment);
applyComment(project, number, reviewInput);
}
public void setMinusOne(String project, int number, String comment) throws RestApiException, OrmException, IOException, UpdateException {
ReviewInput message = createComment(comment).label("Code-Review", -1);
applyComment(project, number, message);
}
private ReviewInput createComment(String comment) {
return new ReviewInput().message(commentsPrefix + comment);
}
private void applyComment(String project, int number, ReviewInput comment) throws RestApiException, OrmException, IOException, UpdateException {
RevisionResource r = atomicityHelper.getRevisionResource(project, number);
reviewer.get().apply(r, comment);
}
}