[CALCITE-2583] Upgrade dropwizard metrics to 4.0.3

This changes the following:
* package name: `metrics-dropwizardmetrics3` -> `metrics-dropwizardmetrics`
* class name: `o.a.c.a.metrics.dropwizard3` -> `o.a.c.a.metrics.dropwizard`

Close apache/calcite-avatica#72

Signed-off-by: Kevin Risden <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/calcite-avatica/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite-avatica/commit/6afbfd52
Tree: http://git-wip-us.apache.org/repos/asf/calcite-avatica/tree/6afbfd52
Diff: http://git-wip-us.apache.org/repos/asf/calcite-avatica/diff/6afbfd52

Branch: refs/heads/master
Commit: 6afbfd52a78966a12d837a3cfe9c49ef216944fe
Parents: bba9ba7
Author: Kevin Risden <[email protected]>
Authored: Thu Sep 20 14:11:07 2018 -0400
Committer: Kevin Risden <[email protected]>
Committed: Thu Sep 20 16:55:09 2018 -0400

----------------------------------------------------------------------
 metrics-dropwizardmetrics/pom.xml               |  88 ++++++++++
 .../metrics/dropwizard/DropwizardCounter.java   |  51 ++++++
 .../metrics/dropwizard/DropwizardGauge.java     |  39 +++++
 .../metrics/dropwizard/DropwizardHistogram.java |  43 +++++
 .../metrics/dropwizard/DropwizardMeter.java     |  43 +++++
 .../dropwizard/DropwizardMetricsSystem.java     |  62 +++++++
 .../DropwizardMetricsSystemConfiguration.java   |  42 +++++
 .../DropwizardMetricsSystemFactory.java         |  42 +++++
 .../metrics/dropwizard/DropwizardTimer.java     |  54 +++++++
 .../metrics/dropwizard/package-info.java        |  26 +++
 ...calcite.avatica.metrics.MetricsSystemFactory |   2 +
 .../dropwizard/DropwizardCounterTest.java       |  61 +++++++
 .../metrics/dropwizard/DropwizardGaugeTest.java |  60 +++++++
 .../dropwizard/DropwizardHistogramTest.java     |  49 ++++++
 .../metrics/dropwizard/DropwizardMeterTest.java |  50 ++++++
 .../DropwizardMetricsSystemFactoryTest.java     |  54 +++++++
 .../dropwizard/DropwizardMetricsSystemTest.java | 161 +++++++++++++++++++
 .../metrics/dropwizard/DropwizardTimerTest.java |  56 +++++++
 metrics-dropwizardmetrics3/pom.xml              |  88 ----------
 .../metrics/dropwizard3/DropwizardCounter.java  |  51 ------
 .../metrics/dropwizard3/DropwizardGauge.java    |  39 -----
 .../dropwizard3/DropwizardHistogram.java        |  43 -----
 .../metrics/dropwizard3/DropwizardMeter.java    |  43 -----
 .../dropwizard3/DropwizardMetricsSystem.java    |  62 -------
 .../DropwizardMetricsSystemConfiguration.java   |  42 -----
 .../DropwizardMetricsSystemFactory.java         |  42 -----
 .../metrics/dropwizard3/DropwizardTimer.java    |  54 -------
 .../metrics/dropwizard3/package-info.java       |  26 ---
 ...calcite.avatica.metrics.MetricsSystemFactory |   2 -
 .../dropwizard3/DropwizardCounterTest.java      |  61 -------
 .../dropwizard3/DropwizardGaugeTest.java        |  60 -------
 .../dropwizard3/DropwizardHistogramTest.java    |  49 ------
 .../dropwizard3/DropwizardMeterTest.java        |  50 ------
 .../DropwizardMetricsSystemFactoryTest.java     |  54 -------
 .../DropwizardMetricsSystemTest.java            | 161 -------------------
 .../dropwizard3/DropwizardTimerTest.java        |  56 -------
 pom.xml                                         |   4 +-
 37 files changed, 985 insertions(+), 985 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/pom.xml
----------------------------------------------------------------------
diff --git a/metrics-dropwizardmetrics/pom.xml 
b/metrics-dropwizardmetrics/pom.xml
new file mode 100644
index 0000000..387e7f3
--- /dev/null
+++ b/metrics-dropwizardmetrics/pom.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.calcite.avatica</groupId>
+    <artifactId>avatica-parent</artifactId>
+    <version>1.13.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>avatica-metrics-dropwizardmetrics</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Calcite Avatica Dropwizard Metrics</name>
+  <description>An implementation of Avatica Metrics using Dropwizard Metrics. 
This should work with Dropwizard Metrics 3.x and 4.x.</description>
+
+  <properties>
+    <top.dir>${project.basedir}/..</top.dir>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.calcite.avatica</groupId>
+      <artifactId>avatica-metrics</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
+      <!-- Avoid specifying version in dependencyManagement in support of 
other avatica-metrics impls -->
+      <version>${dropwizard-metrics.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <!-- Parent module has the same plugin and does the work of
+           generating -sources.jar for each project. But without the
+           plugin declared here, IDEs don't know the sources are
+           available. -->
+      <plugin>
+        <artifactId>maven-source-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-sources</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>jar-no-fork</goal>
+              <goal>test-jar-no-fork</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            
<exclude>src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounter.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounter.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounter.java
new file mode 100644
index 0000000..c6de931
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounter.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Counter;
+
+import java.util.Objects;
+
+/**
+ * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Counter}.
+ */
+public class DropwizardCounter implements 
org.apache.calcite.avatica.metrics.Counter {
+
+  private final Counter counter;
+
+  public DropwizardCounter(Counter counter) {
+    this.counter = Objects.requireNonNull(counter);
+  }
+
+  @Override public void increment() {
+    this.counter.inc();
+  }
+
+  @Override public void increment(long n) {
+    this.counter.inc(n);
+  }
+
+  @Override public void decrement() {
+    this.counter.dec();
+  }
+
+  @Override public void decrement(long n) {
+    this.counter.dec(n);
+  }
+}
+
+// End DropwizardCounter.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGauge.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGauge.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGauge.java
new file mode 100644
index 0000000..50537db
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGauge.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Gauge;
+
+/**
+ * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Gauge}.
+ *
+ * @param <T> The value the gauge returns.
+ */
+public class DropwizardGauge<T> implements Gauge<T> {
+
+  private final org.apache.calcite.avatica.metrics.Gauge<T> gauge;
+
+  public DropwizardGauge(org.apache.calcite.avatica.metrics.Gauge<T> gauge) {
+    this.gauge = gauge;
+  }
+
+  @Override public T getValue() {
+    return gauge.getValue();
+  }
+}
+
+// End DropwizardGauge.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogram.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogram.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogram.java
new file mode 100644
index 0000000..3a33ca3
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogram.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Histogram;
+
+import java.util.Objects;
+
+/**
+ * Dropwizard metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Histogram}.
+ */
+public class DropwizardHistogram implements 
org.apache.calcite.avatica.metrics.Histogram {
+
+  private final Histogram histogram;
+
+  public DropwizardHistogram(Histogram histogram) {
+    this.histogram = Objects.requireNonNull(histogram);
+  }
+
+  @Override public void update(int value) {
+    histogram.update(value);
+  }
+
+  @Override public void update(long value) {
+    histogram.update(value);
+  }
+}
+
+// End DropwizardHistogram.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeter.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeter.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeter.java
new file mode 100644
index 0000000..041cb8c
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeter.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Meter;
+
+import java.util.Objects;
+
+/**
+ * Dropwizard metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Meter}.
+ */
+public class DropwizardMeter implements 
org.apache.calcite.avatica.metrics.Meter {
+
+  private final Meter meter;
+
+  public DropwizardMeter(Meter meter) {
+    this.meter = Objects.requireNonNull(meter);
+  }
+
+  @Override public void mark() {
+    this.meter.mark();
+  }
+
+  @Override public void mark(long count) {
+    this.meter.mark(count);
+  }
+}
+
+// End DropwizardMeter.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystem.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystem.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystem.java
new file mode 100644
index 0000000..e78273c
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystem.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.Counter;
+import org.apache.calcite.avatica.metrics.Gauge;
+import org.apache.calcite.avatica.metrics.Histogram;
+import org.apache.calcite.avatica.metrics.Meter;
+import org.apache.calcite.avatica.metrics.MetricsSystem;
+import org.apache.calcite.avatica.metrics.Timer;
+
+import com.codahale.metrics.MetricRegistry;
+
+import java.util.Objects;
+
+/**
+ * Dropwizard Metrics implementation of {@link MetricsSystem}.
+ */
+public class DropwizardMetricsSystem implements MetricsSystem {
+
+  private final MetricRegistry registry;
+
+  public DropwizardMetricsSystem(MetricRegistry registry) {
+    this.registry = Objects.requireNonNull(registry);
+  }
+
+  @Override public Timer getTimer(String name) {
+    return new DropwizardTimer(registry.timer(name));
+  }
+
+  @Override public Histogram getHistogram(String name) {
+    return new DropwizardHistogram(registry.histogram(name));
+  }
+
+  @Override public Meter getMeter(String name) {
+    return new DropwizardMeter(registry.meter(name));
+  }
+
+  @Override public Counter getCounter(String name) {
+    return new DropwizardCounter(registry.counter(name));
+  }
+
+  @Override public <T> void register(String name, Gauge<T> gauge) {
+    registry.register(name, new DropwizardGauge<T>(gauge));
+  }
+}
+
+// End DropwizardMetricsSystem.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemConfiguration.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemConfiguration.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemConfiguration.java
new file mode 100644
index 0000000..df432bd
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemConfiguration.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.MetricsSystemConfiguration;
+
+import com.codahale.metrics.MetricRegistry;
+
+import java.util.Objects;
+
+/**
+ * A container which provides a {@link MetricRegistry} to a {@link 
DropwizardMetricsSystem}.
+ */
+public class DropwizardMetricsSystemConfiguration implements
+    MetricsSystemConfiguration<MetricRegistry> {
+
+  private final MetricRegistry registry;
+
+  public DropwizardMetricsSystemConfiguration(MetricRegistry registry) {
+    this.registry = Objects.requireNonNull(registry);
+  }
+
+  @Override public MetricRegistry get() {
+    return registry;
+  }
+}
+
+// End DropwizardMetricsSystemConfiguration.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactory.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactory.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactory.java
new file mode 100644
index 0000000..a9fafd6
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactory.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.MetricsSystemConfiguration;
+import org.apache.calcite.avatica.metrics.MetricsSystemFactory;
+
+/**
+ * A {@link MetricsSystemFactory} for {@link DropwizardMetricsSystem}.
+ */
+public class DropwizardMetricsSystemFactory implements MetricsSystemFactory {
+
+  @Override public DropwizardMetricsSystem 
create(MetricsSystemConfiguration<?> config) {
+    // Verify we got configuration this factory can use
+    if (config instanceof DropwizardMetricsSystemConfiguration) {
+      DropwizardMetricsSystemConfiguration typedConfig =
+          (DropwizardMetricsSystemConfiguration) config;
+
+      return new DropwizardMetricsSystem(typedConfig.get());
+    }
+
+    throw new IllegalStateException("Expected instance of "
+        + DropwizardMetricsSystemConfiguration.class.getName() + " but got "
+        + (null == config ? "null" : config.getClass().getName()));
+  }
+}
+
+// End DropwizardMetricsSystemFactory.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimer.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimer.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimer.java
new file mode 100644
index 0000000..7d71001
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimer.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Timer;
+
+import java.util.Objects;
+
+/**
+ * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Timer}.
+ */
+public class DropwizardTimer implements 
org.apache.calcite.avatica.metrics.Timer {
+
+  private final Timer timer;
+
+  public DropwizardTimer(Timer timer) {
+    this.timer = Objects.requireNonNull(timer);
+  }
+
+  @Override public DropwizardContext start() {
+    return new DropwizardContext(timer.time());
+  }
+
+  /**
+   * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Timer.Context}
+   */
+  public class DropwizardContext implements 
org.apache.calcite.avatica.metrics.Timer.Context {
+    private final com.codahale.metrics.Timer.Context context;
+
+    public DropwizardContext(com.codahale.metrics.Timer.Context context) {
+      this.context = Objects.requireNonNull(context);
+    }
+
+    @Override public void close() {
+      this.context.stop();
+    }
+  }
+}
+
+// End DropwizardTimer.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/package-info.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/package-info.java
 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/package-info.java
new file mode 100644
index 0000000..0104f20
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/java/org/apache/calcite/avatica/metrics/dropwizard/package-info.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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.
+ */
+
+/**
+ * Dropwizard-Metrics (v3) implementation of the Avatica Metrics framework.
+ */
+@PackageMarker
+package org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.PackageMarker;
+
+// End package-info.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
 
b/metrics-dropwizardmetrics/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
new file mode 100644
index 0000000..b03fe3c
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
@@ -0,0 +1,2 @@
+org.apache.calcite.avatica.metrics.dropwizard.DropwizardMetricsSystemFactory
+

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounterTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounterTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounterTest.java
new file mode 100644
index 0000000..4b6b2e7
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardCounterTest.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Counter;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test class for {@link DropwizardCounter}.
+ */
+public class DropwizardCounterTest {
+
+  private Counter counter;
+
+  @Before public void setup() {
+    this.counter = new Counter();
+  }
+
+  @Test public void testCounting() {
+    DropwizardCounter dwCounter = new DropwizardCounter(counter);
+
+    dwCounter.increment();
+    assertEquals(1L, counter.getCount());
+    dwCounter.increment();
+    assertEquals(2L, counter.getCount());
+    dwCounter.increment(2L);
+    assertEquals(4L, counter.getCount());
+    dwCounter.increment(-1L);
+    assertEquals(3L, counter.getCount());
+
+    dwCounter.decrement();
+    assertEquals(2L, counter.getCount());
+    dwCounter.decrement();
+    assertEquals(1L, counter.getCount());
+    dwCounter.decrement(4L);
+    assertEquals(-3L, counter.getCount());
+    dwCounter.decrement(-3L);
+    assertEquals(0L, counter.getCount());
+  }
+
+}
+
+// End DropwizardCounterTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGaugeTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGaugeTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGaugeTest.java
new file mode 100644
index 0000000..5212594
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardGaugeTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.Gauge;
+
+import org.junit.Test;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test class for {@link DropwizardGauge}.
+ */
+public class DropwizardGaugeTest {
+
+  @Test public void test() {
+    SimpleGauge gauge = new SimpleGauge();
+    DropwizardGauge<Long> dwGauge = new DropwizardGauge<>(gauge);
+
+    assertEquals(gauge.getValue(), dwGauge.getValue());
+
+    gauge.setValue(1000L);
+
+    assertEquals(gauge.getValue(), dwGauge.getValue());
+  }
+
+  /**
+   * Gauge implementation with a setter.
+   */
+  private static class SimpleGauge implements Gauge<Long> {
+
+    private final AtomicLong value = new AtomicLong(0L);
+
+    @Override public Long getValue() {
+      return this.value.get();
+    }
+
+    public void setValue(long value) {
+      this.value.set(value);
+    }
+  }
+}
+
+// End DropwizardGaugeTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogramTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogramTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogramTest.java
new file mode 100644
index 0000000..b6dc1f4
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardHistogramTest.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Histogram;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * Test class for {@link DropwizardHistogram}.
+ */
+public class DropwizardHistogramTest {
+
+  private Histogram histogram;
+
+  @Before public void setup() {
+    this.histogram = Mockito.mock(Histogram.class);
+  }
+
+  @Test public void test() {
+    DropwizardHistogram dwHistogram = new DropwizardHistogram(histogram);
+
+    dwHistogram.update(10);
+
+    dwHistogram.update(100L);
+
+    Mockito.verify(histogram).update(10);
+    Mockito.verify(histogram).update(100L);
+  }
+
+}
+
+// End DropwizardHistogramTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeterTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeterTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeterTest.java
new file mode 100644
index 0000000..d236bfd
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMeterTest.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import com.codahale.metrics.Meter;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * Test class for {@link DropwizardMeter}.
+ */
+public class DropwizardMeterTest {
+
+  private Meter meter;
+
+  @Before public void setup() {
+    this.meter = Mockito.mock(Meter.class);
+  }
+
+  @Test public void test() {
+    DropwizardMeter dwMeter = new DropwizardMeter(this.meter);
+
+    dwMeter.mark();
+    dwMeter.mark(10L);
+    dwMeter.mark();
+    dwMeter.mark();
+
+    Mockito.verify(meter, Mockito.times(3)).mark();
+    Mockito.verify(meter).mark(10L);
+  }
+
+}
+
+// End DropwizardMeterTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactoryTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactoryTest.java
new file mode 100644
index 0000000..63859ae
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemFactoryTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.noop.NoopMetricsSystemConfiguration;
+
+import com.codahale.metrics.MetricRegistry;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Test class for {@link DropwizardMetricsSystemFactory}.
+ */
+public class DropwizardMetricsSystemFactoryTest {
+
+  private DropwizardMetricsSystemFactory factory;
+
+  @Before public void setup() {
+    factory = new DropwizardMetricsSystemFactory();
+  }
+
+  @Test(expected = IllegalStateException.class) public void 
testNullConfigurationFails() {
+    factory.create(null);
+  }
+
+  @Test(expected = IllegalStateException.class) public void 
testUnhandledConfigurationType() {
+    factory.create(NoopMetricsSystemConfiguration.getInstance());
+  }
+
+  @Test public void testHandledConfigurationType() {
+    DropwizardMetricsSystem metrics =
+        factory.create(new DropwizardMetricsSystemConfiguration(new 
MetricRegistry()));
+    assertNotNull("Expected DropwizardMetricsSystem to be non-null", metrics);
+  }
+}
+
+// End DropwizardMetricsSystemFactoryTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemTest.java
new file mode 100644
index 0000000..a7ac094
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardMetricsSystemTest.java
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import org.apache.calcite.avatica.metrics.Counter;
+import org.apache.calcite.avatica.metrics.Gauge;
+import org.apache.calcite.avatica.metrics.Histogram;
+import org.apache.calcite.avatica.metrics.Meter;
+import org.apache.calcite.avatica.metrics.Timer;
+import org.apache.calcite.avatica.metrics.Timer.Context;
+
+import com.codahale.metrics.MetricRegistry;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests for {@link DropwizardMetricsSystem}.
+ */
+public class DropwizardMetricsSystemTest {
+
+  private MetricRegistry mockRegistry;
+  private DropwizardMetricsSystem metrics;
+
+  @Before public void setup() {
+    mockRegistry = mock(MetricRegistry.class);
+    metrics = new DropwizardMetricsSystem(mockRegistry);
+  }
+
+  @Test public void testGauge() {
+    final long gaugeValue = 42L;
+    final String name = "gauge";
+    metrics.register(name, new Gauge<Long>() {
+      @Override public Long getValue() {
+        return gaugeValue;
+      }
+    });
+
+    verify(mockRegistry, times(1)).register(eq(name), 
any(com.codahale.metrics.Gauge.class));
+  }
+
+  @Test public void testMeter() {
+    final String name = "meter";
+    final com.codahale.metrics.Meter mockMeter = 
mock(com.codahale.metrics.Meter.class);
+
+    when(mockRegistry.meter(name)).thenReturn(mockMeter);
+
+    Meter meter = metrics.getMeter(name);
+
+    final long count = 5;
+    meter.mark(count);
+
+    verify(mockMeter, times(1)).mark(count);
+
+    meter.mark();
+
+    verify(mockMeter, times(1)).mark();
+  }
+
+  @Test public void testHistogram() {
+    final String name = "histogram";
+    final com.codahale.metrics.Histogram mockHistogram = 
mock(com.codahale.metrics.Histogram.class);
+
+    when(mockRegistry.histogram(name)).thenReturn(mockHistogram);
+
+    Histogram histogram = metrics.getHistogram(name);
+
+    long[] long_values = new long[] {1L, 5L, 15L, 30L, 60L};
+    for (long value : long_values) {
+      histogram.update(value);
+    }
+
+    for (long value : long_values) {
+      verify(mockHistogram).update(value);
+    }
+
+    int[] int_values = new int[] {2, 6, 16, 31, 61};
+    for (int value : int_values) {
+      histogram.update(value);
+    }
+
+    for (int value : int_values) {
+      verify(mockHistogram).update(value);
+    }
+  }
+
+  @Test public void testCounter() {
+    final String name = "counter";
+    final com.codahale.metrics.Counter mockCounter = 
mock(com.codahale.metrics.Counter.class);
+
+    when(mockRegistry.counter(name)).thenReturn(mockCounter);
+
+    Counter counter = metrics.getCounter(name);
+
+    long[] updates = new long[] {1L, 5L, -2L, 4L, -8L, 0};
+    for (long update : updates) {
+      if (update < 0) {
+        counter.decrement(Math.abs(update));
+      } else {
+        counter.increment(update);
+      }
+    }
+
+    for (long update : updates) {
+      if (update < 0) {
+        verify(mockCounter).dec(Math.abs(update));
+      } else {
+        verify(mockCounter).inc(update);
+      }
+    }
+
+    int numSingleUpdates = 3;
+    for (int i = 0; i < numSingleUpdates; i++) {
+      counter.increment();
+      counter.decrement();
+    }
+
+    verify(mockCounter, times(numSingleUpdates)).inc();
+    verify(mockCounter, times(numSingleUpdates)).dec();
+  }
+
+  @Test public void testTimer() {
+    final String name = "timer";
+    final com.codahale.metrics.Timer mockTimer = 
mock(com.codahale.metrics.Timer.class);
+    final com.codahale.metrics.Timer.Context mockContext =
+        mock(com.codahale.metrics.Timer.Context.class);
+
+    when(mockRegistry.timer(name)).thenReturn(mockTimer);
+    when(mockTimer.time()).thenReturn(mockContext);
+
+    Timer timer = metrics.getTimer(name);
+    Context context = timer.start();
+    context.close();
+
+    verify(mockTimer).time();
+    verify(mockContext).stop();
+  }
+}
+
+// End DropwizardMetricsSystemTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimerTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimerTest.java
 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimerTest.java
new file mode 100644
index 0000000..7730061
--- /dev/null
+++ 
b/metrics-dropwizardmetrics/src/test/java/org/apache/calcite/avatica/metrics/dropwizard/DropwizardTimerTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard;
+
+import 
org.apache.calcite.avatica.metrics.dropwizard.DropwizardTimer.DropwizardContext;
+
+import com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer.Context;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * Test class for {@link DropwizardTimer}
+ */
+public class DropwizardTimerTest {
+
+  private Timer timer;
+  private Context context;
+
+  @Before public void setup() {
+    this.timer = Mockito.mock(Timer.class);
+    this.context = Mockito.mock(Context.class);
+  }
+
+  @Test public void test() {
+    DropwizardTimer dwTimer = new DropwizardTimer(timer);
+
+    Mockito.when(timer.time()).thenReturn(context);
+
+    DropwizardContext dwContext = dwTimer.start();
+
+    dwContext.close();
+
+    Mockito.verify(timer).time();
+    Mockito.verify(context).stop();
+  }
+
+}
+
+// End DropwizardTimerTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/pom.xml
----------------------------------------------------------------------
diff --git a/metrics-dropwizardmetrics3/pom.xml 
b/metrics-dropwizardmetrics3/pom.xml
deleted file mode 100644
index ebf967f..0000000
--- a/metrics-dropwizardmetrics3/pom.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to you 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.calcite.avatica</groupId>
-    <artifactId>avatica-parent</artifactId>
-    <version>1.13.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>avatica-metrics-dropwizardmetrics3</artifactId>
-  <packaging>jar</packaging>
-  <name>Apache Calcite Avatica Dropwizard Metrics 3</name>
-  <description>An implementation of Avatica Metrics using Dropwizard 
Metrics.</description>
-
-  <properties>
-    <top.dir>${project.basedir}/..</top.dir>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.calcite.avatica</groupId>
-      <artifactId>avatica-metrics</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.dropwizard.metrics</groupId>
-      <artifactId>metrics-core</artifactId>
-      <!-- Avoid specifying version in dependencyManagement in support of 
other avatica-metrics impls -->
-      <version>${dropwizard-metrics3.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <!-- Parent module has the same plugin and does the work of
-           generating -sources.jar for each project. But without the
-           plugin declared here, IDEs don't know the sources are
-           available. -->
-      <plugin>
-        <artifactId>maven-source-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>attach-sources</id>
-            <phase>verify</phase>
-            <goals>
-              <goal>jar-no-fork</goal>
-              <goal>test-jar-no-fork</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-        <configuration>
-          <excludes>
-            
<exclude>src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounter.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounter.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounter.java
deleted file mode 100644
index 4204ebf..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Counter;
-
-import java.util.Objects;
-
-/**
- * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Counter}.
- */
-public class DropwizardCounter implements 
org.apache.calcite.avatica.metrics.Counter {
-
-  private final Counter counter;
-
-  public DropwizardCounter(Counter counter) {
-    this.counter = Objects.requireNonNull(counter);
-  }
-
-  @Override public void increment() {
-    this.counter.inc();
-  }
-
-  @Override public void increment(long n) {
-    this.counter.inc(n);
-  }
-
-  @Override public void decrement() {
-    this.counter.dec();
-  }
-
-  @Override public void decrement(long n) {
-    this.counter.dec(n);
-  }
-}
-
-// End DropwizardCounter.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGauge.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGauge.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGauge.java
deleted file mode 100644
index 5f4b776..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGauge.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Gauge;
-
-/**
- * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Gauge}.
- *
- * @param <T> The value the gauge returns.
- */
-public class DropwizardGauge<T> implements Gauge<T> {
-
-  private final org.apache.calcite.avatica.metrics.Gauge<T> gauge;
-
-  public DropwizardGauge(org.apache.calcite.avatica.metrics.Gauge<T> gauge) {
-    this.gauge = gauge;
-  }
-
-  @Override public T getValue() {
-    return gauge.getValue();
-  }
-}
-
-// End DropwizardGauge.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogram.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogram.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogram.java
deleted file mode 100644
index 266f130..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogram.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Histogram;
-
-import java.util.Objects;
-
-/**
- * Dropwizard metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Histogram}.
- */
-public class DropwizardHistogram implements 
org.apache.calcite.avatica.metrics.Histogram {
-
-  private final Histogram histogram;
-
-  public DropwizardHistogram(Histogram histogram) {
-    this.histogram = Objects.requireNonNull(histogram);
-  }
-
-  @Override public void update(int value) {
-    histogram.update(value);
-  }
-
-  @Override public void update(long value) {
-    histogram.update(value);
-  }
-}
-
-// End DropwizardHistogram.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeter.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeter.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeter.java
deleted file mode 100644
index ab8fafc..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Meter;
-
-import java.util.Objects;
-
-/**
- * Dropwizard metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Meter}.
- */
-public class DropwizardMeter implements 
org.apache.calcite.avatica.metrics.Meter {
-
-  private final Meter meter;
-
-  public DropwizardMeter(Meter meter) {
-    this.meter = Objects.requireNonNull(meter);
-  }
-
-  @Override public void mark() {
-    this.meter.mark();
-  }
-
-  @Override public void mark(long count) {
-    this.meter.mark(count);
-  }
-}
-
-// End DropwizardMeter.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystem.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystem.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystem.java
deleted file mode 100644
index 6aa71b9..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystem.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import org.apache.calcite.avatica.metrics.Counter;
-import org.apache.calcite.avatica.metrics.Gauge;
-import org.apache.calcite.avatica.metrics.Histogram;
-import org.apache.calcite.avatica.metrics.Meter;
-import org.apache.calcite.avatica.metrics.MetricsSystem;
-import org.apache.calcite.avatica.metrics.Timer;
-
-import com.codahale.metrics.MetricRegistry;
-
-import java.util.Objects;
-
-/**
- * Dropwizard Metrics implementation of {@link MetricsSystem}.
- */
-public class DropwizardMetricsSystem implements MetricsSystem {
-
-  private final MetricRegistry registry;
-
-  public DropwizardMetricsSystem(MetricRegistry registry) {
-    this.registry = Objects.requireNonNull(registry);
-  }
-
-  @Override public Timer getTimer(String name) {
-    return new DropwizardTimer(registry.timer(name));
-  }
-
-  @Override public Histogram getHistogram(String name) {
-    return new DropwizardHistogram(registry.histogram(name));
-  }
-
-  @Override public Meter getMeter(String name) {
-    return new DropwizardMeter(registry.meter(name));
-  }
-
-  @Override public Counter getCounter(String name) {
-    return new DropwizardCounter(registry.counter(name));
-  }
-
-  @Override public <T> void register(String name, Gauge<T> gauge) {
-    registry.register(name, new DropwizardGauge<T>(gauge));
-  }
-}
-
-// End DropwizardMetricsSystem.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemConfiguration.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemConfiguration.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemConfiguration.java
deleted file mode 100644
index f4c9234..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemConfiguration.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import org.apache.calcite.avatica.metrics.MetricsSystemConfiguration;
-
-import com.codahale.metrics.MetricRegistry;
-
-import java.util.Objects;
-
-/**
- * A container which provides a {@link MetricRegistry} to a {@link 
DropwizardMetricsSystem}.
- */
-public class DropwizardMetricsSystemConfiguration implements
-    MetricsSystemConfiguration<MetricRegistry> {
-
-  private final MetricRegistry registry;
-
-  public DropwizardMetricsSystemConfiguration(MetricRegistry registry) {
-    this.registry = Objects.requireNonNull(registry);
-  }
-
-  @Override public MetricRegistry get() {
-    return registry;
-  }
-}
-
-// End DropwizardMetricsSystemConfiguration.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactory.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactory.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactory.java
deleted file mode 100644
index 1480db6..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import org.apache.calcite.avatica.metrics.MetricsSystemConfiguration;
-import org.apache.calcite.avatica.metrics.MetricsSystemFactory;
-
-/**
- * A {@link MetricsSystemFactory} for {@link DropwizardMetricsSystem}.
- */
-public class DropwizardMetricsSystemFactory implements MetricsSystemFactory {
-
-  @Override public DropwizardMetricsSystem 
create(MetricsSystemConfiguration<?> config) {
-    // Verify we got configuration this factory can use
-    if (config instanceof DropwizardMetricsSystemConfiguration) {
-      DropwizardMetricsSystemConfiguration typedConfig =
-          (DropwizardMetricsSystemConfiguration) config;
-
-      return new DropwizardMetricsSystem(typedConfig.get());
-    }
-
-    throw new IllegalStateException("Expected instance of "
-        + DropwizardMetricsSystemConfiguration.class.getName() + " but got "
-        + (null == config ? "null" : config.getClass().getName()));
-  }
-}
-
-// End DropwizardMetricsSystemFactory.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardTimer.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardTimer.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardTimer.java
deleted file mode 100644
index 850f9a6..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardTimer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Timer;
-
-import java.util.Objects;
-
-/**
- * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Timer}.
- */
-public class DropwizardTimer implements 
org.apache.calcite.avatica.metrics.Timer {
-
-  private final Timer timer;
-
-  public DropwizardTimer(Timer timer) {
-    this.timer = Objects.requireNonNull(timer);
-  }
-
-  @Override public DropwizardContext start() {
-    return new DropwizardContext(timer.time());
-  }
-
-  /**
-   * Dropwizard Metrics implementation of {@link 
org.apache.calcite.avatica.metrics.Timer.Context}
-   */
-  public class DropwizardContext implements 
org.apache.calcite.avatica.metrics.Timer.Context {
-    private final com.codahale.metrics.Timer.Context context;
-
-    public DropwizardContext(com.codahale.metrics.Timer.Context context) {
-      this.context = Objects.requireNonNull(context);
-    }
-
-    @Override public void close() {
-      this.context.stop();
-    }
-  }
-}
-
-// End DropwizardTimer.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/package-info.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/package-info.java
 
b/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/package-info.java
deleted file mode 100644
index f88df93..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/java/org/apache/calcite/avatica/metrics/dropwizard3/package-info.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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.
- */
-
-/**
- * Dropwizard-Metrics (v3) implementation of the Avatica Metrics framework.
- */
-@PackageMarker
-package org.apache.calcite.avatica.metrics.dropwizard3;
-
-import org.apache.calcite.avatica.metrics.PackageMarker;
-
-// End package-info.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
 
b/metrics-dropwizardmetrics3/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
deleted file mode 100644
index 25b64a8..0000000
--- 
a/metrics-dropwizardmetrics3/src/main/resources/META-INF/services/org.apache.calcite.avatica.metrics.MetricsSystemFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-org.apache.calcite.avatica.metrics.dropwizard3.DropwizardMetricsSystemFactory
-

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounterTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounterTest.java
 
b/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounterTest.java
deleted file mode 100644
index b037196..0000000
--- 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardCounterTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Counter;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Test class for {@link DropwizardCounter}.
- */
-public class DropwizardCounterTest {
-
-  private Counter counter;
-
-  @Before public void setup() {
-    this.counter = new Counter();
-  }
-
-  @Test public void testCounting() {
-    DropwizardCounter dwCounter = new DropwizardCounter(counter);
-
-    dwCounter.increment();
-    assertEquals(1L, counter.getCount());
-    dwCounter.increment();
-    assertEquals(2L, counter.getCount());
-    dwCounter.increment(2L);
-    assertEquals(4L, counter.getCount());
-    dwCounter.increment(-1L);
-    assertEquals(3L, counter.getCount());
-
-    dwCounter.decrement();
-    assertEquals(2L, counter.getCount());
-    dwCounter.decrement();
-    assertEquals(1L, counter.getCount());
-    dwCounter.decrement(4L);
-    assertEquals(-3L, counter.getCount());
-    dwCounter.decrement(-3L);
-    assertEquals(0L, counter.getCount());
-  }
-
-}
-
-// End DropwizardCounterTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGaugeTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGaugeTest.java
 
b/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGaugeTest.java
deleted file mode 100644
index ed78a58..0000000
--- 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardGaugeTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import org.apache.calcite.avatica.metrics.Gauge;
-
-import org.junit.Test;
-
-import java.util.concurrent.atomic.AtomicLong;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Test class for {@link DropwizardGauge}.
- */
-public class DropwizardGaugeTest {
-
-  @Test public void test() {
-    SimpleGauge gauge = new SimpleGauge();
-    DropwizardGauge<Long> dwGauge = new DropwizardGauge<>(gauge);
-
-    assertEquals(gauge.getValue(), dwGauge.getValue());
-
-    gauge.setValue(1000L);
-
-    assertEquals(gauge.getValue(), dwGauge.getValue());
-  }
-
-  /**
-   * Gauge implementation with a setter.
-   */
-  private static class SimpleGauge implements Gauge<Long> {
-
-    private final AtomicLong value = new AtomicLong(0L);
-
-    @Override public Long getValue() {
-      return this.value.get();
-    }
-
-    public void setValue(long value) {
-      this.value.set(value);
-    }
-  }
-}
-
-// End DropwizardGaugeTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogramTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogramTest.java
 
b/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogramTest.java
deleted file mode 100644
index 25ec5c0..0000000
--- 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardHistogramTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Histogram;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-/**
- * Test class for {@link DropwizardHistogram}.
- */
-public class DropwizardHistogramTest {
-
-  private Histogram histogram;
-
-  @Before public void setup() {
-    this.histogram = Mockito.mock(Histogram.class);
-  }
-
-  @Test public void test() {
-    DropwizardHistogram dwHistogram = new DropwizardHistogram(histogram);
-
-    dwHistogram.update(10);
-
-    dwHistogram.update(100L);
-
-    Mockito.verify(histogram).update(10);
-    Mockito.verify(histogram).update(100L);
-  }
-
-}
-
-// End DropwizardHistogramTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeterTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeterTest.java
 
b/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeterTest.java
deleted file mode 100644
index c76c7e0..0000000
--- 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMeterTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import com.codahale.metrics.Meter;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-/**
- * Test class for {@link DropwizardMeter}.
- */
-public class DropwizardMeterTest {
-
-  private Meter meter;
-
-  @Before public void setup() {
-    this.meter = Mockito.mock(Meter.class);
-  }
-
-  @Test public void test() {
-    DropwizardMeter dwMeter = new DropwizardMeter(this.meter);
-
-    dwMeter.mark();
-    dwMeter.mark(10L);
-    dwMeter.mark();
-    dwMeter.mark();
-
-    Mockito.verify(meter, Mockito.times(3)).mark();
-    Mockito.verify(meter).mark(10L);
-  }
-
-}
-
-// End DropwizardMeterTest.java

http://git-wip-us.apache.org/repos/asf/calcite-avatica/blob/6afbfd52/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactoryTest.java
 
b/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactoryTest.java
deleted file mode 100644
index 332c6e0..0000000
--- 
a/metrics-dropwizardmetrics3/src/test/java/org/apache/calcite/avatica/metrics/dropwizard3/DropwizardMetricsSystemFactoryTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you 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 org.apache.calcite.avatica.metrics.dropwizard3;
-
-import org.apache.calcite.avatica.metrics.noop.NoopMetricsSystemConfiguration;
-
-import com.codahale.metrics.MetricRegistry;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * Test class for {@link DropwizardMetricsSystemFactory}.
- */
-public class DropwizardMetricsSystemFactoryTest {
-
-  private DropwizardMetricsSystemFactory factory;
-
-  @Before public void setup() {
-    factory = new DropwizardMetricsSystemFactory();
-  }
-
-  @Test(expected = IllegalStateException.class) public void 
testNullConfigurationFails() {
-    factory.create(null);
-  }
-
-  @Test(expected = IllegalStateException.class) public void 
testUnhandledConfigurationType() {
-    factory.create(NoopMetricsSystemConfiguration.getInstance());
-  }
-
-  @Test public void testHandledConfigurationType() {
-    DropwizardMetricsSystem metrics =
-        factory.create(new DropwizardMetricsSystemConfiguration(new 
MetricRegistry()));
-    assertNotNull("Expected DropwizardMetricsSystem to be non-null", metrics);
-  }
-}
-
-// End DropwizardMetricsSystemFactoryTest.java

Reply via email to