Introduce example of plugin specific configs

Introduce example of plugin specific configs by allowing
enabling of the ConsoleMetricReporter through configuration
(which risked becomming quite spammy in its output).

Change-Id: Ia2a048818b12bf612171f90db5544f79ca0feff8
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/ConsoleMetricReporter.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/ConsoleMetricReporter.java
index e10907e..f2a3eb6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cookbook/ConsoleMetricReporter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/ConsoleMetricReporter.java
@@ -14,13 +14,17 @@
 package com.googlesource.gerrit.plugins.cookbook;
 
 import com.google.gerrit.extensions.annotations.Listen;
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.LifecycleListener;
+import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
 import com.codahale.metrics.ConsoleReporter;
 import com.codahale.metrics.MetricRegistry;
 
+import org.eclipse.jgit.lib.Config;
+
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -30,14 +34,31 @@
  * @see <a href="https://dropwizard.github.io/metrics/3.1.0/getting-started/#reporting-via-jmx">here</a>
  * @see <a href="https://dropwizard.github.io/metrics/3.1.0/getting-started/#reporting-via-http">here</a>
  * @see <a href="https://dropwizard.github.io/metrics/3.1.0/getting-started/#other-reporting">here</a>
+ *
+ * Also shows how to fetch plug-in specific configuration values.
+ * <@see com.google.gerrit.server.config.PluginConfigFactory>
+ *
+ * Enable by adding the file etc/cookbook.config:
+ *
+ *  [console-metrics]
+ *      enabled = true
+ *
  */
 @Listen
 @Singleton
 public class ConsoleMetricReporter implements LifecycleListener {
   private ConsoleReporter consoleReporter;
+  private boolean enabled;
 
   @Inject
-  public ConsoleMetricReporter(MetricRegistry registry) {
+  public ConsoleMetricReporter(MetricRegistry registry,
+      PluginConfigFactory configFactory,
+      @PluginName String pluginName) {
+    Config config = configFactory.getGlobalPluginConfig(pluginName);
+    enabled = config.getBoolean("console-metrics", "enabled", false);
+    if (!enabled) {
+      return;
+    }
     this.consoleReporter =
         ConsoleReporter.forRegistry(registry).convertRatesTo(TimeUnit.SECONDS)
             .convertDurationsTo(TimeUnit.MILLISECONDS).build();
@@ -45,11 +66,15 @@
 
   @Override
   public void start() {
-    consoleReporter.start(1, TimeUnit.MINUTES);
+    if (enabled) {
+      consoleReporter.start(1, TimeUnit.MINUTES);
+    }
   }
 
   @Override
   public void stop() {
-    consoleReporter.stop();
+    if (enabled) {
+      consoleReporter.stop();
+    }
   }
 }