You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/01/04 14:32:54 UTC

lucene-solr:master: SOLR-9921 Separate SolrMetricProducer from SolrInfoMBean.

Repository: lucene-solr
Updated Branches:
  refs/heads/master ccdbb6ac0 -> 12d849221


SOLR-9921 Separate SolrMetricProducer from SolrInfoMBean.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/12d84922
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/12d84922
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/12d84922

Branch: refs/heads/master
Commit: 12d849221727d3294429397a456adebf583defbc
Parents: ccdbb6a
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed Jan 4 15:31:31 2017 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed Jan 4 15:31:31 2017 +0100

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  4 +-
 .../apache/solr/handler/RequestHandlerBase.java |  5 +--
 .../solr/handler/admin/CoreAdminHandler.java    |  6 +--
 .../component/HttpShardHandlerFactory.java      | 46 ++-----------------
 .../solr/metrics/SolrCoreMetricManager.java     |  9 +---
 .../apache/solr/metrics/SolrMetricProducer.java | 12 ++---
 .../apache/solr/update/UpdateShardHandler.java  | 14 +++---
 .../stats/InstrumentedHttpRequestExecutor.java  | 42 +----------------
 ...entedPoolingHttpClientConnectionManager.java | 43 +-----------------
 .../solr/metrics/SolrCoreMetricManagerTest.java |  7 ++-
 .../solr/metrics/SolrMetricTestUtils.java       | 47 +++-----------------
 11 files changed, 28 insertions(+), 207 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 3281158..1ad6359 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -178,8 +178,8 @@ New Features
 
 * SOLR-9860: Enable configuring invariantParams via HttpSolrClient.Builder (Hrishikesh Gadre, Ishan Chattopadhyaya)
  
-* SOLR-4735: Improve metrics reporting. This uses the dropwizard metric library, adding an internal API
-  for registering and reporting metrics from Solr components. Several new metrics and an improved JMX
+* SOLR-4735, SOLR-9921: Improve metrics reporting. This uses the dropwizard metric library, adding an internal
+  API for registering and reporting metrics from Solr components. Several new metrics and an improved JMX
   reporter have been added (Alan Woodward, Jeff Wartes, Christine Poerschke, Kelvin Wong, shalin, ab)
 
 * SOLR-9788: Use instrumented jetty classes provided by the dropwizard metric library. (shalin)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 85597dc..1fd6c30 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -18,8 +18,6 @@ package org.apache.solr.handler;
 
 import java.lang.invoke.MethodHandles;
 import java.net.URL;
-import java.util.Arrays;
-import java.util.Collection;
 
 import com.codahale.metrics.Counter;
 import com.codahale.metrics.Meter;
@@ -133,14 +131,13 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
   }
 
   @Override
-  public Collection<String> initializeMetrics(SolrMetricManager manager, String registryName, String scope) {
+  public void initializeMetrics(SolrMetricManager manager, String registryName, String scope) {
     numErrors = manager.meter(registryName, "errors", getCategory().toString(), scope);
     numServerErrors = manager.meter(registryName, "serverErrors", getCategory().toString(), scope);
     numClientErrors = manager.meter(registryName, "clientErrors", getCategory().toString(), scope);
     numTimeouts = manager.meter(registryName, "timeouts", getCategory().toString(), scope);
     requests = manager.counter(registryName, "requests", getCategory().toString(), scope);
     requestTimes = manager.timer(registryName, "requestTimes", getCategory().toString(), scope);
-    return Arrays.asList("errors", "serverErrors", "clientErrors", "timeouts", "requestTimes", "requests");
   }
 
   public static SolrParams getSolrParamsFromNamedList(NamedList args, String key) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index 458b7a5..05a1671 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@ -18,7 +18,6 @@ package org.apache.solr.handler.admin;
 
 import java.io.File;
 import java.lang.invoke.MethodHandles;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -115,11 +114,10 @@ public class CoreAdminHandler extends RequestHandlerBase implements PermissionNa
   }
 
   @Override
-  public Collection<String> initializeMetrics(SolrMetricManager manager, String registryName, String scope) {
-    Collection<String> metrics = super.initializeMetrics(manager, registryName, scope);
+  public void initializeMetrics(SolrMetricManager manager, String registryName, String scope) {
+    super.initializeMetrics(manager, registryName, scope);
     parallelExecutor = MetricUtils.instrumentedExecutorService(parallelExecutor, manager.registry(registryName),
         SolrMetricManager.mkName("parallelCoreAdminExecutor", getCategory().name(),scope, "threadPool"));
-    return metrics;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
index d190ce0..14af88a 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
@@ -48,9 +48,6 @@ import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
@@ -365,48 +362,11 @@ public class HttpShardHandlerFactory extends ShardHandlerFactory implements org.
   }
 
   @Override
-  public String getName() {
-    return this.getClass().getName();
-  }
-
-  @Override
-  public String getVersion() {
-    return getClass().getPackage().getSpecificationVersion();
-  }
-
-  @Override
-  public Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope) {
-    List<String> metricNames = new ArrayList<>(4);
-    metricNames.addAll(clientConnectionManager.initializeMetrics(manager, registry, scope));
-    metricNames.addAll(httpRequestExecutor.initializeMetrics(manager, registry, scope));
+  public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+    clientConnectionManager.initializeMetrics(manager, registry, scope);
+    httpRequestExecutor.initializeMetrics(manager, registry, scope);
     commExecutor = MetricUtils.instrumentedExecutorService(commExecutor,
         manager.registry(registry),
         SolrMetricManager.mkName("httpShardExecutor", scope, "threadPool"));
-    return metricNames;
-  }
-
-  @Override
-  public String getDescription() {
-    return "Metrics tracked by HttpShardHandlerFactory for distributed query requests";
-  }
-
-  @Override
-  public Category getCategory() {
-    return Category.OTHER;
-  }
-
-  @Override
-  public String getSource() {
-    return null;
-  }
-
-  @Override
-  public URL[] getDocs() {
-    return new URL[0];
-  }
-
-  @Override
-  public NamedList getStatistics() {
-    return null;
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
index 0e5403b..e7ca9c4 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
@@ -18,7 +18,6 @@ package org.apache.solr.metrics;
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.util.Collection;
 import java.lang.invoke.MethodHandles;
 
 import org.apache.solr.core.NodeConfig;
@@ -88,15 +87,11 @@ public class SolrCoreMetricManager implements Closeable {
    * @param producer  producer of metrics to be registered
    */
   public void registerMetricProducer(String scope, SolrMetricProducer producer) {
-    if (scope == null || producer == null || producer.getCategory() == null) {
+    if (scope == null || producer == null) {
       throw new IllegalArgumentException("registerMetricProducer() called with illegal arguments: " +
           "scope = " + scope + ", producer = " + producer);
     }
-    Collection<String> registered = producer.initializeMetrics(metricManager, getRegistryName(), scope);
-    if (registered == null || registered.isEmpty()) {
-      throw new IllegalArgumentException("registerMetricProducer() did not register any metrics " +
-      "for scope = " + scope + ", producer = " + producer);
-    }
+    producer.initializeMetrics(metricManager, getRegistryName(), scope);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
index 472931f..73abab1 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
@@ -16,15 +16,10 @@
  */
 package org.apache.solr.metrics;
 
-import java.util.Collection;
-
-import org.apache.solr.core.SolrInfoMBean;
-
 /**
- * Extension of {@link SolrInfoMBean} for use by objects that
- * expose metrics through {@link SolrCoreMetricManager}.
+ * Used by objects that expose metrics through {@link SolrCoreMetricManager}.
  */
-public interface SolrMetricProducer extends SolrInfoMBean {
+public interface SolrMetricProducer {
 
   /**
    * Initializes metrics specific to this producer
@@ -32,7 +27,6 @@ public interface SolrMetricProducer extends SolrInfoMBean {
    * @param registry registry name where metrics are registered
    * @param scope scope of the metrics (eg. handler name) to separate metrics of
    *              instances of the same component executing in different contexts
-   * @return registered (or existing) unqualified names of metrics specific to this producer.
    */
-  Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope);
+  void initializeMetrics(SolrMetricManager manager, String registry, String scope);
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
index 9d230bc..cc13f3e 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
@@ -18,9 +18,6 @@ package org.apache.solr.update;
 
 import java.lang.invoke.MethodHandles;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
 import java.util.concurrent.ExecutorService;
 
 import com.codahale.metrics.InstrumentedExecutorService;
@@ -34,6 +31,7 @@ import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SolrjNamedThreadFactory;
+import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.metrics.SolrMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.util.stats.InstrumentedHttpRequestExecutor;
@@ -41,7 +39,7 @@ import org.apache.solr.util.stats.InstrumentedPoolingHttpClientConnectionManager
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class UpdateShardHandler implements SolrMetricProducer {
+public class UpdateShardHandler implements SolrMetricProducer, SolrInfoMBean {
   
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
@@ -99,17 +97,15 @@ public class UpdateShardHandler implements SolrMetricProducer {
   }
 
   @Override
-  public Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope) {
-    List<String> metricNames = new ArrayList<>(4);
-    metricNames.addAll(clientConnectionManager.initializeMetrics(manager, registry, scope));
-    metricNames.addAll(httpRequestExecutor.initializeMetrics(manager, registry, scope));
+  public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+    clientConnectionManager.initializeMetrics(manager, registry, scope);
+    httpRequestExecutor.initializeMetrics(manager, registry, scope);
     updateExecutor = new InstrumentedExecutorService(updateExecutor,
         manager.registry(registry),
         SolrMetricManager.mkName("updateExecutor", scope, "threadPool"));
     recoveryExecutor = new InstrumentedExecutorService(recoveryExecutor,
         manager.registry(registry),
         SolrMetricManager.mkName("recoveryExecutor", scope, "threadPool"));
-    return metricNames;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/util/stats/InstrumentedHttpRequestExecutor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/stats/InstrumentedHttpRequestExecutor.java b/solr/core/src/java/org/apache/solr/util/stats/InstrumentedHttpRequestExecutor.java
index 0426780..6f3f759 100644
--- a/solr/core/src/java/org/apache/solr/util/stats/InstrumentedHttpRequestExecutor.java
+++ b/solr/core/src/java/org/apache/solr/util/stats/InstrumentedHttpRequestExecutor.java
@@ -19,9 +19,6 @@ package org.apache.solr.util.stats;
 
 import java.io.IOException;
 import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.Locale;
 
 import com.codahale.metrics.MetricRegistry;
@@ -35,7 +32,6 @@ import org.apache.http.client.methods.HttpRequestWrapper;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.protocol.HttpRequestExecutor;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.metrics.SolrMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 
@@ -71,45 +67,9 @@ public class InstrumentedHttpRequestExecutor extends HttpRequestExecutor impleme
   }
 
   @Override
-  public String getName() {
-    return this.getClass().getName();
-  }
-
-  @Override
-  public String getVersion() {
-    return getClass().getPackage().getSpecificationVersion();
-  }
-
-  @Override
-  public Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+  public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
     this.metricsRegistry = manager.registry(registry);
     this.scope = scope;
-    return Collections.emptyList(); // we do not know the names of the metrics yet
-  }
-
-  @Override
-  public String getDescription() {
-    return null;
-  }
-
-  @Override
-  public Category getCategory() {
-    return Category.OTHER;
-  }
-
-  @Override
-  public String getSource() {
-    return null;
-  }
-
-  @Override
-  public URL[] getDocs() {
-    return null;
-  }
-
-  @Override
-  public NamedList getStatistics() {
-    return null;
   }
 
   private String getNameFor(HttpRequest request) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/java/org/apache/solr/util/stats/InstrumentedPoolingHttpClientConnectionManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/stats/InstrumentedPoolingHttpClientConnectionManager.java b/solr/core/src/java/org/apache/solr/util/stats/InstrumentedPoolingHttpClientConnectionManager.java
index 08b68cb..6c992fa 100644
--- a/solr/core/src/java/org/apache/solr/util/stats/InstrumentedPoolingHttpClientConnectionManager.java
+++ b/solr/core/src/java/org/apache/solr/util/stats/InstrumentedPoolingHttpClientConnectionManager.java
@@ -17,16 +17,11 @@
 
 package org.apache.solr.util.stats;
 
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collection;
-
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.MetricRegistry;
 import org.apache.http.config.Registry;
 import org.apache.http.conn.socket.ConnectionSocketFactory;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.metrics.SolrMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 
@@ -51,17 +46,7 @@ public class InstrumentedPoolingHttpClientConnectionManager extends PoolingHttpC
   }
 
   @Override
-  public String getName() {
-    return this.getClass().getName();
-  }
-
-  @Override
-  public String getVersion() {
-    return getClass().getPackage().getSpecificationVersion();
-  }
-
-  @Override
-  public Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+  public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
     this.metricsRegistry = manager.registry(registry);
     metricsRegistry.register(SolrMetricManager.mkName("availableConnections", scope),
         (Gauge<Integer>) () -> {
@@ -83,31 +68,5 @@ public class InstrumentedPoolingHttpClientConnectionManager extends PoolingHttpC
           // this acquires a lock on the connection pool; remove if contention sucks
           return getTotalStats().getPending();
         });
-    return Arrays.asList("availableConnections", "leasedConnections", "maxConnections", "pendingConnections");
-  }
-
-  @Override
-  public String getDescription() {
-    return "";
-  }
-
-  @Override
-  public Category getCategory() {
-    return Category.OTHER;
-  }
-
-  @Override
-  public String getSource() {
-    return null;
-  }
-
-  @Override
-  public URL[] getDocs() {
-    return null;
-  }
-
-  @Override
-  public NamedList getStatistics() {
-    return null;
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
index 65ffb93..1df6021 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrCoreMetricManagerTest.java
@@ -68,11 +68,10 @@ public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
       coreMetricManager.registerMetricProducer(scope, producer);
       assertNotNull(scope);
       assertNotNull(category);
-      assertNotNull(metrics);
       assertRegistered(scope, metrics, coreMetricManager);
     } catch (final IllegalArgumentException e) {
-      assertTrue("expected at least one null but got: scope="+scope+" category="+category+" metrics="+metrics,
-          (scope == null || category == null || metrics == null));
+      assertTrue("expected at least one null but got: scope="+scope+", category="+category,
+          (scope == null || category == null));
       assertRegistered(scope, new HashMap<>(), coreMetricManager);
     }
   }
@@ -130,7 +129,7 @@ public class SolrCoreMetricManagerTest extends SolrTestCaseJ4 {
   }
 
   private void assertRegistered(String scope, Map<String, Counter> newMetrics, SolrCoreMetricManager coreMetricManager) {
-    if (scope == null) {
+    if (scope == null || newMetrics == null) {
       return;
     }
     String filter = "." + scope + ".";

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12d84922/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
index 44ae9db..6bd6500 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricTestUtils.java
@@ -16,17 +16,13 @@
  */
 package org.apache.solr.metrics;
 
-import java.net.URL;
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Random;
 
 import com.codahale.metrics.Counter;
 import org.apache.lucene.util.TestUtil;
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.SolrInfoMBean;
 
 public final class SolrMetricTestUtils {
@@ -82,49 +78,16 @@ public final class SolrMetricTestUtils {
   public static SolrMetricProducer getProducerOf(SolrMetricManager metricManager, SolrInfoMBean.Category category, String scope, Map<String, Counter> metrics) {
     return new SolrMetricProducer() {
       @Override
-      public Collection<String> initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+      public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+        if (category == null) {
+          throw new IllegalArgumentException("null category");
+        }
         if (metrics == null || metrics.isEmpty()) {
-          return Collections.emptyList();
+          return;
         }
         for (Map.Entry<String, Counter> entry : metrics.entrySet()) {
           manager.counter(registry, entry.getKey(), category.toString(), scope);
         }
-        return metrics.keySet();
-      }
-
-      @Override
-      public String getName() {
-        return scope;
-      }
-
-      @Override
-      public String getVersion() {
-        return "0.0";
-      }
-
-      @Override
-      public String getDescription() {
-        return "foo";
-      }
-
-      @Override
-      public Category getCategory() {
-        return category;
-      }
-
-      @Override
-      public String getSource() {
-        return null;
-      }
-
-      @Override
-      public URL[] getDocs() {
-        return new URL[0];
-      }
-
-      @Override
-      public NamedList getStatistics() {
-        return null;
       }
 
       @Override