Merge branch 'stable-2.12' into stable-2.13

* stable-2.12:
  Update reviewers on DraftPublishedEvent

Change-Id: Ic25c5e69c4d019554284c562bdda90833a366091
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
index e4c5771..3811d01 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
@@ -33,6 +33,7 @@
 import com.google.gerrit.server.account.AccountResolver;
 import com.google.gerrit.server.account.GroupMembers;
 import com.google.gerrit.server.data.ChangeAttribute;
+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.git.GitRepositoryManager;
@@ -115,12 +116,22 @@
 
   @Override
   public void onEvent(Event event) {
-    if (!(event instanceof PatchSetCreatedEvent)) {
-      return;
+    if (event instanceof PatchSetCreatedEvent) {
+      PatchSetCreatedEvent e = (PatchSetCreatedEvent) event;
+      ChangeAttribute c = e.change.get();
+      onEvent(new Project.NameKey(c.project),
+          Integer.parseInt(e.change.get().number), e.uploader.get().email);
+    } else if (event instanceof DraftPublishedEvent) {
+      DraftPublishedEvent e = (DraftPublishedEvent) event;
+      ChangeAttribute c = e.change.get();
+      onEvent(new Project.NameKey(c.project),
+          Integer.parseInt(e.change.get().number), e.uploader.get().email);
     }
-    PatchSetCreatedEvent e = (PatchSetCreatedEvent) event;
-    ChangeAttribute c = e.change.get();
-    Project.NameKey projectName = new Project.NameKey(c.project);
+  }
+
+  private void onEvent(Project.NameKey projectName, int changeNumber,
+      String email) {
+
     // TODO(davido): we have to cache per project configuration
     ReviewersConfig config = configFactory.create(projectName);
     List<ReviewerFilterSection> sections = config.getReviewerFilterSections();
@@ -133,7 +144,7 @@
         RevWalk rw = new RevWalk(git);
         ReviewDb reviewDb = schemaFactory.open()) {
       ChangeData changeData = changeDataFactory.create(
-          reviewDb, projectName, new Change.Id(Integer.parseInt(c.number)));
+          reviewDb, projectName, new Change.Id(changeNumber));
       Set<String> reviewers = findReviewers(sections, changeData);
       if (reviewers.isEmpty()) {
         return;
@@ -141,8 +152,7 @@
 
       final Change change = changeData.change();
       final Runnable task = reviewersFactory.create(change,
-          toAccounts(reviewDb, reviewers, projectName,
-              e.uploader.get().email));
+          toAccounts(reviewDb, reviewers, projectName, email));
 
       workQueue.getDefaultQueue().submit(new Runnable() {
         ReviewDb db = null;