build with 3.4

Change-Id: Idf9b565d56dfbdf4ac6eced9a9d76d8362040253
diff --git a/WORKSPACE b/WORKSPACE
index f8df036..c156344 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "10e78cc706760ff24cbc67ba527f9a8e4134d66f",
+    commit = "7ff4605f48db148197675a0d2ea41ee07cb72fd3",
 )
 
 load(
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 dd1463f..e23c9e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
@@ -15,10 +15,9 @@
 package com.googlesource.gerrit.plugins.events;
 
 import com.google.common.base.Supplier;
-import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.EntitiesAdapterFactory;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.registration.DynamicSet;
-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.ProjectNameKeyAdapter;
@@ -39,7 +38,7 @@
       new GsonBuilder()
           .registerTypeAdapter(Supplier.class, new SupplierSerializer())
           .registerTypeAdapter(Project.NameKey.class, new ProjectNameKeyAdapter())
-          .registerTypeAdapter(Change.Key.class, new ChangeKeyAdapter())
+          .registerTypeAdapterFactory(EntitiesAdapterFactory.create())
           .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 e12b819..7a8c198 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
@@ -20,6 +20,7 @@
 import com.google.gerrit.extensions.annotations.RequiresCapability;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.registration.RegistrationHandle;
+import com.google.gerrit.server.DynamicOptions;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.git.WorkQueue.CancelableRunnable;
 import com.google.gerrit.sshd.BaseCommand;
@@ -103,24 +104,27 @@
 
   @Override
   public void start(ChannelSession channel, Environment env) throws IOException {
-    try {
-      parseCommandLine();
-    } catch (UnloggedFailure e) {
-      String msg = e.getMessage();
-      if (!msg.endsWith("\n")) {
-        msg += "\n";
+    try (DynamicOptions pluginOptions =
+        new DynamicOptions(injector, dynamicBeans)) {
+      try {
+        parseCommandLine(pluginOptions);
+      } catch (UnloggedFailure e) {
+        String msg = e.getMessage();
+        if (!msg.endsWith("\n")) {
+          msg += "\n";
+        }
+        err.write(msg.getBytes("UTF-8"));
+        err.flush();
+        onExit(1);
+        return;
       }
-      err.write(msg.getBytes("UTF-8"));
-      err.flush();
-      onExit(1);
-      return;
-    }
-    stdout = toPrintWriter(out);
+      stdout = toPrintWriter(out);
 
-    initSent();
-    flusherRunnable = createFlusherRunnable();
-    subscribe();
-    startFlush();
+      initSent();
+      flusherRunnable = createFlusherRunnable();
+      subscribe();
+      startFlush();
+    }
   }
 
   protected CancelableRunnable createFlusherRunnable() {
diff --git a/test/docker/gerrit/Dockerfile b/test/docker/gerrit/Dockerfile
index b7c581e..d6e7699 100755
--- a/test/docker/gerrit/Dockerfile
+++ b/test/docker/gerrit/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritcodereview/gerrit:3.3.4-ubuntu20
+FROM gerritcodereview/gerrit:3.4.0-ubuntu20
 
 USER root