From 7d049670aa56b44587fea7276f1896d0a2cd3ac1 Mon Sep 17 00:00:00 2001 From: Tim Quinn Date: Mon, 8 Jan 2024 09:27:21 -0600 Subject: [PATCH 1/2] Allow programmatic look-up of MetricRegistry via CDI Signed-off-by: Tim Quinn --- .../microprofile/metrics/RegistryProducer.java | 6 ++++-- .../io/helidon/microprofile/metrics/ProducerTest.java | 11 ++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java index 83a04dbe97c..ba417b2f2cc 100644 --- a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java +++ b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2018, 2023 Oracle and/or its affiliates. + * Copyright (c) 2018, 2024 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.inject.Default; import jakarta.enterprise.inject.Produces; +import jakarta.enterprise.inject.spi.Annotated; import jakarta.enterprise.inject.spi.InjectionPoint; import org.eclipse.microprofile.metrics.MetricRegistry; import org.eclipse.microprofile.metrics.MetricRegistry.Type; @@ -40,7 +41,8 @@ private RegistryProducer() { @Produces @Default public static org.eclipse.microprofile.metrics.MetricRegistry getScopedRegistry(InjectionPoint injectionPoint) { - RegistryScope scope = injectionPoint.getAnnotated().getAnnotation(RegistryScope.class); + Annotated annotated = injectionPoint == null ? null : injectionPoint.getAnnotated(); + RegistryScope scope = annotated == null ? null : annotated.getAnnotation(RegistryScope.class); return scope == null ? getApplicationRegistry() : RegistryFactory.getInstance().getRegistry(scope.scope()); diff --git a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java index 092c10e65c2..1912384e4ee 100644 --- a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java +++ b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2023 Oracle and/or its affiliates. + * Copyright (c) 2018, 2024 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package io.helidon.microprofile.metrics; +import jakarta.enterprise.inject.spi.CDI; import jakarta.inject.Inject; import org.eclipse.microprofile.metrics.Counter; import org.eclipse.microprofile.metrics.MetricID; @@ -89,4 +90,12 @@ void testRegistryFactoryProducer() { MetricRegistry customRegistry = registryFactory.getRegistry("myCustomScope"); assertThat("Custom scoped MetricRegistry", customRegistry, notNullValue()); } + + @Test + void testDirectMetricRegistryLookup() { + MetricRegistry appRegistry = CDI.current().select(MetricRegistry.class).get(); + assertThat("Directly-looked-up app registry", appRegistry, notNullValue()); + + + } } From a2f502f29cc9cdf19bc3109c578d601c71b0f85d Mon Sep 17 00:00:00 2001 From: Tim Quinn Date: Mon, 8 Jan 2024 12:50:59 -0600 Subject: [PATCH 2/2] Review comments --- .../io/helidon/microprofile/metrics/RegistryProducer.java | 4 ++-- .../java/io/helidon/microprofile/metrics/ProducerTest.java | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java index ba417b2f2cc..b69c8f19f21 100644 --- a/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java +++ b/microprofile/metrics/src/main/java/io/helidon/microprofile/metrics/RegistryProducer.java @@ -41,8 +41,8 @@ private RegistryProducer() { @Produces @Default public static org.eclipse.microprofile.metrics.MetricRegistry getScopedRegistry(InjectionPoint injectionPoint) { - Annotated annotated = injectionPoint == null ? null : injectionPoint.getAnnotated(); - RegistryScope scope = annotated == null ? null : annotated.getAnnotation(RegistryScope.class); + Annotated annotated = (injectionPoint == null) ? null : injectionPoint.getAnnotated(); + RegistryScope scope = (annotated == null) ? null : annotated.getAnnotation(RegistryScope.class); return scope == null ? getApplicationRegistry() : RegistryFactory.getInstance().getRegistry(scope.scope()); diff --git a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java index 1912384e4ee..78bf0630327 100644 --- a/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java +++ b/microprofile/metrics/src/test/java/io/helidon/microprofile/metrics/ProducerTest.java @@ -95,7 +95,5 @@ void testRegistryFactoryProducer() { void testDirectMetricRegistryLookup() { MetricRegistry appRegistry = CDI.current().select(MetricRegistry.class).get(); assertThat("Directly-looked-up app registry", appRegistry, notNullValue()); - - } }