16
16
17
17
package org .springframework .boot .actuate .autoconfigure .metrics .jersey ;
18
18
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 ;
24
19
import 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 ;
29
23
import org .glassfish .jersey .server .ResourceConfig ;
30
- import org .glassfish .jersey .server .monitoring .RequestEvent ;
31
24
32
25
import org .springframework .beans .factory .ObjectProvider ;
33
- import org .springframework .boot .actuate .autoconfigure .metrics .MetricsAutoConfiguration ;
34
26
import org .springframework .boot .actuate .autoconfigure .metrics .MetricsProperties ;
35
27
import 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 ;
37
29
import org .springframework .boot .actuate .autoconfigure .observation .ObservationProperties ;
38
30
import org .springframework .boot .autoconfigure .AutoConfiguration ;
39
31
import org .springframework .boot .autoconfigure .EnableAutoConfiguration ;
40
32
import org .springframework .boot .autoconfigure .condition .ConditionalOnBean ;
41
33
import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
42
- import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
43
34
import org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication ;
44
35
import org .springframework .boot .autoconfigure .jersey .ResourceConfigCustomizer ;
45
36
import org .springframework .boot .context .properties .EnableConfigurationProperties ;
46
37
import org .springframework .context .annotation .Bean ;
47
- import org .springframework .core .annotation .AnnotationUtils ;
48
38
import org .springframework .core .annotation .Order ;
49
39
50
40
/**
53
43
* @author Michael Weirauch
54
44
* @author Michael Simons
55
45
* @author Andy Wilkinson
46
+ * @author Moritz Halbritter
56
47
* @since 2.1.0
57
48
*/
58
- @ AutoConfiguration (after = { MetricsAutoConfiguration . class , SimpleMetricsExportAutoConfiguration .class })
49
+ @ AutoConfiguration (after = { ObservationAutoConfiguration .class })
59
50
@ 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 } )
63
54
public class JerseyServerMetricsAutoConfiguration {
64
55
65
56
private final ObservationProperties observationProperties ;
@@ -69,22 +60,11 @@ public JerseyServerMetricsAutoConfiguration(ObservationProperties observationPro
69
60
}
70
61
71
62
@ 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 ) {
84
65
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 ()));
88
68
}
89
69
90
70
@ Bean
@@ -97,38 +77,4 @@ public MeterFilter jerseyMetricsUriTagFilter(MetricsProperties metricsProperties
97
77
metricsProperties .getWeb ().getServer ().getMaxUriTags (), filter );
98
78
}
99
79
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
-
134
80
}
0 commit comments