From d0ee3da70948c570776931be0345bd9e391b0054 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 28 Apr 2023 14:13:59 +0300 Subject: [PATCH] Jax-Ws annotation instrumentation should not apply to static methods (#8391) --- .../jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java | 3 +++ .../jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java | 3 +++ .../jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java | 3 +++ .../jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java | 3 +++ 4 files changed, 12 insertions(+) diff --git a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java index 8e1097055a..00e75dd3f0 100644 --- a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java @@ -12,8 +12,10 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v1_0.JaxrsSinglet import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.isStatic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; +import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; @@ -47,6 +49,7 @@ public class JaxrsAnnotationsInstrumentation implements TypeInstrumentation { public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isMethod() + .and(not(isStatic())) .and( hasSuperMethod( isAnnotatedWith( diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java index 34d28744fb..87f957abed 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java @@ -11,8 +11,10 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsAnnotat import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.isStatic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; +import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; @@ -48,6 +50,7 @@ public class JaxrsAnnotationsInstrumentation implements TypeInstrumentation { public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isMethod() + .and(not(isStatic())) .and( hasSuperMethod( isAnnotatedWith( diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java index c7820ba5f7..e27e9d6168 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java @@ -11,8 +11,10 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v3_0.JaxrsAnnotat import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.isStatic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; +import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; @@ -48,6 +50,7 @@ public class JaxrsAnnotationsInstrumentation implements TypeInstrumentation { public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isMethod() + .and(not(isStatic())) .and( hasSuperMethod( isAnnotatedWith( diff --git a/instrumentation/jaxws/jaxws-jws-api-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java b/instrumentation/jaxws/jaxws-jws-api-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java index 7ba39e0771..7b451e33c5 100644 --- a/instrumentation/jaxws/jaxws-jws-api-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java +++ b/instrumentation/jaxws/jaxws-jws-api-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java @@ -15,7 +15,9 @@ import static net.bytebuddy.matcher.ElementMatchers.inheritsAnnotation; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; +import static net.bytebuddy.matcher.ElementMatchers.isStatic; import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; @@ -50,6 +52,7 @@ public class JwsAnnotationsInstrumentation implements TypeInstrumentation { transformer.applyAdviceToMethod( isMethod() .and(isPublic()) + .and(not(isStatic())) .and( hasSuperMethod( methodIsDeclaredByType(inheritsAnnotation(named(JWS_WEB_SERVICE_ANNOTATION))))),