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