This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.commons.metrics-0.0.2 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-metrics.git
commit 97878b971e370a1990e55de4c9b3d3c7893c2d36 Author: Chetan Mehrotra <[email protected]> AuthorDate: Thu Jan 7 11:31:58 2016 +0000 SLING-4080 - API to capture/measure application-level metrics Allow adapting MetricService to MetricRegistry git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/metrics@1723518 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/sling/commons/metrics/MetricsService.java | 16 ++++++++++++++++ .../commons/metrics/internal/MetricsServiceImpl.java | 9 +++++++++ .../commons/metrics/internal/MetricServiceTest.java | 2 ++ 3 files changed, 27 insertions(+) diff --git a/src/main/java/org/apache/sling/commons/metrics/MetricsService.java b/src/main/java/org/apache/sling/commons/metrics/MetricsService.java index 7848861..56e87e6 100644 --- a/src/main/java/org/apache/sling/commons/metrics/MetricsService.java +++ b/src/main/java/org/apache/sling/commons/metrics/MetricsService.java @@ -50,6 +50,11 @@ public interface MetricsService { public Meter meter(String name) { return NoopMetric.INSTANCE; } + + @Override + public <A> A adaptTo(Class<A> type) { + return null; + } }; /** @@ -87,4 +92,15 @@ public interface MetricsService { * @return a new {@link Meter} */ Meter meter(String name); + + /** + * Adapts the service to the specified type. This can be used to + * get instance to underlying {@code MetricRegistry} + * + * @param <A> The type to which this metric is to be adapted. + * @param type Class object for the type to which this metric is to be adapted. + * @return The object, of the specified type, to which this metric has been adapted + * or null if this metric cannot be adapted to the specified type. + */ + <A> A adaptTo(Class<A> type); } diff --git a/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java b/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java index 729d555..a0e0520 100644 --- a/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java +++ b/src/main/java/org/apache/sling/commons/metrics/internal/MetricsServiceImpl.java @@ -115,6 +115,15 @@ public class MetricsServiceImpl implements MetricsService { } @SuppressWarnings("unchecked") + @Override + public <A> A adaptTo(Class<A> type) { + if (type == MetricRegistry.class){ + return (A) registry; + } + return null; + } + + @SuppressWarnings("unchecked") private <T extends Metric> T getOrAdd(String name, MetricBuilder<T> builder) { final Metric metric = metrics.get(name); if (builder.isInstance(metric)) { diff --git a/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java b/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java index 7f1dec8..a028abf 100644 --- a/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java +++ b/src/test/java/org/apache/sling/commons/metrics/internal/MetricServiceTest.java @@ -59,6 +59,8 @@ public class MetricServiceTest { assertNotNull(context.getService(MetricRegistry.class)); assertNotNull(context.getService(MetricsService.class)); + assertNotNull(service.adaptTo(MetricRegistry.class)); + MockOsgi.deactivate(service); assertNull(context.getService(MetricRegistry.class)); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
