Adapt to 2.15 API

The 2.15 API requires a couple of changes:

- Support for draft changes was removed
- SubmitRulEvaluator.Factory#create now requires a CurrentUser

Change-Id: Iccf609f342bd65893ccea66cc0ea34b28ea42609
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
index 98d67b3..ee8801f 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.gerrit.server.permissions.PermissionBackendException;
 import com.google.gerrit.server.project.NoSuchChangeException;
+import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.gerrit.server.project.SubmitRuleEvaluator;
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gwtorm.server.OrmException;
@@ -67,10 +68,13 @@
    * @return true or false
    * @throws IOException
    * @throws NoSuchChangeException
+   * @throws NoSuchProjectException
    * @throws OrmException
+   * @throws PermissionBackendException
    */
   public boolean hasDependentReview(String project, int number)
-      throws IOException, NoSuchChangeException, OrmException {
+      throws IOException, NoSuchChangeException, NoSuchProjectException, OrmException,
+          PermissionBackendException {
     RevisionResource r = getRevisionResource(project, number);
     RelatedInfo related = getRelated.apply(r);
     log.debug(String.format("Checking for related changes on review %d", number));
@@ -135,7 +139,7 @@
     // For draft reviews, the patchSet must be set to avoid an NPE.
     final List<SubmitRecord> cansubmit =
         submitRuleEvaluatorFactory
-            .create(changeData)
+            .create(getBotUser(), changeData)
             .setPatchSet(changeData.currentPatchSet())
             .evaluate();
     log.debug(String.format("Checking if change %d is submitable.", change));
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index 864de7d..404d038 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -30,7 +30,6 @@
 import com.google.gerrit.server.data.ChangeAttribute;
 import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.CommentAddedEvent;
-import com.google.gerrit.server.events.DraftPublishedEvent;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.gerrit.server.events.RefUpdatedEvent;
@@ -73,7 +72,6 @@
   @Override
   public synchronized void onEvent(final Event event) {
     if (event instanceof TopicChangedEvent
-        || event instanceof DraftPublishedEvent
         || event instanceof ReviewerDeletedEvent
         || // A blocking score might be removed when a reviewer is deleted.
         event instanceof PatchSetCreatedEvent) {
diff --git a/test.rb b/test.rb
index 92ccfab..3df4ebe 100755
--- a/test.rb
+++ b/test.rb
@@ -165,16 +165,6 @@
     check_status(commit2, 'MERGED')
   end
 
-  def test_published_draft_is_autosubmitted
-    commit_id = create_review(PROJECT1, "review0 on #{PROJECT1}", draft: true)
-    approve_review(commit_id)
-    check_status(commit_id, 'DRAFT')
-
-    publish_draft(commit_id)
-
-    check_status(commit_id, 'MERGED')
-  end
-
   private
 
   def project_dir(project_name)
@@ -191,11 +181,7 @@
     reviews = gerrit_query(query)
     reviews.each do |review|
       review_number = review['number']
-      if review['status'] == 'DRAFT'
-        execute("#{GERRIT_SSH} gerrit review --delete #{review_number},1")
-      else
-        execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
-      end
+      execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
     end
   end
 
@@ -207,14 +193,14 @@
     change_id
   end
 
-  def create_review(project_name, message, topic = nil, change_id = nil, draft: false)
+  def create_review(project_name, message, topic = nil, change_id = nil)
     topic_suffix = "/#{topic}" if topic
     message = "#{message}\n\nChange-Id: #{change_id}" if change_id
     execute(["cd #{project_dir(project_name)}",
              "echo 0 >> a",
              "git add .",
              %Q(git commit -m "#{message}"),
-             "git push origin HEAD:refs/#{draft ? 'drafts' : 'for'}/master#{topic_suffix}"
+             "git push origin HEAD:refs/for/master#{topic_suffix}"
             ].join(" && "))
     commit_id = execute("cd #{project_dir(project_name)} && git rev-parse HEAD")
     refute(commit_id.empty?, "missing commit-id")
@@ -225,10 +211,6 @@
     execute("#{GERRIT_SSH} gerrit review --strict-labels --verified 1 --code-review 2 #{commit_id}")
   end
 
-  def publish_draft(commit_id)
-    execute("#{GERRIT_SSH} gerrit review --publish #{commit_id}")
-  end
-
   def abandon_review(commit_id)
     execute("#{GERRIT_SSH} gerrit review --abandon #{commit_id}")
   end