1616
1717package org .springframework .boot .actuate .autoconfigure .metrics .jersey ;
1818
19- import java .lang .annotation .Annotation ;
20- import java .lang .reflect .AnnotatedElement ;
21-
22- import io .micrometer .core .instrument .MeterRegistry ;
23- import io .micrometer .core .instrument .Tag ;
2419import io .micrometer .core .instrument .config .MeterFilter ;
25- import org .glassfish .jersey .micrometer .server .AnnotationFinder ;
26- import org .glassfish .jersey .micrometer .server .DefaultJerseyTagsProvider ;
27- import org .glassfish .jersey .micrometer .server .JerseyTagsProvider ;
28- import org .glassfish .jersey .micrometer .server .MetricsApplicationEventListener ;
20+ import io .micrometer .observation .ObservationRegistry ;
21+ import org .glassfish .jersey .micrometer .server .JerseyObservationConvention ;
22+ import org .glassfish .jersey .micrometer .server .ObservationApplicationEventListener ;
2923import org .glassfish .jersey .server .ResourceConfig ;
30- import org .glassfish .jersey .server .monitoring .RequestEvent ;
3124
3225import org .springframework .beans .factory .ObjectProvider ;
33- import org .springframework .boot .actuate .autoconfigure .metrics .MetricsAutoConfiguration ;
3426import org .springframework .boot .actuate .autoconfigure .metrics .MetricsProperties ;
3527import org .springframework .boot .actuate .autoconfigure .metrics .OnlyOnceLoggingDenyMeterFilter ;
36- import org .springframework .boot .actuate .autoconfigure .metrics . export . simple . SimpleMetricsExportAutoConfiguration ;
28+ import org .springframework .boot .actuate .autoconfigure .observation . ObservationAutoConfiguration ;
3729import org .springframework .boot .actuate .autoconfigure .observation .ObservationProperties ;
3830import org .springframework .boot .autoconfigure .AutoConfiguration ;
3931import org .springframework .boot .autoconfigure .EnableAutoConfiguration ;
4032import org .springframework .boot .autoconfigure .condition .ConditionalOnBean ;
4133import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
42- import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
4334import org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication ;
4435import org .springframework .boot .autoconfigure .jersey .ResourceConfigCustomizer ;
4536import org .springframework .boot .context .properties .EnableConfigurationProperties ;
4637import org .springframework .context .annotation .Bean ;
47- import org .springframework .core .annotation .AnnotationUtils ;
4838import org .springframework .core .annotation .Order ;
4939
5040/**
5343 * @author Michael Weirauch
5444 * @author Michael Simons
5545 * @author Andy Wilkinson
46+ * @author Moritz Halbritter
5647 * @since 2.1.0
5748 */
58- @ AutoConfiguration (after = { MetricsAutoConfiguration . class , SimpleMetricsExportAutoConfiguration .class })
49+ @ AutoConfiguration (after = { ObservationAutoConfiguration .class })
5950@ ConditionalOnWebApplication (type = ConditionalOnWebApplication .Type .SERVLET )
60- @ ConditionalOnClass ({ ResourceConfig .class , MetricsApplicationEventListener .class })
61- @ ConditionalOnBean ({ MeterRegistry .class , ResourceConfig .class })
62- @ EnableConfigurationProperties (MetricsProperties .class )
51+ @ ConditionalOnClass ({ ResourceConfig .class , ObservationApplicationEventListener .class })
52+ @ ConditionalOnBean ({ ResourceConfig .class , ObservationRegistry .class })
53+ @ EnableConfigurationProperties ({ MetricsProperties .class , ObservationProperties . class } )
6354public class JerseyServerMetricsAutoConfiguration {
6455
6556 private final ObservationProperties observationProperties ;
@@ -69,22 +60,11 @@ public JerseyServerMetricsAutoConfiguration(ObservationProperties observationPro
6960 }
7061
7162 @ Bean
72- @ SuppressWarnings ("deprecation" )
73- @ ConditionalOnMissingBean ({ JerseyTagsProvider .class ,
74- io .micrometer .core .instrument .binder .jersey .server .JerseyTagsProvider .class })
75- public DefaultJerseyTagsProvider jerseyTagsProvider () {
76- return new DefaultJerseyTagsProvider ();
77- }
78-
79- @ Bean
80- @ SuppressWarnings ("deprecation" )
81- public ResourceConfigCustomizer jerseyServerMetricsResourceConfigCustomizer (MeterRegistry meterRegistry ,
82- ObjectProvider <JerseyTagsProvider > tagsProvider ,
83- ObjectProvider <io .micrometer .core .instrument .binder .jersey .server .JerseyTagsProvider > micrometerTagsProvider ) {
63+ ResourceConfigCustomizer jerseyServerObservationResourceConfigCustomizer (ObservationRegistry observationRegistry ,
64+ ObjectProvider <JerseyObservationConvention > jerseyObservationConvention ) {
8465 String metricName = this .observationProperties .getHttp ().getServer ().getRequests ().getName ();
85- return (config ) -> config .register (new MetricsApplicationEventListener (meterRegistry ,
86- tagsProvider .getIfAvailable (() -> new JerseyTagsProviderAdapter (micrometerTagsProvider .getObject ())),
87- metricName , true , new AnnotationUtilsAnnotationFinder ()));
66+ return (config ) -> config .register (new ObservationApplicationEventListener (observationRegistry , metricName ,
67+ jerseyObservationConvention .getIfAvailable ()));
8868 }
8969
9070 @ Bean
@@ -97,38 +77,4 @@ public MeterFilter jerseyMetricsUriTagFilter(MetricsProperties metricsProperties
9777 metricsProperties .getWeb ().getServer ().getMaxUriTags (), filter );
9878 }
9979
100- /**
101- * An {@link AnnotationFinder} that uses {@link AnnotationUtils}.
102- */
103- private static final class AnnotationUtilsAnnotationFinder implements AnnotationFinder {
104-
105- @ Override
106- public <A extends Annotation > A findAnnotation (AnnotatedElement annotatedElement , Class <A > annotationType ) {
107- return AnnotationUtils .findAnnotation (annotatedElement , annotationType );
108- }
109-
110- }
111-
112- @ SuppressWarnings ("deprecation" )
113- static final class JerseyTagsProviderAdapter implements JerseyTagsProvider {
114-
115- private final io .micrometer .core .instrument .binder .jersey .server .JerseyTagsProvider delegate ;
116-
117- private JerseyTagsProviderAdapter (
118- io .micrometer .core .instrument .binder .jersey .server .JerseyTagsProvider delegate ) {
119- this .delegate = delegate ;
120- }
121-
122- @ Override
123- public Iterable <Tag > httpRequestTags (RequestEvent event ) {
124- return this .delegate .httpRequestTags (event );
125- }
126-
127- @ Override
128- public Iterable <Tag > httpLongRequestTags (RequestEvent event ) {
129- return this .delegate .httpLongRequestTags (event );
130- }
131-
132- }
133-
13480}
0 commit comments