build with 3.1

Remove 'final' from method signatures. Also, now when a change is
abandoned or restored, we only get one 'ref-updated' event on the
change's meta ref, so, update the corresponding tests accordingly.

Change-Id: Iaeddab6bf83bbc33110423563bbfab4bb6f953df
diff --git a/WORKSPACE b/WORKSPACE
index abab995..64d7675 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "a88174652e6f853ead5bbc5dacc1030dbb2d50c3",
+    commit = "321fab31e6fbb63c940aad3252f0167f88d52e2e",
 )
 
 load(
diff --git a/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java b/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java
index a30b758..8dfa2ae 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java
@@ -14,8 +14,8 @@
 
 package com.googlesource.gerrit.plugins.events;
 
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.gerrit.server.permissions.PermissionBackendException;
@@ -44,20 +44,20 @@
     }
   }
 
-  public boolean isVisibleTo(Branch.NameKey branchName, IdentifiedUser user)
+  public boolean isVisibleTo(BranchNameKey branchName, IdentifiedUser user)
       throws PermissionBackendException {
     if (branchName == null) {
       return false;
     }
-    ProjectState pe = projectCache.get(branchName.getParentKey());
+    ProjectState pe = projectCache.get(branchName.project());
     if (pe == null) {
       return false;
     }
     return permissionBackend.user(user).ref(branchName).test(RefPermission.READ);
   }
 
-  public static Branch.NameKey getBranch(JsonElement event) {
-    Branch.NameKey b = null;
+  public static BranchNameKey getBranch(JsonElement event) {
+    BranchNameKey b = null;
     if (event != null) {
       JsonObject obj = event.getAsJsonObject();
       // Known events of this type:
@@ -78,7 +78,7 @@
     return b;
   }
 
-  protected static Branch.NameKey getBranch(JsonObject projectParent) {
+  protected static BranchNameKey getBranch(JsonObject projectParent) {
     Project.NameKey project = getProject(projectParent);
     if (project != null) {
       // Known events of this type:
@@ -99,7 +99,7 @@
       if (branch != null) {
         String name = asString(branch);
         if (name != null) {
-          return new Branch.NameKey(project, name);
+          return BranchNameKey.create(project, name);
         }
       }
     }
@@ -120,7 +120,7 @@
           }
         }
         if (name != null) {
-          return new Project.NameKey(name);
+          return Project.nameKey(name);
         }
       }
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java b/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
index b71e1c2..dd1463f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
@@ -15,11 +15,13 @@
 package com.googlesource.gerrit.plugins.events;
 
 import com.google.common.base.Supplier;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.change.ChangeKeyAdapter;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.EventListener;
-import com.google.gerrit.server.events.ProjectNameKeySerializer;
+import com.google.gerrit.server.events.ProjectNameKeyAdapter;
 import com.google.gerrit.server.events.SupplierSerializer;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -36,7 +38,8 @@
   protected static final Gson gson =
       new GsonBuilder()
           .registerTypeAdapter(Supplier.class, new SupplierSerializer())
-          .registerTypeAdapter(Project.NameKey.class, new ProjectNameKeySerializer())
+          .registerTypeAdapter(Project.NameKey.class, new ProjectNameKeyAdapter())
+          .registerTypeAdapter(Change.Key.class, new ChangeKeyAdapter())
           .create();
   protected final DynamicSet<StreamEventListener> listeners;
   protected final EventStore store;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java b/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
index ce9ff2b..b424923 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
@@ -33,6 +33,7 @@
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import org.apache.sshd.server.Environment;
+import org.apache.sshd.server.channel.ChannelSession;
 import org.kohsuke.args4j.Option;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -100,7 +101,7 @@
   protected volatile boolean shuttingDown = false;
 
   @Override
-  public void start(final Environment env) throws IOException {
+  public void start(ChannelSession channel, Environment env) throws IOException {
     try {
       parseCommandLine();
     } catch (UnloggedFailure e) {
@@ -163,7 +164,7 @@
   }
 
   @Override
-  protected void onExit(final int rc) {
+  protected void onExit(int rc) {
     unsubscribe();
     synchronized (crossThreadlock) {
       shuttingDown = true;
@@ -172,7 +173,7 @@
   }
 
   @Override
-  public void destroy() {
+  public void destroy(ChannelSession channel) {
     unsubscribe();
     synchronized (crossThreadlock) {
       boolean alreadyShuttingDown = shuttingDown;
diff --git a/test/docker/gerrit/Dockerfile b/test/docker/gerrit/Dockerfile
index e60e289..73be59b 100755
--- a/test/docker/gerrit/Dockerfile
+++ b/test/docker/gerrit/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritcodereview/gerrit:3.0.16-ubuntu18
+FROM gerritcodereview/gerrit:3.1.15-ubuntu18
 
 USER root
 
diff --git a/test/test_events_plugin.sh b/test/test_events_plugin.sh
index 73f7641..e76532a 100755
--- a/test/test_events_plugin.sh
+++ b/test/test_events_plugin.sh
@@ -244,12 +244,12 @@
 result_type "$GROUP $type" "ref-updated" 2
 
 type=change-abandoned
-capture_events 3
+capture_events 2
 review "$ch1,1" --abandon
 result_type "$GROUP" "$type"
 
 type=change-restored
-capture_events 3
+capture_events 2
 review "$ch1,1" --restore
 result_type "$GROUP" "$type"