Merge branch 'stable-3.0'

* stable-3.0:
  BrokerApi dynamic item setup

Change-Id: Ic59c170c6cd151bf7a4caf121dc5cd4ddc1223d8
diff --git a/BUILD b/BUILD
index cdd7f31..f0fff60 100644
--- a/BUILD
+++ b/BUILD
@@ -15,7 +15,6 @@
     ],
     manifest_entries = [
         "Gerrit-PluginName: websession-broker",
-        "Gerrit-Module: com.googlesource.gerrit.plugins.websession.broker.Module",
         "Gerrit-HttpModule: com.googlesource.gerrit.plugins.websession.broker.BrokerBasedWebSession$Module",
         "Implementation-Title: Broker WebSession",
         "Implementation-URL: https://review.gerrithub.io/admin/repos/GerritForge/plugins_websession-broker",
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 09762f2..bd74d75 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -16,8 +16,8 @@
 
     maven_jar(
         name = "events-broker",
-        artifact = "com.gerritforge:events-broker:3.0.4",
-        sha1 = "350b438f532678b1f9a277b7e7b6fa9da4b725b3",
+        artifact = "com.gerritforge:events-broker:3.0.5",
+        sha1 = "7abf72d2252f975baff666fbbf28b7036767aa81",
     )
 
     maven_jar(
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java b/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java
index ba543ba..6dc1689 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java
@@ -223,6 +223,9 @@
 
   @Override
   public void start() {
+    if (brokerApi == null || brokerApi.get() == null) {
+      throw new IllegalStateException("Cannot find binding for BrokerApi");
+    }
     brokerApi.get().receiveAsync(webSessionTopicName, this::processMessage);
     brokerApi.get().replayAllEvents(webSessionTopicName);
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/broker/Module.java b/src/main/java/com/googlesource/gerrit/plugins/websession/broker/Module.java
deleted file mode 100644
index b3a9c7e..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/websession/broker/Module.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// 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.googlesource.gerrit.plugins.websession.broker;
-
-import com.gerritforge.gerrit.eventbroker.BrokerApi;
-import com.google.gerrit.extensions.registration.DynamicItem;
-import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.inject.Inject;
-
-public class Module extends LifecycleModule {
-  DynamicItem<BrokerApi> brokerApi;
-
-  @Override
-  protected void configure() {
-    if (brokerApi == null) {
-      DynamicItem.itemOf(binder(), BrokerApi.class);
-    }
-  }
-
-  @Inject(optional = true)
-  public void setBrokerApi(DynamicItem<BrokerApi> brokerApi) {
-    this.brokerApi = brokerApi;
-  }
-}
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
index cb65323..f488afa 100644
--- a/src/main/resources/Documentation/about.md
+++ b/src/main/resources/Documentation/about.md
@@ -12,6 +12,15 @@
 For the masters:
 
 * Install and configure @PLUGIN@ plugin
+  @PLUGIN@ plugin requires message broker dynamic item setup.
+  To fulfil this requirement events-broker needs to be installed as a library
+  module in all the masters' `$GERRIT_SITE/lib` directory and the following
+  property must be added to the `$GERRIT_SITE/etc/gerrit.config`
+
+```
+[gerrit]
+    installModule = com.gerritforge.gerrit.eventbroker.BrokerApiModule
+```
 
 For further information and supported options, refer to [config](config.md)
 documentation.