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(); + } } }