Initial plugin source code (stable-2.13)

This patchset contains the initial implementation of the
cloud-notifications plugin for the stable 2.13 branch.

Change-Id: I9c1e4a738682041862a3d9394e13ef97f8928b68
Signed-off-by: Jorge Ruesga <j.ruesga.criado@gmail.com>
diff --git a/BUCK b/BUCK
index 693eccc..cfecda5 100644
--- a/BUCK
+++ b/BUCK
@@ -36,13 +36,13 @@
   manifest_entries = [
     'Gerrit-PluginName: cloud-notifications',
     'Gerrit-ApiType: plugin',
-    'Gerrit-ApiVersion: 2.14-SNAPSHOT',
+    'Gerrit-ApiVersion: 2.13.3',
     'Gerrit-Module: com.ruesga.gerrit.plugins.fcm.ApiModule',
     'Gerrit-InitStep: com.ruesga.gerrit.plugins.fcm.InitStep',
     'Implementation-Title: Firebase Cloud Notifications Plugin',
     'Implementation-Vendor: Jorge Ruesga',
     'Implementation-URL: https://gerrit.googlesource.com/plugins/cloud-notifications',
-    'Implementation-Version: 2.14-SNAPSHOT'
+    'Implementation-Version: 2.13.3'
   ],
   deps = DEPS,
   provided_deps = PROVIDED_DEPS
diff --git a/src/main/java/com/ruesga/gerrit/plugins/fcm/ApiModule.java b/src/main/java/com/ruesga/gerrit/plugins/fcm/ApiModule.java
index f240abc..1a43c3c 100644
--- a/src/main/java/com/ruesga/gerrit/plugins/fcm/ApiModule.java
+++ b/src/main/java/com/ruesga/gerrit/plugins/fcm/ApiModule.java
@@ -19,7 +19,6 @@
 import static com.ruesga.gerrit.plugins.fcm.server.DeviceResource.DEVICE_KIND;
 import static com.ruesga.gerrit.plugins.fcm.server.TokenResource.TOKEN_KIND;
 
-import com.google.gerrit.extensions.events.AssigneeChangedListener;
 import com.google.gerrit.extensions.events.ChangeAbandonedListener;
 import com.google.gerrit.extensions.events.ChangeMergedListener;
 import com.google.gerrit.extensions.events.ChangeRestoredListener;
@@ -37,7 +36,6 @@
 import com.google.gerrit.extensions.restapi.RestApiModule;
 import com.google.inject.Scopes;
 import com.ruesga.gerrit.plugins.fcm.DatabaseManager;
-import com.ruesga.gerrit.plugins.fcm.handlers.AssigneeChangedEventHandler;
 import com.ruesga.gerrit.plugins.fcm.handlers.ChangeAbandonedEventHandler;
 import com.ruesga.gerrit.plugins.fcm.handlers.ChangeMergedEventHandler;
 import com.ruesga.gerrit.plugins.fcm.handlers.ChangeRestoredEventHandler;
@@ -72,8 +70,6 @@
         // Configure listener handlers
         DynamicSet.bind(binder(), LifecycleListener.class)
                 .to(LifeCycleHandler.class);
-        DynamicSet.bind(binder(), AssigneeChangedListener.class)
-                .to(AssigneeChangedEventHandler.class);
         DynamicSet.bind(binder(), ChangeAbandonedListener.class)
                 .to(ChangeAbandonedEventHandler.class);
         DynamicSet.bind(binder(), ChangeMergedListener.class)
diff --git a/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/AssigneeChangedEventHandler.java b/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/AssigneeChangedEventHandler.java
deleted file mode 100644
index 6a6b62e..0000000
--- a/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/AssigneeChangedEventHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2016 Jorge Ruesga
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.ruesga.gerrit.plugins.fcm.handlers;
-
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.extensions.common.AccountInfo;
-import com.google.gerrit.extensions.events.AssigneeChangedListener;
-import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
-import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.IdentifiedUser.GenericFactory;
-import com.google.gerrit.server.config.AllProjectsName;
-import com.google.gerrit.server.query.change.ChangeQueryBuilder;
-import com.google.gerrit.server.query.change.ChangeQueryProcessor;
-import com.google.gson.annotations.SerializedName;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.ruesga.gerrit.plugins.fcm.messaging.Notification;
-import com.ruesga.gerrit.plugins.fcm.rest.CloudNotificationEvents;
-import com.ruesga.gerrit.plugins.fcm.workers.FcmUploaderWorker;
-
-public class AssigneeChangedEventHandler extends EventHandler
-        implements AssigneeChangedListener {
-
-    private static class AssigneeInfo {
-        @SerializedName("old") public AccountInfo old;
-        @SerializedName("new") public AccountInfo _new;
-    }
-
-    @Inject
-    public AssigneeChangedEventHandler(
-            @PluginName String pluginName,
-            FcmUploaderWorker uploader,
-            AllProjectsName allProjectsName,
-            ChangeQueryBuilder cqb,
-            ChangeQueryProcessor cqp,
-            Provider<ReviewDb> reviewdb,
-            GenericFactory identifiedUserFactory) {
-        super(pluginName,
-                uploader,
-                allProjectsName,
-                cqb, cqp,
-                reviewdb,
-                identifiedUserFactory);
-    }
-
-    protected int getEventType() {
-        return CloudNotificationEvents.TOPIC_CHANGED_EVENT;
-    }
-
-    protected NotifyType getNotifyType() {
-        return NotifyType.NEW_PATCHSETS;
-    }
-
-    @Override
-    public void onAssigneeChanged(Event event) {
-        AssigneeInfo assignee = new AssigneeInfo();
-        assignee.old = event.getOldAssignee();
-        assignee._new = event.getChange().assignee;
-        Notification notification = createNotification(event);
-        notification.extra = getSerializer().toJson(assignee);
-        notification.body = formatAccount(event.getWho())
-                + " change assignee to "
-                + formatAccount(event.getChange().assignee)
-                + " on this change";
-
-        notify(notification, event);
-    }
-
-}
diff --git a/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/ReviewerAddedEventHandler.java b/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/ReviewerAddedEventHandler.java
index 4f4a16d..63de838 100644
--- a/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/ReviewerAddedEventHandler.java
+++ b/src/main/java/com/ruesga/gerrit/plugins/fcm/handlers/ReviewerAddedEventHandler.java
@@ -15,10 +15,7 @@
  */
 package com.ruesga.gerrit.plugins.fcm.handlers;
 
-import java.util.Arrays;
-
 import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.extensions.common.AccountInfo;
 import com.google.gerrit.extensions.events.ReviewerAddedListener;
 import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
 import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -61,17 +58,11 @@
     }
 
     @Override
-    public void onReviewersAdded(Event event) {
-        int count = event.getReviewers().size();
-        String[] reviewers = new String[count];
-        for (int i = 0; i < count; i++) {
-            AccountInfo reviewer = event.getReviewers().get(i);
-            reviewers[i] = formatAccount(reviewer);
-        }
+    public void onReviewerAdded(Event event) {
         Notification notification = createNotification(event);
-        notification.extra = getSerializer().toJson(event.getReviewers());
+        notification.extra = getSerializer().toJson(event.getReviewer());
         notification.body = formatAccount(event.getWho())
-                + " added " + Arrays.toString(reviewers)
+                + " added " + formatAccount(event.getReviewer())
                 + " as reviewer on this changed";
 
         notify(notification, event);
diff --git a/src/main/java/com/ruesga/gerrit/plugins/fcm/rest/CloudNotificationEvents.java b/src/main/java/com/ruesga/gerrit/plugins/fcm/rest/CloudNotificationEvents.java
index 4487788..f23796b 100644
--- a/src/main/java/com/ruesga/gerrit/plugins/fcm/rest/CloudNotificationEvents.java
+++ b/src/main/java/com/ruesga/gerrit/plugins/fcm/rest/CloudNotificationEvents.java
@@ -27,5 +27,4 @@
     public static final int REVIEWER_DELETED_EVENT = 0x100;
     public static final int PATCHSET_CREATED_EVENT = 0x200;
     public static final int TOPIC_CHANGED_EVENT = 0x400;
-    public static final int ASSIGNEE_CHANGED_EVENT = 0x800;
 }
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index 1bc2410..04029fb 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -13,7 +13,7 @@
   cd gerrit
   git submodule init
   git submodule update
-  git clone https://gerrit.googlesource.com/plugins/cloud-notifications
+  git clone https://gerrit.googlesource.com/plugins/cloud-notifications plugins/cloud-notifications
   buck build plugins/cloud-notifications
 ```