diff --git a/docs/contributing/writing-instrumentation-module.md b/docs/contributing/writing-instrumentation-module.md index 47fec7497d45..5547d9cd3b07 100644 --- a/docs/contributing/writing-instrumentation-module.md +++ b/docs/contributing/writing-instrumentation-module.md @@ -166,15 +166,24 @@ public ElementMatcher typeMatcher() { } ``` -### `transformers()` -The last `TypeInstrumentation` method describes which methods should be instrumented with which -advice classes. It is suggested to make the method matchers as strict as possible - the type -instrumentation should only instrument the code that it's supposed to, not more. +### `transform(TypeTransformer)` + +The last `TypeInstrumentation` method describes what transformations should be applied to the +matched type. Type `TypeTransformer` interface (implemented internally by the agent) defines a set +of available transformations that you can apply: + +* Calling `applyAdviceToMethod(ElementMatcher, String)` allows you to + apply an advice class (the second parameter) to all matching methods (the first parameter). It is + suggested to make the method matchers as strict as possible - the type instrumentation should + only instrument the code that it's supposed to, not more. +* `applyTransformer(AgentBuilder.Transformer)` allows you to inject an arbitrary ByteBuddy + transformer. This is an advanced, low-level option that will not be subjected to muzzle safety + checks and helper class detection - use it responsibly. ```java @Override -public Map, String> transformers() { - return Collections.singletonMap( +public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isPublic() .and(named("someMethod")) .and(takesArguments(2)) @@ -188,8 +197,8 @@ For matching built-in Java types you can use the `takesArgument(0, String.class) originating from the instrumented library need to be matched using the `named()` matcher. Implementations of `TypeInstrumentation` will often implement advice classes as static inner -classes. These classes are referred to by name in the mappings from method descriptor to advice -class, typically in the `transform()` method. +classes. These classes are referred to by name when applying advice classes to methods in +the `transform()` method. You probably noticed in the example above that the advice class is being referenced in a slightly peculiar way: diff --git a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaActorCellInstrumentation.java b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaActorCellInstrumentation.java index e8e368f65aa0..f868817711c2 100644 --- a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaActorCellInstrumentation.java +++ b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaActorCellInstrumentation.java @@ -11,14 +11,12 @@ import akka.dispatch.Envelope; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.AdviceUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("invoke").and(takesArgument(0, named("akka.dispatch.Envelope"))), AkkaActorCellInstrumentation.class.getName() + "$InvokeStateAdvice"); } diff --git a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java index bad721dae17a..c63dc5ffdcd2 100644 --- a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java +++ b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java @@ -5,20 +5,18 @@ package io.opentelemetry.javaagent.instrumentation.akkaactor; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import akka.dispatch.Envelope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.concurrent.ExecutorInstrumentationUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("dispatch") .and(takesArgument(0, named("akka.actor.ActorCell"))) .and(takesArgument(1, named("akka.dispatch.Envelope"))), diff --git a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java index 1dd1a81da420..c0771bcd54a2 100644 --- a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java +++ b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java @@ -11,15 +11,13 @@ import akka.dispatch.forkjoin.ForkJoinTask; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.concurrent.ExecutorInstrumentationUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -32,21 +30,19 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("execute") .and(takesArgument(0, named(AkkaForkJoinTaskInstrumentation.TASK_CLASS_NAME))), AkkaForkJoinPoolInstrumentation.class.getName() + "$SetAkkaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("submit") .and(takesArgument(0, named(AkkaForkJoinTaskInstrumentation.TASK_CLASS_NAME))), AkkaForkJoinPoolInstrumentation.class.getName() + "$SetAkkaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( nameMatches("invoke") .and(takesArgument(0, named(AkkaForkJoinTaskInstrumentation.TASK_CLASS_NAME))), AkkaForkJoinPoolInstrumentation.class.getName() + "$SetAkkaForkJoinStateAdvice"); - return transformers; } public static class SetAkkaForkJoinStateAdvice { diff --git a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinTaskInstrumentation.java b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinTaskInstrumentation.java index 73d184026310..f2a863786c2b 100644 --- a/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinTaskInstrumentation.java +++ b/instrumentation/akka-actor-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinTaskInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -17,14 +16,13 @@ import akka.dispatch.forkjoin.ForkJoinTask; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.AdviceUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import java.util.concurrent.Callable; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -48,8 +46,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("exec").and(takesArguments(0)).and(not(isAbstract())), AkkaForkJoinTaskInstrumentation.class.getName() + "$ForkJoinTaskAdvice"); } diff --git a/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpClientInstrumentationModule.java b/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpClientInstrumentationModule.java index 1a606f2ef27f..bc5c310c8ceb 100644 --- a/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpClientInstrumentationModule.java +++ b/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpClientInstrumentationModule.java @@ -20,12 +20,10 @@ import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import scala.concurrent.Future; @@ -50,19 +48,17 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); + public void transform(TypeTransformer transformer) { // This is mainly for compatibility with 10.0 - transformers.put( + transformer.applyAdviceToMethod( named("singleRequest") .and(takesArgument(0, named("akka.http.scaladsl.model.HttpRequest"))), AkkaHttpClientInstrumentationModule.class.getName() + "$SingleRequestAdvice"); // This is for 10.1+ - transformers.put( + transformer.applyAdviceToMethod( named("singleRequestImpl") .and(takesArgument(0, named("akka.http.scaladsl.model.HttpRequest"))), AkkaHttpClientInstrumentationModule.class.getName() + "$SingleRequestAdvice"); - return transformers; } } diff --git a/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerInstrumentationModule.java b/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerInstrumentationModule.java index e31c707635ae..a52e5d51c2ea 100644 --- a/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerInstrumentationModule.java +++ b/instrumentation/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerInstrumentationModule.java @@ -18,11 +18,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import scala.Function1; @@ -48,21 +46,19 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // Instrumenting akka-streams bindAndHandle api was previously attempted. // This proved difficult as there was no clean way to close the async scope // in the graph logic after the user's request handler completes. // // Instead, we're instrumenting the bindAndHandle function helpers by // wrapping the scala functions with our own handlers. - Map, String> transformers = new HashMap<>(); - transformers.put( + transformer.applyAdviceToMethod( named("bindAndHandleSync").and(takesArgument(0, named("scala.Function1"))), AkkaHttpServerInstrumentationModule.class.getName() + "$AkkaHttpSyncAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("bindAndHandleAsync").and(takesArgument(0, named("scala.Function1"))), AkkaHttpServerInstrumentationModule.class.getName() + "$AkkaHttpAsyncAdvice"); - return transformers; } } diff --git a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/ApacheCamelInstrumentationModule.java b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/ApacheCamelInstrumentationModule.java index 9f36ce920993..59f408505bc0 100644 --- a/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/ApacheCamelInstrumentationModule.java +++ b/instrumentation/apache-camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/ApacheCamelInstrumentationModule.java @@ -15,11 +15,9 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.camel.CamelContext; @@ -53,8 +51,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("start").and(isPublic()).and(takesArguments(0)), ApacheCamelInstrumentationModule.class.getName() + "$ContextAdvice"); } diff --git a/instrumentation/apache-dubbo/apache-dubbo-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachedubbo/v2_7/DubboInstrumentationModule.java b/instrumentation/apache-dubbo/apache-dubbo-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachedubbo/v2_7/DubboInstrumentationModule.java index 85b49b7ab12e..29cf1be57968 100644 --- a/instrumentation/apache-dubbo/apache-dubbo-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachedubbo/v2_7/DubboInstrumentationModule.java +++ b/instrumentation/apache-dubbo/apache-dubbo-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachedubbo/v2_7/DubboInstrumentationModule.java @@ -11,10 +11,9 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Collections; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -49,9 +48,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // Nothing to transform, this type instrumentation is only used for injecting resources. - return Collections.emptyMap(); } } } diff --git a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java index 79c7867438b0..09f178fe608a 100644 --- a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java +++ b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientTracer.tracer; import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -19,10 +18,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.io.IOException; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.http.HttpException; @@ -49,8 +47,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(takesArguments(4)) diff --git a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientInstrumentationModule.java b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientInstrumentationModule.java index d39bc791b797..4f5e19142acf 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientInstrumentationModule.java +++ b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientInstrumentationModule.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.instrumentation.apachehttpclient.v2_0.ApacheHttpClientInstrumenters.instrumenter; import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -21,10 +20,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.commons.httpclient.HttpMethod; @@ -53,8 +51,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("executeMethod")) .and(takesArguments(3)) diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientInstrumentationModule.java b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientInstrumentationModule.java index 713d1205a617..69238f9bd7ea 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientInstrumentationModule.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientInstrumentationModule.java @@ -22,11 +22,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.http.HttpHost; @@ -58,14 +56,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); + public void transform(TypeTransformer transformer) { // There are 8 execute(...) methods. Depending on the version, they may or may not delegate // to each other. Thus, all methods need to be instrumented. Because of argument position and // type, some methods can share the same advice class. The call depth tracking ensures only 1 // span is created - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -73,7 +70,7 @@ public Map, String> transfor .and(takesArgument(0, named("org.apache.http.client.methods.HttpUriRequest"))), ApacheHttpClientInstrumentationModule.class.getName() + "$UriRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -82,7 +79,7 @@ public Map, String> transfor .and(takesArgument(1, named("org.apache.http.protocol.HttpContext"))), ApacheHttpClientInstrumentationModule.class.getName() + "$UriRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -91,7 +88,7 @@ public Map, String> transfor .and(takesArgument(1, named("org.apache.http.client.ResponseHandler"))), ApacheHttpClientInstrumentationModule.class.getName() + "$UriRequestWithHandlerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -101,7 +98,7 @@ public Map, String> transfor .and(takesArgument(2, named("org.apache.http.protocol.HttpContext"))), ApacheHttpClientInstrumentationModule.class.getName() + "$UriRequestWithHandlerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -110,7 +107,7 @@ public Map, String> transfor .and(takesArgument(1, named("org.apache.http.HttpRequest"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -120,7 +117,7 @@ public Map, String> transfor .and(takesArgument(2, named("org.apache.http.protocol.HttpContext"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -130,7 +127,7 @@ public Map, String> transfor .and(takesArgument(2, named("org.apache.http.client.ResponseHandler"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHandlerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -140,8 +137,6 @@ public Map, String> transfor .and(takesArgument(2, named("org.apache.http.client.ResponseHandler"))) .and(takesArgument(3, named("org.apache.http.protocol.HttpContext"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHandlerAdvice"); - - return transformers; } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientInstrumentationModule.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientInstrumentationModule.java index b8c4faeec087..65885412d430 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientInstrumentationModule.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientInstrumentationModule.java @@ -22,11 +22,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.hc.core5.http.ClassicHttpRequest; @@ -57,13 +55,12 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); + public void transform(TypeTransformer transformer) { // There are 8 execute(...) methods. Depending on the version, they may or may not delegate // to each other. Thus, all methods need to be instrumented. Because of argument position and // type, some methods can share the same advice class. The call depth tracking ensures only 1 // span is created - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -71,7 +68,7 @@ public Map, String> transfor .and(takesArgument(0, named("org.apache.hc.core5.http.ClassicHttpRequest"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -80,7 +77,7 @@ public Map, String> transfor .and(takesArgument(1, named("org.apache.hc.core5.http.protocol.HttpContext"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -89,7 +86,7 @@ public Map, String> transfor .and(takesArgument(1, named("org.apache.hc.core5.http.ClassicHttpRequest"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHostAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -99,7 +96,7 @@ public Map, String> transfor .and(takesArgument(2, named("org.apache.hc.core5.http.protocol.HttpContext"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHostAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -109,7 +106,7 @@ public Map, String> transfor takesArgument(1, named("org.apache.hc.core5.http.io.HttpClientResponseHandler"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHandlerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -121,7 +118,7 @@ public Map, String> transfor ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithContextAndHandlerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -133,7 +130,7 @@ public Map, String> transfor ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHostAndHandlerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(not(isAbstract())) @@ -145,8 +142,6 @@ public Map, String> transfor takesArgument(3, named("org.apache.hc.core5.http.io.HttpClientResponseHandler"))), ApacheHttpClientInstrumentationModule.class.getName() + "$RequestWithHostAndContextAndHandlerAdvice"); - - return transformers; } } diff --git a/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaServerBuilderInstrumentation.java b/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaServerBuilderInstrumentation.java index 26f509e938de..578fc44adc2a 100644 --- a/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaServerBuilderInstrumentation.java +++ b/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaServerBuilderInstrumentation.java @@ -11,10 +11,8 @@ import com.linecorp.armeria.server.ServerBuilder; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -26,8 +24,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")), ArmeriaServerBuilderInstrumentation.class.getName() + "$BuildAdvice"); } diff --git a/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaWebClientBuilderInstrumentation.java b/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaWebClientBuilderInstrumentation.java index 9f5f4eff59e6..808c31fc218a 100644 --- a/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaWebClientBuilderInstrumentation.java +++ b/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaWebClientBuilderInstrumentation.java @@ -12,11 +12,9 @@ import com.linecorp.armeria.client.WebClientBuilder; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.function.Function; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -28,15 +26,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("decorator").and(takesArgument(0, Function.class))), ArmeriaWebClientBuilderInstrumentation.class.getName() + "$SuppressDecoratorAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")), ArmeriaWebClientBuilderInstrumentation.class.getName() + "$BuildAdvice"); - return transformers; } // Intercept calls from app to register decorator and suppress them to avoid registering diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java index df650cb30bb2..0c8d5e8d3bf3 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java @@ -5,14 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -24,8 +22,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("executeRequest") .and(takesArgument(0, named("com.ning.http.client.Request"))) .and(takesArgument(1, named("com.ning.http.client.AsyncHandler"))) diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java index 88603d21e6e4..1db9709e3e12 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java @@ -12,9 +12,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,16 +29,14 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("onCompleted") .and(takesArgument(0, named("com.ning.http.client.Response"))) .and(isPublic()), ResponseInstrumentation.class.getPackage().getName() + ".ResponseAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("onThrowable").and(takesArgument(0, Throwable.class)).and(isPublic()), ResponseInstrumentation.class.getPackage().getName() + ".ResponseFailureAdvice"); - return transformers; } } diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java index 095bf4b07fe3..fe790eb26ef5 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java @@ -6,14 +6,12 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -25,8 +23,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("executeRequest") .and(takesArgument(0, named("org.asynchttpclient.Request"))) .and(takesArgument(1, named("org.asynchttpclient.AsyncHandler"))) diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestSenderInstrumentation.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestSenderInstrumentation.java index 1015b129ccaa..c22681233ca0 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestSenderInstrumentation.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestSenderInstrumentation.java @@ -12,12 +12,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.asynchttpclient.Request; @@ -31,24 +29,20 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("sendRequest") .and(takesArgument(0, named("org.asynchttpclient.Request"))) .and(takesArgument(1, named("org.asynchttpclient.AsyncHandler"))) .and(isPublic()), RequestSenderInstrumentation.class.getName() + "$AttachContextAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("writeRequest") .and(takesArgument(0, named("org.asynchttpclient.netty.NettyResponseFuture"))) .and(takesArgument(1, named("io.netty.channel.Channel"))) .and(isPublic()), RequestSenderInstrumentation.class.getName() + "$MountContextAdvice"); - - return transformers; } public static class AttachContextAdvice { diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java index 8a57028d8308..c7b6e7c13bca 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java @@ -12,9 +12,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,16 +29,14 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("onCompleted") .and(takesArgument(0, named("org.asynchttpclient.Response"))) .and(isPublic()), ResponseInstrumentation.class.getPackage().getName() + ".ResponseAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("onThrowable").and(takesArgument(0, Throwable.class)).and(isPublic()), ResponseInstrumentation.class.getPackage().getName() + ".ResponseFailureAdvice"); - return transformers; } } diff --git a/instrumentation/aws-lambda-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambda/v1_0/AwsLambdaRequestHandlerInstrumentation.java b/instrumentation/aws-lambda-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambda/v1_0/AwsLambdaRequestHandlerInstrumentation.java index 4844dda44016..defe0d4cf834 100644 --- a/instrumentation/aws-lambda-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambda/v1_0/AwsLambdaRequestHandlerInstrumentation.java +++ b/instrumentation/aws-lambda-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambda/v1_0/AwsLambdaRequestHandlerInstrumentation.java @@ -19,12 +19,10 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.OpenTelemetrySdkAccess; -import java.util.Collections; -import java.util.Map; import java.util.concurrent.TimeUnit; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner.Typing; import net.bytebuddy.matcher.ElementMatcher; @@ -42,8 +40,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("handleRequest")) diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsClientInstrumentation.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsClientInstrumentation.java index d24b296aa0eb..c56c36cc5698 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsClientInstrumentation.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsClientInstrumentation.java @@ -5,17 +5,15 @@ package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresField; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; import com.amazonaws.handlers.RequestHandler2; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -32,8 +30,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), AwsClientInstrumentation.class.getName() + "$AwsClientAdvice"); } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsHttpClientInstrumentation.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsHttpClientInstrumentation.java index e385f3eaf459..b1e41204ebc0 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsHttpClientInstrumentation.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsHttpClientInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -19,9 +18,8 @@ import com.amazonaws.handlers.RequestHandler2; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(not(isAbstract())) .and(named("doExecute")) diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RequestExecutorInstrumentation.java b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RequestExecutorInstrumentation.java index 77d5327b5ba9..53504589c813 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RequestExecutorInstrumentation.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/RequestExecutorInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.awssdk.v1_11; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,9 +15,8 @@ import com.amazonaws.Response; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(not(isAbstract())) .and(named("doExecute")) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/AwsSdkInstrumentationModule.java b/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/AwsSdkInstrumentationModule.java index ba898e87dc37..7d15fcaa3d47 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/AwsSdkInstrumentationModule.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/AwsSdkInstrumentationModule.java @@ -11,10 +11,9 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Collections; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -63,9 +62,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // Nothing to transform, this type instrumentation is only used for injecting resources. - return Collections.emptyMap(); } } } diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraClientInstrumentationModule.java b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraClientInstrumentationModule.java index 075a9b887d7f..9f450e3a732b 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraClientInstrumentationModule.java +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraClientInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.cassandra.v3_0; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPrivate; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,10 +15,9 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -43,8 +41,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPrivate()).and(named("newSession")).and(takesArguments(0)), CassandraClientInstrumentationModule.class.getName() + "$CassandraClientAdvice"); } diff --git a/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/SessionBuilderInstrumentation.java b/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/SessionBuilderInstrumentation.java index b1d0265a185e..20f12ad09850 100644 --- a/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/SessionBuilderInstrumentation.java +++ b/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/SessionBuilderInstrumentation.java @@ -5,17 +5,15 @@ package io.opentelemetry.javaagent.instrumentation.cassandra.v4_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.concurrent.CompletionStage; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("buildAsync")).and(takesArguments(0)), SessionBuilderInstrumentation.class.getName() + "$BuildAdvice"); } diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseBucketInstrumentation.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseBucketInstrumentation.java index f3b26bc759d5..4af9cd802d0d 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseBucketInstrumentation.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseBucketInstrumentation.java @@ -14,12 +14,10 @@ import com.couchbase.client.java.CouchbaseCluster; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import rx.Observable; @@ -34,15 +32,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(returns(named("rx.Observable"))).and(not(named("query"))), CouchbaseBucketInstrumentation.class.getName() + "$CouchbaseClientAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(returns(named("rx.Observable"))).and(named("query")), CouchbaseBucketInstrumentation.class.getName() + "$CouchbaseClientQueryAdvice"); - return transformers; } public static class CouchbaseClientAdvice { diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseClusterInstrumentation.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseClusterInstrumentation.java index b8206dbb1818..2e7349c3b216 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseClusterInstrumentation.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseClusterInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.couchbase.v2_0; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,11 +14,10 @@ import com.couchbase.client.java.CouchbaseCluster; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import rx.Observable; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(returns(named("rx.Observable"))).and(not(named("core"))), CouchbaseClusterInstrumentation.class.getName() + "$CouchbaseClientAdvice"); } diff --git a/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseCoreInstrumentation.java b/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseCoreInstrumentation.java index c8c182ba7ed0..db268826b4c5 100644 --- a/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseCoreInstrumentation.java +++ b/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseCoreInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.couchbase.v2_6; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -14,12 +13,11 @@ import com.couchbase.client.core.message.CouchbaseRequest; import io.opentelemetry.api.trace.Span; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(takesArgument(0, named("com.couchbase.client.core.message.CouchbaseRequest"))) diff --git a/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseNetworkInstrumentation.java b/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseNetworkInstrumentation.java index 7f05522c8df3..d2f4824b4373 100644 --- a/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseNetworkInstrumentation.java +++ b/instrumentation/couchbase/couchbase-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_6/CouchbaseNetworkInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -18,13 +17,12 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -43,9 +41,9 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // encode(ChannelHandlerContext ctx, REQUEST msg, List out) - return singletonMap( + transformer.applyAdviceToMethod( isMethod() .and(named("encode")) .and(takesArguments(3)) diff --git a/instrumentation/couchbase/couchbase-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v3_1/CouchbaseEnvironmentInstrumentation.java b/instrumentation/couchbase/couchbase-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v3_1/CouchbaseEnvironmentInstrumentation.java index c66b3f99bd5c..af5aee47da14 100644 --- a/instrumentation/couchbase/couchbase-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v3_1/CouchbaseEnvironmentInstrumentation.java +++ b/instrumentation/couchbase/couchbase-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v3_1/CouchbaseEnvironmentInstrumentation.java @@ -12,10 +12,8 @@ import com.couchbase.client.tracing.opentelemetry.OpenTelemetryRequestTracer; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), CouchbaseEnvironmentInstrumentation.class.getName() + "$ConstructorAdvice"); } diff --git a/instrumentation/dropwizard-views-0.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardviews/DropwizardViewsInstrumentationModule.java b/instrumentation/dropwizard-views-0.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardviews/DropwizardViewsInstrumentationModule.java index 0cbc7568fb3b..4921812a2fba 100644 --- a/instrumentation/dropwizard-views-0.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardviews/DropwizardViewsInstrumentationModule.java +++ b/instrumentation/dropwizard-views-0.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardviews/DropwizardViewsInstrumentationModule.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.dropwizardviews.DropwizardTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -21,11 +20,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -52,8 +50,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("render")) .and(takesArgument(0, named("io.dropwizard.views.View"))) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/Elasticsearch5RestClientInstrumentationModule.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/Elasticsearch5RestClientInstrumentationModule.java index 5159890ed359..6f978c9bb8b3 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/Elasticsearch5RestClientInstrumentationModule.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/Elasticsearch5RestClientInstrumentationModule.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.ElasticsearchRestClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -20,11 +19,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.RestResponseListener; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.elasticsearch.client.ResponseListener; @@ -47,8 +45,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(namedOneOf("performRequestAsync", "performRequestAsyncNoCatch")) .and(takesArguments(7)) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/Elasticsearch6RestClientInstrumentationModule.java b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/Elasticsearch6RestClientInstrumentationModule.java index 5bdf087635b1..1ca156e18d7d 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/Elasticsearch6RestClientInstrumentationModule.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/Elasticsearch6RestClientInstrumentationModule.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.ElasticsearchRestClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -21,11 +20,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.RestResponseListener; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.elasticsearch.client.Request; @@ -55,8 +53,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("performRequestAsyncNoCatch")) .and(takesArguments(2)) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/Elasticsearch7RestClientInstrumentationModule.java b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/Elasticsearch7RestClientInstrumentationModule.java index be8ed6945c08..a37a6f86580f 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/Elasticsearch7RestClientInstrumentationModule.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/Elasticsearch7RestClientInstrumentationModule.java @@ -19,12 +19,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.RestResponseListener; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.elasticsearch.client.Request; @@ -55,15 +53,14 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("performRequest")) .and(takesArguments(1)) .and(takesArgument(0, named("org.elasticsearch.client.Request"))), Elasticsearch7RestClientInstrumentationModule.class.getName() + "$PerformRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("performRequestAsync")) .and(takesArguments(2)) @@ -71,7 +68,6 @@ public Map, String> transfor .and(takesArgument(1, named("org.elasticsearch.client.ResponseListener"))), Elasticsearch7RestClientInstrumentationModule.class.getName() + "$PerformRequestAsyncAdvice"); - return transformers; } } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_0/Elasticsearch5TransportClientInstrumentationModule.java b/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_0/Elasticsearch5TransportClientInstrumentationModule.java index 1a8215dd8238..9e00a7a98aaa 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_0/Elasticsearch5TransportClientInstrumentationModule.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_0/Elasticsearch5TransportClientInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.elasticsearch.transport.ElasticsearchTransportClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -18,10 +17,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.elasticsearch.action.Action; @@ -49,8 +47,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(takesArgument(0, named("org.elasticsearch.action.Action"))) diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/Elasticsearch53TransportClientInstrumentationModule.java b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/Elasticsearch53TransportClientInstrumentationModule.java index 8bf1a64cc3c8..04d96fbeb1fc 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/Elasticsearch53TransportClientInstrumentationModule.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v5_3/Elasticsearch53TransportClientInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.elasticsearch.transport.ElasticsearchTransportClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -18,10 +17,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.elasticsearch.action.Action; @@ -50,8 +48,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(takesArgument(0, named("org.elasticsearch.action.Action"))) diff --git a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportClientInstrumentationModule.java b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportClientInstrumentationModule.java index 1f7a3a8f0e2c..cfb1a72d29ee 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportClientInstrumentationModule.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportClientInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.elasticsearch.transport.ElasticsearchTransportClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; @@ -19,10 +18,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.elasticsearch.action.ActionListener; @@ -53,8 +51,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and( diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/CallableInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/CallableInstrumentation.java index 5f005a98557d..566e81455f14 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/CallableInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/CallableInstrumentation.java @@ -6,21 +6,19 @@ package io.opentelemetry.javaagent.instrumentation.javaconcurrent; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.AdviceUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import java.util.concurrent.Callable; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -32,8 +30,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("call").and(takesArguments(0)).and(isPublic()), CallableInstrumentation.class.getName() + "$CallableAdvice"); } diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/FutureInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/FutureInstrumentation.java index d829e1d85fe0..ce51947ea95e 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/FutureInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/FutureInstrumentation.java @@ -6,11 +6,11 @@ package io.opentelemetry.javaagent.instrumentation.javaconcurrent; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; @@ -18,10 +18,8 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; -import java.util.Map; import java.util.concurrent.Future; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.slf4j.Logger; @@ -90,8 +88,8 @@ public boolean matches(TypeDescription target) { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("cancel").and(returns(boolean.class)), FutureInstrumentation.class.getName() + "$CanceledFutureAdvice"); } diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java index 93031c802b2e..e9e5490c2a01 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java @@ -10,6 +10,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; @@ -19,54 +20,48 @@ import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.ForkJoinTask; import java.util.concurrent.Future; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; -import net.bytebuddy.matcher.ElementMatcher; public class JavaExecutorInstrumentation extends AbstractExecutorInstrumentation { @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("execute").and(takesArgument(0, Runnable.class)).and(takesArguments(1)), JavaExecutorInstrumentation.class.getName() + "$SetExecuteRunnableStateAdvice"); // Netty uses addTask as the actual core of their submission; there are non-standard variations // like execute(Runnable,boolean) that aren't caught by standard instrumentation - transformers.put( + transformer.applyAdviceToMethod( named("addTask").and(takesArgument(0, Runnable.class)).and(takesArguments(1)), JavaExecutorInstrumentation.class.getName() + "$SetExecuteRunnableStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("execute").and(takesArgument(0, ForkJoinTask.class)), JavaExecutorInstrumentation.class.getName() + "$SetJavaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("submit").and(takesArgument(0, Runnable.class)), JavaExecutorInstrumentation.class.getName() + "$SetSubmitRunnableStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("submit").and(takesArgument(0, Callable.class)), JavaExecutorInstrumentation.class.getName() + "$SetCallableStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("submit").and(takesArgument(0, ForkJoinTask.class)), JavaExecutorInstrumentation.class.getName() + "$SetJavaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( nameMatches("invoke(Any|All)$").and(takesArgument(0, Collection.class)), JavaExecutorInstrumentation.class.getName() + "$SetCallableStateForCallableCollectionAdvice"); - transformers.put( + transformer.applyAdviceToMethod( nameMatches("invoke").and(takesArgument(0, ForkJoinTask.class)), JavaExecutorInstrumentation.class.getName() + "$SetJavaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("schedule").and(takesArgument(0, Runnable.class)), JavaExecutorInstrumentation.class.getName() + "$SetSubmitRunnableStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("schedule").and(takesArgument(0, Callable.class)), JavaExecutorInstrumentation.class.getName() + "$SetCallableStateAdvice"); - return transformers; } public static class SetExecuteRunnableStateAdvice { diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaForkJoinTaskInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaForkJoinTaskInstrumentation.java index 4ce6e315422b..85f053813666 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaForkJoinTaskInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaForkJoinTaskInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.javaconcurrent; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -14,16 +13,15 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.AdviceUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -41,8 +39,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("exec").and(takesArguments(0)).and(not(isAbstract())), JavaForkJoinTaskInstrumentation.class.getName() + "$ForkJoinTaskAdvice"); } diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/RunnableInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/RunnableInstrumentation.java index 066c13952097..0b99196b419a 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/RunnableInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/RunnableInstrumentation.java @@ -6,20 +6,18 @@ package io.opentelemetry.javaagent.instrumentation.javaconcurrent; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.AdviceUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("run").and(takesArguments(0)).and(isPublic()), RunnableInstrumentation.class.getName() + "$RunnableAdvice"); } diff --git a/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java b/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java index 221aafe3cdc1..3255c2b2f739 100644 --- a/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java +++ b/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.safeHasSuperType; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.extannotations.ExternalAnnotationTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; @@ -20,6 +19,7 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.config.Config; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.tooling.config.MethodsConfigurationParser; import java.lang.reflect.Method; import java.util.Arrays; @@ -111,8 +111,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isAnnotatedWith(traceAnnotationMatcher).and(not(excludedMethodsMatcher)), ExternalAnnotationInstrumentation.class.getName() + "$ExternalAnnotationAdvice"); } diff --git a/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraInstrumentationModule.java b/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraInstrumentationModule.java index 65c17657d6a5..8eae4ee948b7 100644 --- a/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraInstrumentationModule.java +++ b/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraInstrumentationModule.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.finatra.FinatraTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -27,11 +26,10 @@ import io.opentelemetry.instrumentation.api.tracer.ServerSpan; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import scala.Some; @@ -60,8 +58,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("handleMatch")) .and(takesArguments(2)) diff --git a/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/GeodeInstrumentationModule.java b/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/GeodeInstrumentationModule.java index e464b928cd70..5d4d1124cc77 100644 --- a/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/GeodeInstrumentationModule.java +++ b/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/GeodeInstrumentationModule.java @@ -19,13 +19,11 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.geode.cache.Region; @@ -53,9 +51,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> map = new HashMap<>(2); - map.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and( named("clear") @@ -71,12 +68,11 @@ public Map, String> transfor .or(nameStartsWith("remove")) .or(named("replace"))), GeodeInstrumentationModule.class.getName() + "$SimpleAdvice"); - map.put( + transformer.applyAdviceToMethod( isMethod() .and(named("existsValue").or(named("query")).or(named("selectValue"))) .and(takesArgument(0, String.class)), GeodeInstrumentationModule.class.getName() + "$QueryAdvice"); - return map; } } diff --git a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientInstrumentationModule.java b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientInstrumentationModule.java index 9ab61c6f144f..efbd52f616d3 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientInstrumentationModule.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientInstrumentationModule.java @@ -21,13 +21,11 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.Executor; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -52,21 +50,18 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("execute")).and(takesArguments(0)), GoogleHttpClientInstrumentationModule.class.getName() + "$GoogleHttpClientAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("executeAsync")) .and(takesArguments(1)) .and(takesArgument(0, Executor.class)), GoogleHttpClientInstrumentationModule.class.getName() + "$GoogleHttpClientAsyncAdvice"); - - return transformers; } } diff --git a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/DefaultGrailsControllerClassInstrumentation.java b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/DefaultGrailsControllerClassInstrumentation.java index 08e21721c600..2979f5717bd8 100644 --- a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/DefaultGrailsControllerClassInstrumentation.java +++ b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/DefaultGrailsControllerClassInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.grails; import static io.opentelemetry.javaagent.instrumentation.grails.GrailsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,9 +15,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("invoke")) diff --git a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java index 0c419d88d547..a21318d6f72d 100644 --- a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java +++ b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.grails; import static io.opentelemetry.javaagent.instrumentation.grails.GrailsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,10 +14,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.grails.web.mapping.mvc.GrailsControllerUrlMappingInfo; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("handle")) diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/DefaultFilterChainInstrumentation.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/DefaultFilterChainInstrumentation.java index cf889b59b546..d034b8da6644 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/DefaultFilterChainInstrumentation.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/DefaultFilterChainInstrumentation.java @@ -13,10 +13,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.glassfish.grizzly.filterchain.FilterChainContext; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPrivate()) .and(named("notifyFailure")) diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/FilterInstrumentation.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/FilterInstrumentation.java index 60ca3454bd1e..72b78fad4d6a 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/FilterInstrumentation.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/FilterInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.grizzly.GrizzlyHttpServerTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.hasSuperClass; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -17,10 +16,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; @@ -43,8 +41,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handleRead") .and(takesArgument(0, named("org.glassfish.grizzly.filterchain.FilterChainContext"))) .and(isPublic()), diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpCodecFilterInstrumentation.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpCodecFilterInstrumentation.java index 5a5f9c061eb0..447dd8a15137 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpCodecFilterInstrumentation.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpCodecFilterInstrumentation.java @@ -12,11 +12,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.glassfish.grizzly.filterchain.FilterChainContext; @@ -32,23 +30,21 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); + public void transform(TypeTransformer transformer) { // this is for 2.3.20+ - transformers.put( + transformer.applyAdviceToMethod( named("handleRead") .and(takesArgument(0, named("org.glassfish.grizzly.filterchain.FilterChainContext"))) .and(takesArgument(1, named("org.glassfish.grizzly.http.HttpHeader"))) .and(isPublic()), HttpCodecFilterInstrumentation.class.getName() + "$HandleReadAdvice"); // this is for 2.3 through 2.3.19 - transformers.put( + transformer.applyAdviceToMethod( named("handleRead") .and(takesArgument(0, named("org.glassfish.grizzly.filterchain.FilterChainContext"))) .and(takesArgument(1, named("org.glassfish.grizzly.http.HttpPacketParsing"))) .and(isPublic()), HttpCodecFilterInstrumentation.class.getName() + "$HandleReadOldAdvice"); - return transformers; } public static class HandleReadAdvice { diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpHandlerInstrumentation.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpHandlerInstrumentation.java index b294407a41f3..245c1a9d3c89 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpHandlerInstrumentation.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpHandlerInstrumentation.java @@ -14,11 +14,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -35,8 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("service")) diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpServerFilterInstrumentation.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpServerFilterInstrumentation.java index 27441df9bdc1..f744ae7c6bc9 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpServerFilterInstrumentation.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/HttpServerFilterInstrumentation.java @@ -12,10 +12,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.glassfish.grizzly.filterchain.FilterChainContext; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("prepareResponse") .and(takesArgument(0, named("org.glassfish.grizzly.filterchain.FilterChainContext"))) .and(takesArgument(1, named("org.glassfish.grizzly.http.HttpRequestPacket"))) diff --git a/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcClientBuilderBuildInstrumentation.java b/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcClientBuilderBuildInstrumentation.java index 6980bc2024da..8dcf7aca0e50 100644 --- a/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcClientBuilderBuildInstrumentation.java +++ b/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcClientBuilderBuildInstrumentation.java @@ -7,17 +7,15 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresField; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.grpc.ClientInterceptor; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("build")), GrpcClientBuilderBuildInstrumentation.class.getName() + "$AddInterceptorAdvice"); } diff --git a/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcContextInstrumentation.java b/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcContextInstrumentation.java index 2dd59cc44993..4bc2e87555ea 100644 --- a/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcContextInstrumentation.java +++ b/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcContextInstrumentation.java @@ -12,10 +12,8 @@ import io.grpc.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -26,8 +24,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isStatic()) .and(named("storage")) diff --git a/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcServerBuilderInstrumentation.java b/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcServerBuilderInstrumentation.java index 2d132d868544..c3b35d5f046d 100644 --- a/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcServerBuilderInstrumentation.java +++ b/instrumentation/grpc-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grpc/v1_6/GrpcServerBuilderInstrumentation.java @@ -14,11 +14,9 @@ import io.grpc.ServerBuilder; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -35,8 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")).and(takesArguments(0)), GrpcServerBuilderInstrumentation.class.getName() + "$BuildAdvice"); } diff --git a/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/GuavaInstrumentationModule.java b/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/GuavaInstrumentationModule.java index d309cbfe4c77..666dc6707aed 100644 --- a/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/GuavaInstrumentationModule.java +++ b/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/GuavaInstrumentationModule.java @@ -14,18 +14,16 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.concurrent.ExecutorInstrumentationUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.RunnableWrapper; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.Executor; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; @@ -49,14 +47,12 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> map = new HashMap<>(); - map.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), GuavaInstrumentationModule.class.getName() + "$AbstractFutureAdvice"); - map.put( + transformer.applyAdviceToMethod( named("addListener").and(ElementMatchers.takesArguments(Runnable.class, Executor.class)), GuavaInstrumentationModule.class.getName() + "$AddListenerAdvice"); - return map; } } diff --git a/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtInstrumentationModule.java b/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtInstrumentationModule.java index ed4ab700c14c..424fcc3ddec7 100644 --- a/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtInstrumentationModule.java +++ b/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtInstrumentationModule.java @@ -17,12 +17,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Method; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -52,10 +50,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("invokeAndEncodeResponse") .and(takesArguments(5)) .and(takesArgument(0, Object.class)) @@ -66,7 +62,7 @@ public Map, String> transfor RpcInstrumentation.class.getName() + "$RpcInvokeAdvice"); // encodeResponseForFailure is called by invokeAndEncodeResponse in case of failure - transformers.put( + transformer.applyAdviceToMethod( named("encodeResponseForFailure") .and(takesArguments(4)) .and(takesArgument(0, Method.class)) @@ -74,8 +70,6 @@ public Map, String> transfor .and(takesArgument(2, named("com.google.gwt.user.server.rpc.SerializationPolicy"))) .and(takesArgument(3, int.class)), RpcInstrumentation.class.getName() + "$RpcFailureAdvice"); - - return transformers; } public static class RpcInvokeAdvice { diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/CriteriaInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/CriteriaInstrumentation.java index a44cc5bcfa7f..61d0e21f3673 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/CriteriaInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/CriteriaInstrumentation.java @@ -8,19 +8,17 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -39,8 +37,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(namedOneOf("list", "uniqueResult", "scroll")), CriteriaInstrumentation.class.getName() + "$CriteriaMethodAdvice"); } diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/QueryInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/QueryInstrumentation.java index 710edd3518ab..45714ee933c9 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/QueryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/QueryInstrumentation.java @@ -8,19 +8,17 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.Query; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(namedOneOf("list", "executeUpdate", "uniqueResult", "iterate", "scroll")), QueryInstrumentation.class.getName() + "$QueryMethodAdvice"); } diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionFactoryInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionFactoryInstrumentation.java index d72566b83455..07c4dcf64721 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionFactoryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionFactoryInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.javaagent.instrumentation.hibernate.HibernateTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -18,12 +17,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.Session; @@ -42,8 +40,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(namedOneOf("openSession", "openStatelessSession")) .and(takesArguments(0)) diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionInstrumentation.java index d45a228f84d5..642116d3b25f 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/SessionInstrumentation.java @@ -20,14 +20,12 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -51,14 +49,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("close")).and(takesArguments(0)), SessionInstrumentation.class.getName() + "$SessionCloseAdvice"); // Session synchronous methods we want to instrument. - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and( namedOneOf( @@ -78,27 +75,25 @@ public Map, String> transfor SessionInstrumentation.class.getName() + "$SessionMethodAdvice"); // Handle the non-generic 'get' separately. - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("get")).and(returns(Object.class)).and(takesArgument(0, String.class)), SessionInstrumentation.class.getName() + "$SessionMethodAdvice"); // These methods return some object that we want to instrument, and so the Advice will pin the // current Span to the returned object using a ContextStore. - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(namedOneOf("beginTransaction", "getTransaction")) .and(returns(named("org.hibernate.Transaction"))), SessionInstrumentation.class.getName() + "$GetTransactionAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(returns(hasInterface(named("org.hibernate.Query")))), SessionInstrumentation.class.getName() + "$GetQueryAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(returns(hasInterface(named("org.hibernate.Criteria")))), SessionInstrumentation.class.getName() + "$GetCriteriaAdvice"); - - return transformers; } public static class SessionCloseAdvice { diff --git a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/TransactionInstrumentation.java b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/TransactionInstrumentation.java index a5790e8c88d6..3b413fcdee76 100644 --- a/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/TransactionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v3_3/TransactionInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -15,12 +14,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.Transaction; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("commit")).and(takesArguments(0)), TransactionInstrumentation.class.getName() + "$TransactionCommitAdvice"); } diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaInstrumentation.java index 354ddb3da8b6..3fc85ab65740 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/CriteriaInstrumentation.java @@ -8,19 +8,17 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -39,8 +37,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(namedOneOf("list", "uniqueResult", "scroll")), CriteriaInstrumentation.class.getName() + "$CriteriaMethodAdvice"); } diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryInstrumentation.java index b3434fb2f8cc..dfa2b13d306c 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/QueryInstrumentation.java @@ -8,19 +8,17 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.Query; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(namedOneOf("list", "executeUpdate", "uniqueResult", "iterate", "scroll")), QueryInstrumentation.class.getName() + "$QueryMethodAdvice"); } diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionFactoryInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionFactoryInstrumentation.java index 86fe7ae51baa..53144e3984a3 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionFactoryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionFactoryInstrumentation.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.javaagent.instrumentation.hibernate.HibernateTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -17,12 +16,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.SharedSessionContract; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(namedOneOf("openSession", "openStatelessSession")) .and(takesArguments(0)) diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionInstrumentation.java index 1a48daa201f2..4310a2bf86dc 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/SessionInstrumentation.java @@ -20,14 +20,12 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -49,14 +47,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("close")).and(takesArguments(0)), SessionInstrumentation.class.getName() + "$SessionCloseAdvice"); // Session synchronous methods we want to instrument. - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and( namedOneOf( @@ -75,27 +72,25 @@ public Map, String> transfor "internalLoad")), SessionInstrumentation.class.getName() + "$SessionMethodAdvice"); // Handle the non-generic 'get' separately. - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("get")).and(returns(Object.class)).and(takesArgument(0, String.class)), SessionInstrumentation.class.getName() + "$SessionMethodAdvice"); // These methods return some object that we want to instrument, and so the Advice will pin the // current Span to the returned object using a ContextStore. - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(namedOneOf("beginTransaction", "getTransaction")) .and(returns(named("org.hibernate.Transaction"))), SessionInstrumentation.class.getName() + "$GetTransactionAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(returns(hasInterface(named("org.hibernate.Query")))), SessionInstrumentation.class.getName() + "$GetQueryAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(returns(hasInterface(named("org.hibernate.Criteria")))), SessionInstrumentation.class.getName() + "$GetCriteriaAdvice"); - - return transformers; } public static class SessionCloseAdvice { diff --git a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/TransactionInstrumentation.java b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/TransactionInstrumentation.java index c55e489842b9..366b587b46ec 100644 --- a/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/TransactionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_0/TransactionInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -15,12 +14,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.Transaction; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("commit")).and(takesArguments(0)), TransactionInstrumentation.class.getName() + "$TransactionCommitAdvice"); } diff --git a/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallInstrumentation.java b/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallInstrumentation.java index 6ee1cd462cd3..ff8275e04543 100644 --- a/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/ProcedureCallInstrumentation.java @@ -7,19 +7,17 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.procedure.ProcedureCall; @@ -37,8 +35,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("getOutputs")), ProcedureCallInstrumentation.class.getName() + "$ProcedureCallMethodAdvice"); } diff --git a/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/SessionInstrumentation.java b/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/SessionInstrumentation.java index 863c348935fd..ecbae371d769 100644 --- a/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/SessionInstrumentation.java +++ b/instrumentation/hibernate/hibernate-4.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/v4_3/SessionInstrumentation.java @@ -8,19 +8,17 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.hibernate.SessionMethodUtils; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.hibernate.SharedSessionContract; @@ -39,8 +37,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(returns(hasInterface(named("org.hibernate.procedure.ProcedureCall")))), SessionInstrumentation.class.getName() + "$GetProcedureCallAdvice"); } diff --git a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionInstrumentationModule.java b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionInstrumentationModule.java index bd64a713773b..c59291574d23 100644 --- a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionInstrumentationModule.java +++ b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionInstrumentationModule.java @@ -24,6 +24,7 @@ import io.opentelemetry.instrumentation.api.tracer.HttpStatusConverter; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepth; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; @@ -31,11 +32,8 @@ import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.HttpURLConnection; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; @@ -68,17 +66,15 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> map = new HashMap<>(); - map.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(namedOneOf("connect", "getOutputStream", "getInputStream")), HttpUrlConnectionInstrumentationModule.class.getName() + "$HttpUrlConnectionAdvice"); - map.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("getResponseCode")), HttpUrlConnectionInstrumentationModule.class.getName() + "$GetResponseCodeAdvice"); - return map; } } diff --git a/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java b/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java index f107a9f73862..8bdca5c03097 100644 --- a/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java +++ b/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java @@ -20,11 +20,9 @@ import io.opentelemetry.instrumentation.rxjava.TracedOnSubscribe; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import rx.Observable; @@ -64,15 +62,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("getExecutionObservable").and(returns(named("rx.Observable"))), HystrixInstrumentationModule.class.getName() + "$ExecuteAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("getFallbackObservable").and(returns(named("rx.Observable"))), HystrixInstrumentationModule.class.getName() + "$FallbackAdvice"); - return transformers; } } diff --git a/instrumentation/internal/internal-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestInstrumentationModule.java b/instrumentation/internal/internal-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestInstrumentationModule.java index bc3c13290322..6d22a31237e8 100644 --- a/instrumentation/internal/internal-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestInstrumentationModule.java +++ b/instrumentation/internal/internal-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestInstrumentationModule.java @@ -12,10 +12,8 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -47,9 +45,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // Nothing to transform, this type instrumentation is only used for injecting resources. - return Collections.emptyMap(); } } } diff --git a/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ClassLoaderInstrumentation.java b/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ClassLoaderInstrumentation.java index 9825d7546416..728219da6d9a 100644 --- a/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ClassLoaderInstrumentation.java +++ b/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ClassLoaderInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedNoneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -18,6 +17,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.internal.BootstrapPackagePrefixesHolder; import io.opentelemetry.javaagent.tooling.Constants; @@ -26,9 +26,7 @@ import java.lang.invoke.MethodType; import java.util.Arrays; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -56,8 +54,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("loadClass")) .and( diff --git a/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ResourceInjectionInstrumentation.java b/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ResourceInjectionInstrumentation.java index 095b7a2e68d5..b33af9e06e69 100644 --- a/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ResourceInjectionInstrumentation.java +++ b/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ResourceInjectionInstrumentation.java @@ -12,13 +12,12 @@ import io.opentelemetry.javaagent.bootstrap.HelperResources; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.net.URL; import java.util.Collections; import java.util.Enumeration; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -37,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("getResources")).and(takesArguments(String.class)), ResourceInjectionInstrumentation.class.getName() + "$GetResourcesAdvice"); } diff --git a/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/osgi/EclipseOsgiInstrumentationModule.java b/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/osgi/EclipseOsgiInstrumentationModule.java index b1d2e03a9b38..8d1bfe83c64f 100644 --- a/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/osgi/EclipseOsgiInstrumentationModule.java +++ b/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/osgi/EclipseOsgiInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.internal.osgi; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -14,11 +13,10 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.internal.InClassLoaderMatcher; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -50,8 +48,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("isDynamicallyImported")).and(returns(boolean.class)), EclipseOsgiInstrumentation.class.getName() + "$IsDynamicallyImportedAdvice"); } diff --git a/instrumentation/internal/internal-proxy/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/proxy/ProxyInstrumentation.java b/instrumentation/internal/internal-proxy/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/proxy/ProxyInstrumentation.java index 6c5a16983505..99b86e83c62d 100644 --- a/instrumentation/internal/internal-proxy/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/proxy/ProxyInstrumentation.java +++ b/instrumentation/internal/internal-proxy/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/proxy/ProxyInstrumentation.java @@ -13,11 +13,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.InvocationHandler; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,9 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("newProxyInstance")) .and(takesArguments(3)) @@ -41,7 +38,7 @@ public Map, String> transfor .and(isPublic()) .and(isStatic()), ProxyInstrumentation.class.getName() + "$FilterDuplicateMarkerInterfaces"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("getProxyClass")) .and(takesArguments(2)) @@ -50,7 +47,6 @@ public Map, String> transfor .and(isPublic()) .and(isStatic()), ProxyInstrumentation.class.getName() + "$FilterDuplicateMarkerInterfaces"); - return transformers; } public static class FilterDuplicateMarkerInterfaces { diff --git a/instrumentation/internal/internal-url-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestTypeInstrumentation.java b/instrumentation/internal/internal-url-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestTypeInstrumentation.java index e864054a4b29..3bdb95dbe239 100644 --- a/instrumentation/internal/internal-url-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestTypeInstrumentation.java +++ b/instrumentation/internal/internal-url-class-loader/javaagent-integration-tests/src/main/java/instrumentation/TestTypeInstrumentation.java @@ -9,10 +9,8 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -28,8 +26,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("getHostName"), TestTypeInstrumentation.class.getName() + "$GetHostNameAdvice"); } diff --git a/instrumentation/internal/internal-url-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/urlclassloader/UrlClassLoaderInstrumentation.java b/instrumentation/internal/internal-url-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/urlclassloader/UrlClassLoaderInstrumentation.java index d2d2607679f8..e48f2fabce83 100644 --- a/instrumentation/internal/internal-url-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/urlclassloader/UrlClassLoaderInstrumentation.java +++ b/instrumentation/internal/internal-url-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/urlclassloader/UrlClassLoaderInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.internal.urlclassloader; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.isStatic; @@ -16,11 +15,10 @@ import io.opentelemetry.javaagent.bootstrap.ClassLoaderMatcherCacheHolder; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.net.URL; import java.net.URLClassLoader; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -32,8 +30,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("addURL")) .and(takesArguments(1)) diff --git a/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpClientInstrumentation.java b/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpClientInstrumentation.java index bd052e22bd98..4f8d17a6af5b 100644 --- a/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpClientInstrumentation.java +++ b/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpClientInstrumentation.java @@ -20,13 +20,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import java.util.HashMap; -import java.util.Map; import java.util.concurrent.CompletableFuture; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -46,10 +44,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("send")) .and(isPublic()) @@ -57,14 +53,12 @@ public Map, String> transfor .and(takesArgument(0, named("java.net.http.HttpRequest"))), HttpClientInstrumentation.class.getName() + "$SendAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("sendAsync")) .and(isPublic()) .and(takesArgument(0, named("java.net.http.HttpRequest"))), HttpClientInstrumentation.class.getName() + "$SendAsyncAdvice"); - - return transformers; } public static class SendAdvice { diff --git a/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpHeadersInstrumentation.java b/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpHeadersInstrumentation.java index 42fa99822df6..439e0d2a58b2 100644 --- a/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpHeadersInstrumentation.java +++ b/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/HttpHeadersInstrumentation.java @@ -7,17 +7,15 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.httpclient.JdkHttpClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.net.http.HttpHeaders; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("headers")), HttpHeadersInstrumentation.class.getName() + "$HeadersAdvice"); } diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientInstrumentationModule.java b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientInstrumentationModule.java index 2d854eebc335..1d0ede60ba23 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientInstrumentationModule.java +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientInstrumentationModule.java @@ -12,7 +12,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.jaxrsclient.v1_1.JaxRsClientV1Tracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -24,10 +23,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -55,8 +53,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handle") .and(takesArgument(0, extendsClass(named("com.sun.jersey.api.client.ClientRequest")))) .and(returns(extendsClass(named("com.sun.jersey.api.client.ClientResponse")))), diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JaxRsClientInstrumentationModule.java b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JaxRsClientInstrumentationModule.java index 35f891babb08..9e0defe10c7d 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JaxRsClientInstrumentationModule.java +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JaxRsClientInstrumentationModule.java @@ -9,18 +9,16 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import javax.ws.rs.client.Client; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -49,8 +47,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("build").and(returns(hasInterface(named("javax.ws.rs.client.Client")))), JaxRsClientInstrumentationModule.class.getName() + "$ClientBuilderAdvice"); } diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientInstrumentationModule.java b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientInstrumentationModule.java index e92490469005..8859050ae93b 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientInstrumentationModule.java +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/CxfClientInstrumentationModule.java @@ -12,11 +12,10 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.cxf.message.Message; @@ -46,8 +45,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("preProcessResult").and(takesArgument(0, named("org.apache.cxf.message.Message"))), CxfClientInstrumentationModule.class.getName() + "$ErrorAdvice"); } @@ -60,8 +59,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handleException") .and( takesArgument(0, named(Map.class.getName())) diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JerseyClientInstrumentationModule.java b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JerseyClientInstrumentationModule.java index 74b33a6cc58b..3f51b80d0039 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JerseyClientInstrumentationModule.java +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/JerseyClientInstrumentationModule.java @@ -13,12 +13,10 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -53,23 +51,19 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("invoke")) .and(takesArgument(0, named("org.glassfish.jersey.client.ClientRequest"))), JerseyClientInstrumentationModule.class.getName() + "$InvokeAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("submit").or(named("createRunnableForAsyncProcessing"))) .and(takesArgument(0, named("org.glassfish.jersey.client.ClientRequest"))) .and(takesArgument(1, named("org.glassfish.jersey.client.ResponseCallback"))), JerseyClientInstrumentationModule.class.getName() + "$SubmitAdvice"); - - return transformers; } } diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/ResteasyClientInstrumentationModule.java b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/ResteasyClientInstrumentationModule.java index 5f4ec7fcce07..ebd184e5ab8b 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/ResteasyClientInstrumentationModule.java +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0/jaxrs-client-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v2_0/ResteasyClientInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.jaxrsclient.v2_0.ResteasyClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -19,11 +18,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import javax.ws.rs.core.Response; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.jboss.resteasy.client.jaxrs.internal.ClientInvocation; @@ -56,8 +54,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("invoke")).and(takesArguments(0)), ResteasyClientInstrumentationModule.class.getName() + "$InvokeAdvice"); } 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 c762d9eb261f..a91a5fca3627 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 @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.javaagent.instrumentation.jaxrs.v1_0.JaxRsAnnotationsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -19,12 +18,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.Map; import javax.ws.rs.Path; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -43,8 +41,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and( hasSuperMethod( diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/AbstractRequestContextInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/AbstractRequestContextInstrumentation.java index 5db6cf438915..62fcc0236503 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/AbstractRequestContextInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/AbstractRequestContextInstrumentation.java @@ -7,15 +7,13 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("abortWith")) .and(takesArguments(1)) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ContainerRequestFilterInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ContainerRequestFilterInstrumentation.java index d2249156c519..3aa2d788f979 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ContainerRequestFilterInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ContainerRequestFilterInstrumentation.java @@ -7,18 +7,16 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerRequestFilter; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,8 +37,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("filter")) .and(takesArguments(1)) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsInstrumentation.java index 834cb9c6f0f4..3e80b337b88f 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAnnotationsInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxRsAnnotationsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -19,16 +18,15 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import java.lang.reflect.Method; -import java.util.Map; import java.util.concurrent.CompletionStage; import javax.ws.rs.Path; import javax.ws.rs.container.AsyncResponse; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner.Typing; import net.bytebuddy.matcher.ElementMatcher; @@ -47,8 +45,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and( hasSuperMethod( diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAsyncResponseInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAsyncResponseInstrumentation.java index a82b420f7059..e98059839ca4 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAsyncResponseInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxRsAsyncResponseInstrumentation.java @@ -14,14 +14,12 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; -import java.util.Map; import javax.ws.rs.container.AsyncResponse; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,18 +36,16 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("resume").and(takesArgument(0, Object.class)).and(isPublic()), JaxRsAsyncResponseInstrumentation.class.getName() + "$AsyncResponseAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("resume").and(takesArgument(0, Throwable.class)).and(isPublic()), JaxRsAsyncResponseInstrumentation.class.getName() + "$AsyncResponseThrowableAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("cancel"), JaxRsAsyncResponseInstrumentation.class.getName() + "$AsyncResponseCancelAdvice"); - return transformers; } public static class AsyncResponseAdvice { diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJaxRsInvokerInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJaxRsInvokerInstrumentation.java index 050d0d2c8b77..dfb46e7330f9 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJaxRsInvokerInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfJaxRsInvokerInstrumentation.java @@ -5,16 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.cxf.message.Exchange; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("invoke") .and(takesArgument(0, named("org.apache.cxf.message.Exchange"))) .and(takesArgument(1, Object.class)) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRequestContextInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRequestContextInstrumentation.java index c916e5024c00..702331c5e0f1 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRequestContextInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRequestContextInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -14,12 +13,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Method; -import java.util.Map; import javax.ws.rs.container.ContainerRequestContext; import net.bytebuddy.asm.Advice; import net.bytebuddy.asm.Advice.Local; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.cxf.jaxrs.impl.AbstractRequestContextImpl; @@ -45,8 +43,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("abortWith")) .and(takesArguments(1)) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRsHttpListenerInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRsHttpListenerInstrumentation.java index b1966ffe954e..8eb2e7a469d1 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRsHttpListenerInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfRsHttpListenerInstrumentation.java @@ -5,18 +5,16 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.jaxrs.JaxrsContextPath; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("doInvoke")), CxfRsHttpListenerInstrumentation.class.getName() + "$InvokeAdvice"); } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfServletControllerInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfServletControllerInstrumentation.java index 8ea429dff5cc..131f1e961e70 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfServletControllerInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfServletControllerInstrumentation.java @@ -13,13 +13,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.jaxrs.JaxrsContextPath; -import java.util.Collections; -import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("invokeDestination")) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyResourceMethodDispatcherInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyResourceMethodDispatcherInstrumentation.java index 9a83aa09dad3..fe29247101a9 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyResourceMethodDispatcherInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyResourceMethodDispatcherInstrumentation.java @@ -5,15 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import javax.ws.rs.core.Request; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -25,8 +23,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("dispatch") .and( takesArgument( diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyServletContainerInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyServletContainerInstrumentation.java index 8c6dee867171..29af68844611 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyServletContainerInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseyServletContainerInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -13,12 +12,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.jaxrs.JaxrsContextPath; -import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("service")) .and(takesArgument(0, named("javax.servlet.http.HttpServletRequest"))) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/Resteasy30ServletContainerDispatcherInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/Resteasy30ServletContainerDispatcherInstrumentation.java index 5aaa55a7bd33..22b5a239908c 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/Resteasy30ServletContainerDispatcherInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/Resteasy30ServletContainerDispatcherInstrumentation.java @@ -11,12 +11,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.jaxrs.JaxrsContextPath; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -28,8 +26,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("service")), Resteasy30ServletContainerDispatcherInstrumentation.class.getName() + "$ServiceAdvice"); } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceLocatorInvokerInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceLocatorInvokerInstrumentation.java index 8a7ec0926eed..1e243aa75d35 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceLocatorInvokerInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceLocatorInvokerInstrumentation.java @@ -5,19 +5,17 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.jaxrs.JaxrsContextPath; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.jboss.resteasy.core.ResourceLocatorInvoker; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("invokeOnTargetObject") .and(takesArgument(0, named("org.jboss.resteasy.spi.HttpRequest"))) .and(takesArgument(1, named("org.jboss.resteasy.spi.HttpResponse"))) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceMethodInvokerInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceMethodInvokerInstrumentation.java index 89533bb6ab75..4195bebadb61 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceMethodInvokerInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyResourceMethodInvokerInstrumentation.java @@ -5,16 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.jboss.resteasy.core.ResourceMethodInvoker; @@ -26,8 +24,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("invokeOnTarget") .and(takesArgument(0, named("org.jboss.resteasy.spi.HttpRequest"))) .and(takesArgument(1, named("org.jboss.resteasy.spi.HttpResponse"))) diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyRootNodeTypeInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyRootNodeTypeInstrumentation.java index afd19b37d884..ab16217538c1 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyRootNodeTypeInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyRootNodeTypeInstrumentation.java @@ -9,11 +9,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner; import net.bytebuddy.matcher.ElementMatcher; @@ -27,9 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("addInvoker") .and(takesArgument(0, String.class)) // package of ResourceInvoker was changed in reasteasy 4 @@ -39,8 +36,6 @@ public Map, String> transfor named("org.jboss.resteasy.core.ResourceInvoker") .or(named("org.jboss.resteasy.spi.ResourceInvoker")))), ResteasyRootNodeTypeInstrumentation.class.getName() + "$AddInvokerAdvice"); - - return transformers; } public static class AddInvokerAdvice { diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyServletContainerDispatcherInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyServletContainerDispatcherInstrumentation.java index 1a749dce0fac..6a4ef5d207e6 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyServletContainerDispatcherInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasyServletContainerDispatcherInstrumentation.java @@ -11,12 +11,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.jaxrs.JaxrsContextPath; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -28,8 +26,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("service")), ResteasyServletContainerDispatcherInstrumentation.class.getName() + "$ServiceAdvice"); } diff --git a/instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/InvocationListenerRegistryTypeInstrumentation.java b/instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/InvocationListenerRegistryTypeInstrumentation.java index bc9796b631ca..54c2c00912b4 100644 --- a/instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/InvocationListenerRegistryTypeInstrumentation.java +++ b/instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/InvocationListenerRegistryTypeInstrumentation.java @@ -5,15 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.axis2; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.instrumentation.axis2.TracingInvocationListenerFactory; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.axis2.jaxws.registry.InvocationListenerRegistry; @@ -25,8 +23,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isTypeInitializer(), InvocationListenerRegistryTypeInstrumentation.class.getName() + "$ClassInitializerAdvice"); } diff --git a/instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/EndpointImplTypeInstrumentation.java b/instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/EndpointImplTypeInstrumentation.java index 6fad185a80bf..a9b3c89d2e1f 100644 --- a/instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/EndpointImplTypeInstrumentation.java +++ b/instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/EndpointImplTypeInstrumentation.java @@ -5,14 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.cxf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.cxf.jaxws.EndpointImpl; @@ -25,8 +23,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("getServer").and(takesArgument(0, named(String.class.getName()))), EndpointImplTypeInstrumentation.class.getName() + "$GetServerAdvice"); } diff --git a/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/ServerTubeAssemblerContextInstrumentation.java b/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/ServerTubeAssemblerContextInstrumentation.java index e49013603120..70a28f1130bf 100644 --- a/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/ServerTubeAssemblerContextInstrumentation.java +++ b/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/ServerTubeAssemblerContextInstrumentation.java @@ -5,16 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.metro; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.sun.xml.ws.api.pipe.ServerTubeAssemblerContext; import com.sun.xml.ws.api.pipe.Tube; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -25,8 +23,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("createMonitoringTube").and(takesArgument(0, named("com.sun.xml.ws.api.pipe.Tube"))), ServerTubeAssemblerContextInstrumentation.class.getName() + "$AddTracingAdvice"); } diff --git a/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/SoapFaultBuilderInstrumentation.java b/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/SoapFaultBuilderInstrumentation.java index 96187ffad94d..514dab5747ad 100644 --- a/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/SoapFaultBuilderInstrumentation.java +++ b/instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/SoapFaultBuilderInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.metro; import static io.opentelemetry.javaagent.instrumentation.metro.MetroJaxWsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.sun.xml.ws.api.message.Packet; import com.sun.xml.ws.api.pipe.Fiber; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -26,8 +24,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("createSOAPFaultMessage") .and(takesArgument(0, named("com.sun.xml.ws.api.SOAPVersion"))) .and(takesArgument(1, named("com.sun.xml.ws.model.CheckedExceptionImpl"))) diff --git a/instrumentation/jaxws/jaxws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/v2_0/WebServiceProviderInstrumentation.java b/instrumentation/jaxws/jaxws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/v2_0/WebServiceProviderInstrumentation.java index ae7eeecdaa10..f0763365366f 100644 --- a/instrumentation/jaxws/jaxws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/v2_0/WebServiceProviderInstrumentation.java +++ b/instrumentation/jaxws/jaxws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/v2_0/WebServiceProviderInstrumentation.java @@ -17,13 +17,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.Collections; -import java.util.Map; import javax.xml.ws.Provider; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(nameMatches("invoke")).and(takesArguments(1)), WebServiceProviderInstrumentation.class.getName() + "$InvokeAdvice"); } diff --git a/instrumentation/jaxws/jws-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java b/instrumentation/jaxws/jws-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java index 983fc8d4bd84..8e0d13769418 100644 --- a/instrumentation/jaxws/jws-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java +++ b/instrumentation/jaxws/jws-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/jws/v1_1/JwsAnnotationsInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.methodIsDeclaredByType; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.jaxws.common.JaxWsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.inheritsAnnotation; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -20,12 +19,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.Map; import javax.jws.WebService; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -45,10 +43,10 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // JaxWS WebService methods are defined either by implementing an interface annotated // with @WebService or by any public method from a class annotated with @WebService. - return singletonMap( + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and( diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/ConnectionInstrumentation.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/ConnectionInstrumentation.java index 5a5f19c6987c..c5f15d41c619 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/ConnectionInstrumentation.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/ConnectionInstrumentation.java @@ -8,17 +8,15 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.sql.PreparedStatement; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -35,8 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( nameStartsWith("prepare") .and(takesArgument(0, String.class)) // Also include CallableStatement, which is a sub type of PreparedStatement diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DataSourceInstrumentation.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DataSourceInstrumentation.java index 58cd809a11e4..b926d3a4d2eb 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DataSourceInstrumentation.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DataSourceInstrumentation.java @@ -8,17 +8,15 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.instrumentation.jdbc.DataSourceTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import javax.sql.DataSource; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("getConnection"), DataSourceInstrumentation.class.getName() + "$GetConnectionAdvice"); } diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DriverInstrumentation.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DriverInstrumentation.java index 3f24e46eb68a..22e40bf47010 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DriverInstrumentation.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/DriverInstrumentation.java @@ -7,18 +7,16 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.sql.Connection; -import java.util.Map; import java.util.Properties; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -35,8 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( nameStartsWith("connect") .and(takesArgument(0, String.class)) .and(takesArgument(1, Properties.class)) diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/PreparedStatementInstrumentation.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/PreparedStatementInstrumentation.java index 71fc5dc9c8c3..37987e6a28ec 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/PreparedStatementInstrumentation.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/PreparedStatementInstrumentation.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.jdbc.JdbcInstrumenters.instrumenter; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -18,12 +17,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.sql.PreparedStatement; import java.sql.Statement; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( nameStartsWith("execute").and(takesArguments(0)).and(isPublic()), PreparedStatementInstrumentation.class.getName() + "$PreparedStatementAdvice"); } diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/StatementInstrumentation.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/StatementInstrumentation.java index 40bd38bbaf8d..5af1625e383d 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/StatementInstrumentation.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/StatementInstrumentation.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.jdbc.JdbcInstrumenters.instrumenter; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -18,11 +17,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.sql.Statement; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,8 +37,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( nameStartsWith("execute").and(takesArgument(0, String.class)).and(isPublic()), StatementInstrumentation.class.getName() + "$StatementAdvice"); } diff --git a/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisInstrumentationModule.java b/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisInstrumentationModule.java index 6a75e577facc..f9230e1f8e92 100644 --- a/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisInstrumentationModule.java +++ b/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisInstrumentationModule.java @@ -21,12 +21,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.jedis.v1_4.JedisClientTracer.CommandWithArgs; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import redis.clients.jedis.Connection; @@ -57,24 +55,22 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // FIXME: This instrumentation only incorporates sending the command, not processing the // result. - Map, String> transformers = new HashMap<>(); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("sendCommand")) .and(takesArguments(1)) .and(takesArgument(0, named("redis.clients.jedis.Protocol$Command"))), JedisInstrumentationModule.class.getName() + "$JedisNoArgsAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("sendCommand")) .and(takesArguments(2)) .and(takesArgument(0, named("redis.clients.jedis.Protocol$Command"))) .and(takesArgument(1, is(byte[][].class))), JedisInstrumentationModule.class.getName() + "$JedisArgsAdvice"); - return transformers; } } diff --git a/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisInstrumentationModule.java b/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisInstrumentationModule.java index 8d837fcfcab2..3423a2f4ae75 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisInstrumentationModule.java +++ b/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.jedis.v3_0.JedisClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.is; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -20,11 +19,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.jedis.v3_0.JedisClientTracer.CommandWithArgs; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import redis.clients.jedis.Connection; @@ -49,8 +47,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("sendCommand")) .and(takesArguments(2)) diff --git a/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8InstrumentationModule.java b/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8InstrumentationModule.java index 070cb3852f2d..e2dccfc76ae4 100644 --- a/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8InstrumentationModule.java +++ b/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/Jetty8InstrumentationModule.java @@ -12,6 +12,7 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; @@ -20,11 +21,8 @@ import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; import io.opentelemetry.javaagent.instrumentation.jetty.common.JettyHandlerInstrumentation; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -52,13 +50,10 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("dispatch").and(takesArguments(1)).and(takesArgument(0, Runnable.class)), Jetty8InstrumentationModule.class.getName() + "$SetExecuteRunnableStateAdvice"); - return transformers; } } diff --git a/instrumentation/jetty/jetty-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/common/JettyHandlerInstrumentation.java b/instrumentation/jetty/jetty-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/common/JettyHandlerInstrumentation.java index 921f6c670936..b5a0e19d4cdf 100644 --- a/instrumentation/jetty/jetty-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/common/JettyHandlerInstrumentation.java +++ b/instrumentation/jetty/jetty-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/common/JettyHandlerInstrumentation.java @@ -7,14 +7,12 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handle") .and(takesArgument(0, String.class)) .and(takesArgument(1, named("org.eclipse.jetty.server.Request"))) diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java index 8524ab0229e2..46af01bd3cef 100644 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java +++ b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java @@ -15,13 +15,11 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessageOperation; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.time.Instant; -import java.util.HashMap; -import java.util.Map; import javax.jms.Message; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,15 +36,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("receive").and(takesArguments(0).or(takesArguments(1))).and(isPublic()), JmsMessageConsumerInstrumentation.class.getName() + "$ConsumerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("receiveNoWait").and(takesArguments(0)).and(isPublic()), JmsMessageConsumerInstrumentation.class.getName() + "$ConsumerAdvice"); - return transformers; } public static class ConsumerAdvice { diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageListenerInstrumentation.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageListenerInstrumentation.java index 9e9f13624d51..8eae40d76b57 100644 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageListenerInstrumentation.java +++ b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageListenerInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.jms.JmsInstrumenters.listenerInstrumenter; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -17,11 +16,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessageOperation; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import javax.jms.Message; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("onMessage").and(takesArgument(0, named("javax.jms.Message"))).and(isPublic()), JmsMessageListenerInstrumentation.class.getName() + "$MessageListenerAdvice"); } diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageProducerInstrumentation.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageProducerInstrumentation.java index b66393e1498d..4100d5efa1c1 100644 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageProducerInstrumentation.java +++ b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageProducerInstrumentation.java @@ -16,16 +16,14 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessageOperation; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; -import java.util.Map; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -42,18 +40,16 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("send").and(takesArgument(0, named("javax.jms.Message"))).and(isPublic()), JmsMessageProducerInstrumentation.class.getName() + "$ProducerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("send") .and(takesArgument(0, named("javax.jms.Destination"))) .and(takesArgument(1, named("javax.jms.Message"))) .and(isPublic()), JmsMessageProducerInstrumentation.class.getName() + "$ProducerWithDestinationAdvice"); - return transformers; } public static class ProducerAdvice { diff --git a/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/ActionListenerImplInstrumentation.java b/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/ActionListenerImplInstrumentation.java index 1c33adfca986..17788668aa4b 100644 --- a/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/ActionListenerImplInstrumentation.java +++ b/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/ActionListenerImplInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.mojarra; import static io.opentelemetry.javaagent.instrumentation.mojarra.MojarraTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import javax.faces.event.ActionEvent; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("processAction"), ActionListenerImplInstrumentation.class.getName() + "$ProcessActionAdvice"); } diff --git a/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/RestoreViewPhaseInstrumentation.java b/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/RestoreViewPhaseInstrumentation.java index fd6f1f58db65..6b88280dc5e2 100644 --- a/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/RestoreViewPhaseInstrumentation.java +++ b/instrumentation/jsf/mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/RestoreViewPhaseInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.mojarra; import static io.opentelemetry.javaagent.instrumentation.mojarra.MojarraTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import javax.faces.context.FacesContext; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("execute").and(takesArgument(0, named("javax.faces.context.FacesContext"))), RestoreViewPhaseInstrumentation.class.getName() + "$ExecuteAdvice"); } diff --git a/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/ActionListenerImplInstrumentation.java b/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/ActionListenerImplInstrumentation.java index c257b57cef70..b89a5320a070 100644 --- a/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/ActionListenerImplInstrumentation.java +++ b/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/ActionListenerImplInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.myfaces; import static io.opentelemetry.javaagent.instrumentation.myfaces.MyFacesTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import javax.faces.event.ActionEvent; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("processAction"), ActionListenerImplInstrumentation.class.getName() + "$ProcessActionAdvice"); } diff --git a/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/RestoreViewExecutorInstrumentation.java b/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/RestoreViewExecutorInstrumentation.java index d2b5b23e3753..8a6889534c77 100644 --- a/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/RestoreViewExecutorInstrumentation.java +++ b/instrumentation/jsf/myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/RestoreViewExecutorInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.myfaces; import static io.opentelemetry.javaagent.instrumentation.myfaces.MyFacesTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import javax.faces.context.FacesContext; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("execute").and(takesArgument(0, named("javax.faces.context.FacesContext"))), RestoreViewExecutorInstrumentation.class.getName() + "$ExecuteAdvice"); } diff --git a/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/HttpJspPageInstrumentation.java b/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/HttpJspPageInstrumentation.java index 658e78a898f5..0aa170e06990 100644 --- a/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/HttpJspPageInstrumentation.java +++ b/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/HttpJspPageInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.jsp.JspTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -17,10 +16,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import javax.servlet.http.HttpServletRequest; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -37,8 +35,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("_jspService") .and(takesArgument(0, named("javax.servlet.http.HttpServletRequest"))) .and(takesArgument(1, named("javax.servlet.http.HttpServletResponse"))) diff --git a/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/JspCompilationContextInstrumentation.java b/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/JspCompilationContextInstrumentation.java index d1346116bd67..91f91cee693d 100644 --- a/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/JspCompilationContextInstrumentation.java +++ b/instrumentation/jsp-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsp/JspCompilationContextInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.jsp; import static io.opentelemetry.javaagent.instrumentation.jsp.JspTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -15,9 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.jasper.JspCompilationContext; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("compile").and(takesArguments(0)).and(isPublic()), JspCompilationContextInstrumentation.class.getName() + "$JasperJspCompilationContext"); } diff --git a/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaConsumerInstrumentation.java b/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaConsumerInstrumentation.java index d45a27cdfe55..9aa05bdfad06 100644 --- a/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaConsumerInstrumentation.java +++ b/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaConsumerInstrumentation.java @@ -14,12 +14,10 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Iterator; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.kafka.clients.consumer.ConsumerRecord; @@ -32,30 +30,28 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("records")) .and(takesArgument(0, String.class)) .and(returns(Iterable.class)), KafkaConsumerInstrumentation.class.getName() + "$IterableAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("records")) .and(takesArgument(0, named("org.apache.kafka.common.TopicPartition"))) .and(returns(List.class)), KafkaConsumerInstrumentation.class.getName() + "$ListAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("iterator")) .and(takesArguments(0)) .and(returns(Iterator.class)), KafkaConsumerInstrumentation.class.getName() + "$IteratorAdvice"); - return transformers; } public static class IterableAdvice { diff --git a/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaProducerInstrumentation.java b/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaProducerInstrumentation.java index 363118039cf4..993d51702146 100644 --- a/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaProducerInstrumentation.java +++ b/instrumentation/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/KafkaProducerInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.kafkaclients.KafkaProducerTracer.tracer; import static io.opentelemetry.javaagent.instrumentation.kafkaclients.TextMapInjectAdapter.SETTER; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,10 +15,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.kafka.clients.ApiVersions; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("send")) diff --git a/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSourceNodeRecordDeserializerInstrumentation.java b/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSourceNodeRecordDeserializerInstrumentation.java index 1a1201649dc6..309b577df2e7 100644 --- a/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSourceNodeRecordDeserializerInstrumentation.java +++ b/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/KafkaStreamsSourceNodeRecordDeserializerInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.kafkastreams; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -13,9 +12,8 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.kafka.clients.consumer.ConsumerRecord; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("deserialize")) diff --git a/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStartInstrumentation.java b/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStartInstrumentation.java index d6ed1dcdde20..f16cb41e1eaf 100644 --- a/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStartInstrumentation.java +++ b/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStartInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.kafkastreams.ContextScopeHolder.HOLDER; import static io.opentelemetry.javaagent.instrumentation.kafkastreams.KafkaStreamsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPackagePrivate; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,9 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.kafka.streams.processor.internals.StampedRecord; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPackagePrivate()) .and(named("nextRecord")) diff --git a/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStopInstrumentation.java b/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStopInstrumentation.java index 8e180c5f3dfb..e5f7bc7f94bf 100644 --- a/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStopInstrumentation.java +++ b/instrumentation/kafka-streams-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/StreamTaskStopInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.kafkastreams.ContextScopeHolder.HOLDER; import static io.opentelemetry.javaagent.instrumentation.kafkastreams.KafkaStreamsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,9 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("process")).and(takesArguments(0)), StreamTaskStopInstrumentation.class.getName() + "$StopSpanAdvice"); } diff --git a/instrumentation/khttp-0.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/khttp/KHttpInstrumentation.java b/instrumentation/khttp-0.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/khttp/KHttpInstrumentation.java index b34e29e3c5d7..e3448e6f2f87 100644 --- a/instrumentation/khttp-0.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/khttp/KHttpInstrumentation.java +++ b/instrumentation/khttp-0.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/khttp/KHttpInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.khttp.KHttpHeadersInjectAdapter.asWritable; import static io.opentelemetry.javaagent.instrumentation.khttp.KHttpTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -21,10 +20,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Map; import khttp.responses.Response; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +39,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(not(isAbstract())) .and(named("request")) diff --git a/instrumentation/kotlinx-coroutines/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationModule.java b/instrumentation/kotlinx-coroutines/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationModule.java index bbcf923d898b..ec52a5a7a3fa 100644 --- a/instrumentation/kotlinx-coroutines/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationModule.java +++ b/instrumentation/kotlinx-coroutines/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationModule.java @@ -12,12 +12,10 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import kotlin.coroutines.CoroutineContext; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -45,17 +43,15 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - final Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( (named("launch").or(named("launch$default"))) .and(takesArgument(1, named("kotlin.coroutines.CoroutineContext"))), KotlinCoroutinesInstrumentationModule.class.getName() + "$LaunchAdvice"); - transformers.put( + transformer.applyAdviceToMethod( (named("runBlocking").or(named("runBlocking$default"))) .and(takesArgument(0, named("kotlin.coroutines.CoroutineContext"))), KotlinCoroutinesInstrumentationModule.class.getName() + "$RunBlockingAdvice"); - return transformers; } } diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientInstrumentationModule.java b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientInstrumentationModule.java index 9a68fdb6434b..641391e09549 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientInstrumentationModule.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesClientInstrumentationModule.java @@ -19,12 +19,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import okhttp3.Call; @@ -49,25 +47,23 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isPublic().and(named("buildRequest")).and(takesArguments(10)), KubernetesClientInstrumentationModule.class.getName() + "$BuildRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("execute")) .and(takesArguments(2)) .and(takesArgument(0, named("okhttp3.Call"))), KubernetesClientInstrumentationModule.class.getName() + "$ExecuteAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("executeAsync")) .and(takesArguments(3)) .and(takesArgument(0, named("okhttp3.Call"))) .and(takesArgument(2, named("io.kubernetes.client.openapi.ApiCallback"))), KubernetesClientInstrumentationModule.class.getName() + "$ExecuteAsyncAdvice"); - return transformers; } } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncCommandsInstrumentation.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncCommandsInstrumentation.java index 22b2d931ad7d..170ea22ee90d 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncCommandsInstrumentation.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncCommandsInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.lettuce.v4_0.LettuceDatabaseClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -17,9 +16,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("dispatch")) .and(takesArgument(0, named("com.lambdaworks.redis.protocol.RedisCommand"))), diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceClientInstrumentation.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceClientInstrumentation.java index d18dbad7168f..85af43c731ce 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceClientInstrumentation.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceClientInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.lettuce.v4_0.LettuceConnectionDatabaseClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,9 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("connectStandalone")), LettuceClientInstrumentation.class.getName() + "$ConnectAdvice"); } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncCommandsInstrumentation.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncCommandsInstrumentation.java index a9ac5c9b2318..ff3e0399826d 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncCommandsInstrumentation.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncCommandsInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.lettuce.v5_0.LettuceDatabaseClientTracer.tracer; import static io.opentelemetry.javaagent.instrumentation.lettuce.v5_0.LettuceInstrumentationUtil.expectsResponse; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -18,9 +17,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -32,8 +30,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("dispatch")) .and(takesArgument(0, named("io.lettuce.core.protocol.RedisCommand"))), diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceClientInstrumentation.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceClientInstrumentation.java index 3e8522158fee..570695e8e46a 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceClientInstrumentation.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceClientInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.lettuce.v5_0.LettuceConnectionDatabaseClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPrivate; import static net.bytebuddy.matcher.ElementMatchers.nameEndsWith; @@ -21,9 +20,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -35,8 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPrivate()) .and(returns(named("io.lettuce.core.ConnectionFuture"))) diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceReactiveCommandsInstrumentation.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceReactiveCommandsInstrumentation.java index c1500092e729..c10598cf33f9 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceReactiveCommandsInstrumentation.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/rx/LettuceReactiveCommandsInstrumentation.java @@ -16,11 +16,9 @@ import io.lettuce.core.protocol.RedisCommand; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.function.Supplier; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import reactor.core.publisher.Flux; @@ -34,15 +32,14 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("createMono")) .and(takesArgument(0, Supplier.class)) .and(returns(named("reactor.core.publisher.Mono"))), LettuceReactiveCommandsInstrumentation.class.getName() + "$CreateMonoAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(nameStartsWith("create")) .and(nameEndsWith("Flux")) @@ -50,8 +47,6 @@ public Map, String> transfor .and(takesArgument(0, Supplier.class)) .and(returns(named("reactor.core.publisher.Flux"))), LettuceReactiveCommandsInstrumentation.class.getName() + "$CreateFluxAdvice"); - - return transformers; } public static class CreateMonoAdvice { diff --git a/instrumentation/lettuce/lettuce-5.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceInstrumentationModule.java b/instrumentation/lettuce/lettuce-5.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceInstrumentationModule.java index ff4bdfd4287e..e0cef2efaefc 100644 --- a/instrumentation/lettuce/lettuce-5.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceInstrumentationModule.java +++ b/instrumentation/lettuce/lettuce-5.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceInstrumentationModule.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isStatic; @@ -17,10 +16,9 @@ import io.lettuce.core.resource.DefaultClientResources; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -48,8 +46,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(isStatic()).and(named("builder")), LettuceInstrumentationModule.class.getName() + "$DefaultClientResourcesAdvice"); } diff --git a/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherInstrumentationModule.java b/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherInstrumentationModule.java index 81e9705dc4f2..638f08eff160 100644 --- a/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherInstrumentationModule.java +++ b/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherInstrumentationModule.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.liberty.dispatcher; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,9 +37,9 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // https://github.com/OpenLiberty/open-liberty/blob/master/dev/com.ibm.ws.transport.http/src/com/ibm/ws/http/dispatcher/internal/channel/HttpDispatcherLink.java - return singletonMap( + transformer.applyAdviceToMethod( named("sendResponse") .and(takesArgument(0, named("com.ibm.wsspi.http.channel.values.StatusCodes"))) .and(takesArgument(1, named(String.class.getName()))) diff --git a/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyInstrumentationModule.java b/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyInstrumentationModule.java index 5b9313475a4a..281e8766e6cf 100644 --- a/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyInstrumentationModule.java +++ b/instrumentation/liberty/liberty/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/LibertyInstrumentationModule.java @@ -12,10 +12,8 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -50,11 +48,9 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - + public void transform(TypeTransformer transformer) { // https://github.com/OpenLiberty/open-liberty/blob/master/dev/com.ibm.ws.webcontainer/src/com/ibm/ws/webcontainer/webapp/WebApp.java - transformers.put( + transformer.applyAdviceToMethod( named("handleRequest") .and(takesArgument(0, named("javax.servlet.ServletRequest"))) .and(takesArgument(1, named("javax.servlet.ServletResponse"))) @@ -62,11 +58,9 @@ public Map, String> transfor LibertyHandleRequestAdvice.class.getName()); // isForbidden is called from handleRequest - transformers.put( + transformer.applyAdviceToMethod( named("isForbidden").and(takesArgument(0, named(String.class.getName()))), LibertyStartSpanAdvice.class.getName()); - - return transformers; } } } diff --git a/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/CategoryInstrumentation.java b/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/CategoryInstrumentation.java index dd45f10d0d6e..776b9ced9b8d 100644 --- a/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/CategoryInstrumentation.java +++ b/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/CategoryInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.log4j.v1_2; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -14,11 +13,10 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.log4j.spi.LoggingEvent; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("callAppenders")) diff --git a/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/LoggingEventInstrumentation.java b/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/LoggingEventInstrumentation.java index 5f13c92b7b85..201c7d922df8 100644 --- a/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/LoggingEventInstrumentation.java +++ b/instrumentation/log4j/log4j-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v1_2/LoggingEventInstrumentation.java @@ -17,12 +17,10 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import java.util.HashMap; import java.util.Hashtable; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.log4j.MDC; @@ -35,10 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("getMDC")) @@ -46,11 +42,9 @@ public Map, String> transfor .and(takesArgument(0, String.class)), LoggingEventInstrumentation.class.getName() + "$GetMdcAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("getMDCCopy")).and(takesArguments(0)), LoggingEventInstrumentation.class.getName() + "$GetMdcCopyAdvice"); - - return transformers; } public static class GetMdcAdvice { diff --git a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java b/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java index c5f2b784da3b..75f185fc147c 100644 --- a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java +++ b/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/BugFixingInstrumentation.java @@ -11,11 +11,10 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Collections; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.logging.log4j.core.config.Property; @@ -33,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("injectContextData")) diff --git a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java b/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java index e0c551d5b14e..46fef0a57d74 100644 --- a/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java +++ b/instrumentation/log4j/log4j-2.13.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_13_2/Log4j2InstrumentationModule.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.log4j.v2_13_2; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.emptyMap; import static net.bytebuddy.matcher.ElementMatchers.named; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Arrays; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -55,9 +53,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // Nothing to transform, this type instrumentation is only used for injecting resources. - return emptyMap(); } } } diff --git a/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java b/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java index 85eba9b3cf8c..6006a4b6758c 100644 --- a/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java +++ b/instrumentation/log4j/log4j-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/v2_7/Log4j27InstrumentationModule.java @@ -17,11 +17,9 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner.Typing; import net.bytebuddy.matcher.ElementMatcher; @@ -51,8 +49,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(isStatic()) diff --git a/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggerInstrumentation.java b/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggerInstrumentation.java index fb50d3235a8d..0d0aa6c6e36b 100644 --- a/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggerInstrumentation.java +++ b/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggerInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.logback.v1_0; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,11 +14,10 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import io.opentelemetry.api.trace.Span; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("callAppenders")) diff --git a/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggingEventInstrumentation.java b/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggingEventInstrumentation.java index 79930360233f..57564051f6e9 100644 --- a/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggingEventInstrumentation.java +++ b/instrumentation/logback/logback-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/v1_0/LoggingEventInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.instrumentation.api.log.LoggingContextConstants.TRACE_ID; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -21,11 +20,11 @@ import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.instrumentation.logback.v1_0.internal.UnionMap; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import java.util.HashMap; import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner.Typing; import net.bytebuddy.matcher.ElementMatcher; @@ -42,8 +41,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("getMDCPropertyMap").or(named("getMdc"))) diff --git a/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java b/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java index e4ca18c23ffc..c58ebed69874 100644 --- a/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java +++ b/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java @@ -13,9 +13,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Method; -import java.util.Collections; -import java.util.Map; import java.util.Set; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -42,7 +41,7 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { ElementMatcher.Junction methodMatchers = null; for (String methodName : methodNames) { if (methodMatchers == null) { @@ -52,7 +51,7 @@ public Map, String> transformers() { } } - return Collections.singletonMap( + transformer.applyAdviceToMethod( methodMatchers, MethodInstrumentation.class.getName() + "$MethodAdvice"); } diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java index 8c32e994dd60..2fb62b4779e0 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.mongo.v3_1; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -19,10 +18,9 @@ import com.mongodb.event.CommandListener; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -53,8 +51,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")).and(takesArguments(0)), MongoClientInstrumentationModule.class.getName() + "$MongoClientAdvice"); } diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientInstrumentationModule.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientInstrumentationModule.java index 233a21e420f7..a5a13b6060ed 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientInstrumentationModule.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.mongo.v3_7; import static java.util.Arrays.asList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -20,12 +19,10 @@ import com.mongodb.event.CommandListener; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -59,8 +56,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")).and(takesArguments(0)), MongoClientInstrumentationModule.class.getName() + "$MongoClientAdvice"); } @@ -90,24 +87,22 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("openAsync")) .and(takesArgument(0, named("com.mongodb.async.SingleResultCallback"))), MongoClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg0Advice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("readAsync")) .and(takesArgument(1, named("com.mongodb.async.SingleResultCallback"))), MongoClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg1Advice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("writeAsync")) .and(takesArgument(1, named("com.mongodb.async.SingleResultCallback"))), MongoClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg1Advice"); - return transformers; } } @@ -120,8 +115,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("selectServerAsync")) diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientInstrumentationModule.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientInstrumentationModule.java index a77a9510c7c8..1d510b2e2bc7 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientInstrumentationModule.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.mongo.v4_0; import static java.util.Arrays.asList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -20,12 +19,10 @@ import com.mongodb.internal.async.SingleResultCallback; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -59,8 +56,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")).and(takesArguments(0)), MongoClientInstrumentationModule.class.getName() + "$MongoClientAdvice"); } @@ -90,24 +87,22 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("openAsync")) .and(takesArgument(0, named("com.mongodb.internal.async.SingleResultCallback"))), MongoClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg0Advice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("readAsync")) .and(takesArgument(1, named("com.mongodb.internal.async.SingleResultCallback"))), MongoClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg1Advice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("writeAsync")) .and(takesArgument(1, named("com.mongodb.internal.async.SingleResultCallback"))), MongoClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg1Advice"); - return transformers; } } @@ -119,8 +114,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("selectServerAsync")) diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientInstrumentationModule.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientInstrumentationModule.java index bc6649fd352a..80a52fb33550 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientInstrumentationModule.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.mongoasync.v3_3; import static java.util.Arrays.asList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresField; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -21,12 +20,10 @@ import com.mongodb.event.CommandListener; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -61,8 +58,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")).and(takesArguments(0)), MongoAsyncClientInstrumentationModule.class.getName() + "$MongoAsyncClientAdvice"); } @@ -92,27 +89,25 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("openAsync")) .and(takesArgument(0, named("com.mongodb.async.SingleResultCallback"))), MongoAsyncClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg0Advice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("readAsync")) .and(takesArgument(1, named("com.mongodb.async.SingleResultCallback"))), MongoAsyncClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg1Advice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("sendMessageAsync")) .and(takesArgument(2, named("com.mongodb.async.SingleResultCallback"))), MongoAsyncClientInstrumentationModule.class.getName() + "$SingleResultCallbackArg2Advice"); - return transformers; } } @@ -124,8 +119,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("selectServerAsync")) diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java index 47b8a43c5a51..151d18357db8 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.client.NettyHttpClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -17,11 +16,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.jboss.netty.channel.Channel; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("operationComplete")) .and(takesArgument(0, named("org.jboss.netty.channel.ChannelFuture"))), diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/DefaultChannelPipelineInstrumentation.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/DefaultChannelPipelineInstrumentation.java index 72e35a069f7a..9763b8283bd2 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/DefaultChannelPipelineInstrumentation.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/DefaultChannelPipelineInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.netty.v3_8; import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.NettyHttpServerTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("notifyHandlerException")) .and(takesArgument(1, named(Throwable.class.getName()))), diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java index 861c2ab7857b..f4b7b5facb6a 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java @@ -14,13 +14,11 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.jboss.netty.channel.Channel; @@ -38,14 +36,12 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("connect")) .and(returns(named("org.jboss.netty.channel.ChannelFuture"))), NettyChannelInstrumentation.class.getName() + "$ChannelConnectAdvice"); - return transformers; } public static class ChannelConnectAdvice { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelPipelineInstrumentation.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelPipelineInstrumentation.java index 08fa94aca3f7..173cb41c390b 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelPipelineInstrumentation.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelPipelineInstrumentation.java @@ -13,6 +13,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; @@ -22,10 +23,7 @@ import io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.HttpServerRequestTracingHandler; import io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.HttpServerResponseTracingHandler; import io.opentelemetry.javaagent.instrumentation.netty.v3_8.server.HttpServerTracingHandler; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.jboss.netty.channel.Channel; @@ -51,19 +49,17 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(nameStartsWith("add")) .and(takesArgument(1, named("org.jboss.netty.channel.ChannelHandler"))), NettyChannelPipelineInstrumentation.class.getName() + "$ChannelPipelineAdd2ArgsAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(nameStartsWith("add")) .and(takesArgument(2, named("org.jboss.netty.channel.ChannelHandler"))), NettyChannelPipelineInstrumentation.class.getName() + "$ChannelPipelineAdd3ArgsAdvice"); - return transformers; } /** diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/AbstractChannelHandlerContextInstrumentation.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/AbstractChannelHandlerContextInstrumentation.java index a38318cd3cfe..708cb21c5a04 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/AbstractChannelHandlerContextInstrumentation.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/AbstractChannelHandlerContextInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.netty.v4_0; import static io.opentelemetry.javaagent.instrumentation.netty.v4_0.server.NettyHttpServerTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("notifyHandlerException")) .and(takesArgument(0, named(Throwable.class.getName()))), diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelFutureListenerInstrumentation.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelFutureListenerInstrumentation.java index f0d10c1c3df1..dce336639e22 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelFutureListenerInstrumentation.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelFutureListenerInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.netty.v4_0.client.NettyHttpClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -18,9 +17,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -37,8 +35,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("operationComplete")) .and(takesArgument(0, named("io.netty.channel.ChannelFuture"))), diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelInstrumentation.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelInstrumentation.java index fb1fb4dd8ec8..99ce821c7cdf 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelInstrumentation.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/ChannelInstrumentation.java @@ -7,17 +7,15 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import io.netty.channel.Channel; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,8 +37,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(nameStartsWith("write")), ChannelInstrumentation.class.getName() + "$AttachContextAdvice"); } diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyChannelPipelineInstrumentation.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyChannelPipelineInstrumentation.java index cf4429a3e00a..755c503fc895 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyChannelPipelineInstrumentation.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyChannelPipelineInstrumentation.java @@ -24,6 +24,7 @@ import io.netty.util.Attribute; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.netty.v4_0.client.HttpClientRequestTracingHandler; @@ -32,10 +33,7 @@ import io.opentelemetry.javaagent.instrumentation.netty.v4_0.server.HttpServerRequestTracingHandler; import io.opentelemetry.javaagent.instrumentation.netty.v4_0.server.HttpServerResponseTracingHandler; import io.opentelemetry.javaagent.instrumentation.netty.v4_0.server.HttpServerTracingHandler; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -52,17 +50,15 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(nameStartsWith("add")) .and(takesArgument(2, named("io.netty.channel.ChannelHandler"))), NettyChannelPipelineInstrumentation.class.getName() + "$ChannelPipelineAddAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("connect")).and(returns(named("io.netty.channel.ChannelFuture"))), NettyChannelPipelineInstrumentation.class.getName() + "$ChannelPipelineConnectAdvice"); - return transformers; } /** diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyFutureInstrumentation.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyFutureInstrumentation.java index 6e6ce264decb..91f588de8864 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyFutureInstrumentation.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/NettyFutureInstrumentation.java @@ -16,13 +16,11 @@ import io.netty.util.concurrent.GenericFutureListener; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,25 +37,23 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("addListener")) .and(takesArgument(0, named("io.netty.util.concurrent.GenericFutureListener"))), NettyFutureInstrumentation.class.getName() + "$AddListenerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("addListeners")).and(takesArgument(0, isArray())), NettyFutureInstrumentation.class.getName() + "$AddListenersAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("removeListener")) .and(takesArgument(0, named("io.netty.util.concurrent.GenericFutureListener"))), NettyFutureInstrumentation.class.getName() + "$RemoveListenerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("removeListeners")).and(takesArgument(0, isArray())), NettyFutureInstrumentation.class.getName() + "$RemoveListenersAdvice"); - return transformers; } public static class AddListenerAdvice { diff --git a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/AbstractChannelHandlerContextInstrumentation.java b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/AbstractChannelHandlerContextInstrumentation.java index 9dd58556962e..a0eb6fa1f98d 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/AbstractChannelHandlerContextInstrumentation.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/AbstractChannelHandlerContextInstrumentation.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.netty.v4_1; import static io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.NettyHttpServerTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("invokeExceptionCaught")) .and(takesArgument(0, named(Throwable.class.getName()))), diff --git a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelFutureListenerInstrumentation.java b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelFutureListenerInstrumentation.java index ae48e4acad63..44765bc57af7 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelFutureListenerInstrumentation.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelFutureListenerInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.netty.v4_1.client.NettyHttpClientTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -19,9 +18,8 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.netty.v4_1.AttributeKeys; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("operationComplete")) .and(takesArgument(0, named("io.netty.channel.ChannelFuture"))), diff --git a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelInstrumentation.java b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelInstrumentation.java index 6bb1c44dbb82..ea0cee294656 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelInstrumentation.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/ChannelInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -15,10 +14,9 @@ import io.netty.channel.Channel; import io.opentelemetry.instrumentation.netty.v4_1.AttributeKeys; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(nameStartsWith("write")), ChannelInstrumentation.class.getName() + "$AttachContextAdvice"); } diff --git a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyChannelPipelineInstrumentation.java b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyChannelPipelineInstrumentation.java index bf665ef6503f..149f4c4e7e00 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyChannelPipelineInstrumentation.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyChannelPipelineInstrumentation.java @@ -26,6 +26,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.netty.v4_1.AttributeKeys; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.netty.v4_1.client.HttpClientRequestTracingHandler; @@ -34,10 +35,7 @@ import io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.HttpServerRequestTracingHandler; import io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.HttpServerResponseTracingHandler; import io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.HttpServerTracingHandler; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -54,18 +52,16 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(nameStartsWith("add")) .and(takesArgument(1, String.class)) .and(takesArgument(2, named("io.netty.channel.ChannelHandler"))), NettyChannelPipelineInstrumentation.class.getName() + "$ChannelPipelineAddAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("connect")).and(returns(named("io.netty.channel.ChannelFuture"))), NettyChannelPipelineInstrumentation.class.getName() + "$ChannelPipelineConnectAdvice"); - return transformers; } /** diff --git a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyFutureInstrumentation.java b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyFutureInstrumentation.java index 12db0f95c480..87ee4a75a2a3 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyFutureInstrumentation.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyFutureInstrumentation.java @@ -16,13 +16,11 @@ import io.netty.util.concurrent.GenericFutureListener; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,25 +37,23 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("addListener")) .and(takesArgument(0, named("io.netty.util.concurrent.GenericFutureListener"))), NettyFutureInstrumentation.class.getName() + "$AddListenerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("addListeners")).and(takesArgument(0, isArray())), NettyFutureInstrumentation.class.getName() + "$AddListenersAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("removeListener")) .and(takesArgument(0, named("io.netty.util.concurrent.GenericFutureListener"))), NettyFutureInstrumentation.class.getName() + "$RemoveListenerAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("removeListeners")).and(takesArgument(0, isArray())), NettyFutureInstrumentation.class.getName() + "$RemoveListenersAdvice"); - return transformers; } public static class AddListenerAdvice { diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2InstrumentationModule.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2InstrumentationModule.java index d23e25529122..98c755bbbe03 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2InstrumentationModule.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2InstrumentationModule.java @@ -14,11 +14,9 @@ import com.squareup.okhttp.OkHttpClient; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), OkHttp2InstrumentationModule.class.getName() + "$OkHttp2ClientAdvice"); } } diff --git a/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3InstrumentationModule.java b/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3InstrumentationModule.java index 3cfbac680e36..987fb54f3729 100644 --- a/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3InstrumentationModule.java +++ b/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3InstrumentationModule.java @@ -6,18 +6,16 @@ package io.opentelemetry.javaagent.instrumentation.okhttp.v3_0; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import okhttp3.OkHttpClient; @@ -41,8 +39,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), OkHttp3InstrumentationModule.class.getName() + "$OkHttp3Advice"); } } diff --git a/instrumentation/opentelemetry-annotations-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/otelannotations/WithSpanInstrumentation.java b/instrumentation/opentelemetry-annotations-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/otelannotations/WithSpanInstrumentation.java index d06ae0c742fd..6b8f1a88a56e 100644 --- a/instrumentation/opentelemetry-annotations-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/otelannotations/WithSpanInstrumentation.java +++ b/instrumentation/opentelemetry-annotations-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/otelannotations/WithSpanInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.otelannotations; import static io.opentelemetry.javaagent.instrumentation.otelannotations.WithSpanTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; @@ -20,6 +19,7 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.config.Config; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.tooling.config.MethodsConfigurationParser; import java.lang.reflect.Method; @@ -55,8 +55,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( annotatedMethodMatcher.and(not(excludedMethodsMatcher)), WithSpanInstrumentation.class.getName() + "$WithSpanAdvice"); } diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextInstrumentation.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextInstrumentation.java index 0bf67d05ca48..916632cf5661 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextInstrumentation.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextInstrumentation.java @@ -12,11 +12,9 @@ import application.io.opentelemetry.context.Context; import application.io.opentelemetry.context.ContextStorage; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isStatic()).and(named("root")), ContextInstrumentation.class.getName() + "$GetAdvice"); } diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextStorageInstrumentation.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextStorageInstrumentation.java index e48bcfef5ae9..3cae7ec1b7dc 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextStorageInstrumentation.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/ContextStorageInstrumentation.java @@ -11,11 +11,9 @@ import application.io.opentelemetry.context.ContextStorage; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -33,8 +31,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isStatic()).and(named("get")), ContextStorageInstrumentation.class.getName() + "$GetAdvice"); } diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java index 8cfb5e816f1e..ee4c2f9bfccd 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java @@ -11,10 +11,8 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -26,8 +24,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isStatic()).and(named("get")).and(takesArguments(0)), OpenTelemetryInstrumentation.class.getName() + "$GetGlobalOpenTelemetryAdvice"); } diff --git a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/SpanInstrumentation.java b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/SpanInstrumentation.java index 5d6668d5432c..3e1675e42fd2 100644 --- a/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/SpanInstrumentation.java +++ b/instrumentation/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/SpanInstrumentation.java @@ -12,11 +12,9 @@ import application.io.opentelemetry.api.trace.Span; import application.io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isStatic()).and(named("create")), SpanInstrumentation.class.getName() + "$CreateAdvice"); } diff --git a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java index e6850ec88ea8..915f635034e3 100644 --- a/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java +++ b/instrumentation/opentelemetry-api-metrics-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/metrics/OpenTelemetryMetricsInstrumentation.java @@ -11,11 +11,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.metrics.bridge.ApplicationMeterProvider; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isStatic()).and(named("get")).and(takesArguments(0)), OpenTelemetryMetricsInstrumentation.class.getName() + "$GetGlobalMetricsAdvice"); } diff --git a/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiInstrumentationModule.java b/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiInstrumentationModule.java index b497f2589a8c..8b3f650f47d6 100644 --- a/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiInstrumentationModule.java +++ b/instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiInstrumentationModule.java @@ -16,11 +16,9 @@ import io.opentelemetry.instrumentation.oshi.SystemMetrics; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -48,8 +46,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(isStatic()).and(named("getCurrentPlatformEnum")), OshiInstrumentationModule.class.getName() + "$OshiInstrumentationAdvice"); } diff --git a/instrumentation/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/AsyncHttpClientInstrumentation.java b/instrumentation/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/AsyncHttpClientInstrumentation.java index 87bfcffda3ba..55aa12ff4b37 100644 --- a/instrumentation/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/AsyncHttpClientInstrumentation.java +++ b/instrumentation/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/AsyncHttpClientInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,8 +15,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -44,8 +42,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("execute")) .and(takesArguments(2)) diff --git a/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/PlayInstrumentationModule.java b/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/PlayInstrumentationModule.java index 3ba45f8983d3..70d45ed3482a 100644 --- a/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/PlayInstrumentationModule.java +++ b/instrumentation/play/play-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/PlayInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -16,9 +15,8 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -46,8 +44,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("apply") .and(takesArgument(0, named("play.api.mvc.Request"))) .and(returns(named("scala.concurrent.Future"))), diff --git a/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayInstrumentationModule.java b/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayInstrumentationModule.java index f14be413952c..cbf62c17aeec 100644 --- a/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayInstrumentationModule.java +++ b/instrumentation/play/play-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/PlayInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -16,9 +15,8 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -46,8 +44,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("apply") .and(takesArgument(0, named("play.api.mvc.Request"))) .and(returns(named("scala.concurrent.Future"))), diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelInstrumentation.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelInstrumentation.java index b1fc9dc8685d..6f6742f51c7a 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelInstrumentation.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelInstrumentation.java @@ -30,15 +30,14 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.io.IOException; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -55,10 +54,9 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - // We want the advice applied in a specific order, so use an ordered map. - Map, String> transformers = new LinkedHashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + // these transformations need to be applied in a specific order + transformer.applyAdviceToMethod( isMethod() .and( not( @@ -70,19 +68,18 @@ public Map, String> transfor .and(isPublic()) .and(canThrow(IOException.class).or(canThrow(InterruptedException.class))), RabbitChannelInstrumentation.class.getName() + "$ChannelMethodAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("basicPublish")).and(takesArguments(6)), RabbitChannelInstrumentation.class.getName() + "$ChannelPublishAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("basicGet")).and(takesArgument(0, String.class)), RabbitChannelInstrumentation.class.getName() + "$ChannelGetAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("basicConsume")) .and(takesArgument(0, String.class)) .and(takesArgument(6, named("com.rabbitmq.client.Consumer"))), RabbitChannelInstrumentation.class.getName() + "$ChannelConsumeAdvice"); - return transformers; } // TODO Why do we start span here and not in ChannelPublishAdvice below? diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java index de32f5a86dd9..f30ab32ce28e 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitCommandInstrumentation.java @@ -9,17 +9,15 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.rabbitmq.RabbitCommandInstrumentation.SpanHolder.CURRENT_RABBIT_CONTEXT; import static io.opentelemetry.javaagent.instrumentation.rabbitmq.RabbitTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; import com.rabbitmq.client.Command; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -36,8 +34,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), RabbitCommandInstrumentation.class.getName() + "$CommandConstructorAdvice"); } diff --git a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ContinuationInstrumentation.java b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ContinuationInstrumentation.java index 048f22157fb6..671ae7ca2c31 100644 --- a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ContinuationInstrumentation.java +++ b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ContinuationInstrumentation.java @@ -7,15 +7,13 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import ratpack.func.Block; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("resume").and(takesArgument(0, named("ratpack.func.Block"))), ContinuationInstrumentation.class.getName() + "$ResumeAdvice"); } diff --git a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/DefaultExecutionInstrumentation.java b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/DefaultExecutionInstrumentation.java index 251eec56fea8..805841ec1e93 100644 --- a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/DefaultExecutionInstrumentation.java +++ b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/DefaultExecutionInstrumentation.java @@ -5,15 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.ratpack; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import ratpack.exec.internal.Continuation; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( nameStartsWith("delimit") // include delimitStream .and(takesArgument(0, named("ratpack.func.Action"))) .and(takesArgument(1, named("ratpack.func.Action"))), diff --git a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java index ed48828298ff..6db741cc3be1 100644 --- a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java +++ b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java @@ -8,17 +8,15 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.ratpack.RatpackTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Optional; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import ratpack.handling.Context; @@ -36,8 +34,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("error") .and(takesArgument(0, named("ratpack.handling.Context"))) .and(takesArgument(1, Throwable.class)), diff --git a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerRegistryInstrumentation.java b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerRegistryInstrumentation.java index dc5b4cebcd5e..a6f915263fe0 100644 --- a/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerRegistryInstrumentation.java +++ b/instrumentation/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/ServerRegistryInstrumentation.java @@ -5,15 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.ratpack; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isStatic; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import ratpack.handling.HandlerDecorator; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isStatic()).and(named("buildBaseRegistry")), ServerRegistryInstrumentation.class.getName() + "$BuildAdvice"); } diff --git a/instrumentation/reactor-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/ReactorInstrumentationModule.java b/instrumentation/reactor-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/ReactorInstrumentationModule.java index 3abe01d047f3..a181aa41faf2 100644 --- a/instrumentation/reactor-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/ReactorInstrumentationModule.java +++ b/instrumentation/reactor-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/ReactorInstrumentationModule.java @@ -6,16 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.reactor; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer; import static net.bytebuddy.matcher.ElementMatchers.named; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,8 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isTypeInitializer().or(named("resetOnEachOperator")), ReactorHooksAdvice.class.getName()); } } diff --git a/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyInstrumentationModule.java b/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyInstrumentationModule.java index 3c5a5ac6d541..e126dbf00012 100644 --- a/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyInstrumentationModule.java +++ b/instrumentation/reactor-netty/reactor-netty-0.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v0_9/ReactorNettyInstrumentationModule.java @@ -20,14 +20,12 @@ import io.opentelemetry.instrumentation.netty.v4_1.AttributeKeys; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.function.BiConsumer; import java.util.function.BiFunction; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import reactor.core.publisher.Mono; @@ -67,45 +65,43 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isStatic().and(namedOneOf("create", "newConnection", "from")), ReactorNettyInstrumentationModule.class.getName() + "$CreateAdvice"); // advice classes below expose current context in doOn*/doAfter* callbacks - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(namedOneOf("doOnRequest", "doAfterRequest")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("doOnRequestError")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnRequestErrorAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(namedOneOf("doOnResponse", "doAfterResponse")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnResponseAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("doOnResponseError")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnResponseErrorAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("doOnError")) .and(takesArguments(2)) .and(takesArgument(0, BiConsumer.class)) .and(takesArgument(1, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnErrorAdvice"); - return transformers; } } diff --git a/instrumentation/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyInstrumentationModule.java b/instrumentation/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyInstrumentationModule.java index 1707bcbf19af..54cc6810d150 100644 --- a/instrumentation/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyInstrumentationModule.java +++ b/instrumentation/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyInstrumentationModule.java @@ -19,14 +19,12 @@ import io.opentelemetry.instrumentation.netty.v4_1.AttributeKeys; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Function; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import reactor.core.publisher.Mono; @@ -66,45 +64,43 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isStatic().and(namedOneOf("create", "newConnection", "from")), ReactorNettyInstrumentationModule.class.getName() + "$CreateAdvice"); // advice classes below expose current context in doOn*/doAfter* callbacks - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(namedOneOf("doOnRequest", "doAfterRequest")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("doOnRequestError")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnRequestErrorAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(namedOneOf("doOnResponse", "doAfterResponseSuccess", "doOnRedirect")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnResponseAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("doOnResponseError")) .and(takesArguments(1)) .and(takesArgument(0, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnResponseErrorAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isPublic() .and(named("doOnError")) .and(takesArguments(2)) .and(takesArgument(0, BiConsumer.class)) .and(takesArgument(1, BiConsumer.class)), ReactorNettyInstrumentationModule.class.getName() + "$OnErrorAdvice"); - return transformers; } } diff --git a/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaInstrumentationModule.java b/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaInstrumentationModule.java index 5d40cf59ae8f..83eb6d4a5278 100644 --- a/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaInstrumentationModule.java +++ b/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/RediscalaInstrumentationModule.java @@ -11,7 +11,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.rediscala.RediscalaClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -23,10 +22,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import redis.RedisCommand; @@ -64,8 +62,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("send")) diff --git a/instrumentation/redisson-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumentation.java b/instrumentation/redisson-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumentation.java index 78de772032ea..6fc7b08257cf 100644 --- a/instrumentation/redisson-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumentation.java +++ b/instrumentation/redisson-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.redisson.RedissonClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -17,10 +16,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.redisson.client.RedisConnection; @@ -44,8 +42,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("send")), RedissonInstrumentation.class.getName() + "$RedissonAdvice"); } diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientInstrumentationModule.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientInstrumentationModule.java index 1bc4f45e40dd..102bef7d5f54 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientInstrumentationModule.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.rmi.client.RmiClientTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -18,12 +17,11 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.lang.reflect.Method; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -46,8 +44,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("invoke")) .and(takesArgument(0, named("java.rmi.Remote"))) diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java index 11d5ee61bfa1..d4e71c09d686 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.rmi.context.ContextPropagator.PROPAGATOR; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -15,13 +14,12 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.rmi.server.ObjID; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import sun.rmi.transport.Connection; @@ -55,8 +53,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor() .and(takesArgument(0, named("sun.rmi.transport.Connection"))) .and(takesArgument(1, named("java.rmi.server.ObjID"))), diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java index c69d10564cd6..06172b29bf6e 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java @@ -7,16 +7,14 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.rmi.context.ContextPropagator.CONTEXT_CALL_ID; -import static java.util.Collections.singletonMap; 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.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import sun.rmi.transport.Target; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isStatic()) .and(named("getTarget")) diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerInstrumentation.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerInstrumentation.java index 88e296719826..4a3cf9b3c30c 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerInstrumentation.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerInstrumentation.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.instrumentation.api.rmi.ThreadLocalContext.THREAD_LOCAL_CONTEXT; import static io.opentelemetry.javaagent.instrumentation.rmi.server.RmiServerTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isStatic; @@ -21,13 +20,12 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; import java.rmi.server.RemoteServer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -50,8 +48,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(not(isStatic())), RmiServerInstrumentation.class.getName() + "$ServerAdvice"); } diff --git a/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqConsumerInstrumentation.java b/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqConsumerInstrumentation.java index 169c693aaeec..904f0ae16dfc 100644 --- a/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqConsumerInstrumentation.java +++ b/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqConsumerInstrumentation.java @@ -5,15 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.rocketmq; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("start")).and(takesArguments(0)), RocketMqConsumerInstrumentation.class.getName() + "$AdviceStart"); } diff --git a/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqProducerInstrumentation.java b/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqProducerInstrumentation.java index 52b6c5171817..dc9b836e772e 100644 --- a/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqProducerInstrumentation.java +++ b/instrumentation/rocketmq-client-4.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmq/RocketMqProducerInstrumentation.java @@ -5,15 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.rocketmq; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl; @@ -27,8 +25,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("start")).and(takesArguments(0)), RocketMqProducerInstrumentation.class.getName() + "$AdviceStart"); } diff --git a/instrumentation/rxjava/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java b/instrumentation/rxjava/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java index d93e348587ce..e4ad4bc33fed 100644 --- a/instrumentation/rxjava/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java +++ b/instrumentation/rxjava/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java @@ -11,12 +11,11 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.reactivex.plugins.RxJavaPlugins; import java.util.Collections; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +39,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod(), RxJava2InstrumentationModule.class.getName() + "$RxJavaPluginsAdvice"); } } diff --git a/instrumentation/rxjava/rxjava-3.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3InstrumentationModule.java b/instrumentation/rxjava/rxjava-3.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3InstrumentationModule.java index 7cc5064603af..a69eeda8930e 100644 --- a/instrumentation/rxjava/rxjava-3.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3InstrumentationModule.java +++ b/instrumentation/rxjava/rxjava-3.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava3/RxJava3InstrumentationModule.java @@ -11,12 +11,11 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.reactivex.rxjava3.plugins.RxJavaPlugins; import java.util.Collections; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +39,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod(), RxJava3InstrumentationModule.class.getName() + "$RxJavaPluginsAdvice"); } } diff --git a/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java b/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java index b4565ff0b43a..063e8d4f1570 100644 --- a/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java +++ b/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java @@ -10,15 +10,13 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.concurrent.ExecutorInstrumentationUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import scala.concurrent.forkjoin.ForkJoinTask; @@ -32,21 +30,19 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("execute") .and(takesArgument(0, named(ScalaForkJoinTaskInstrumentation.TASK_CLASS_NAME))), ScalaForkJoinPoolInstrumentation.class.getName() + "$SetScalaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("submit") .and(takesArgument(0, named(ScalaForkJoinTaskInstrumentation.TASK_CLASS_NAME))), ScalaForkJoinPoolInstrumentation.class.getName() + "$SetScalaForkJoinStateAdvice"); - transformers.put( + transformer.applyAdviceToMethod( nameMatches("invoke") .and(takesArgument(0, named(ScalaForkJoinTaskInstrumentation.TASK_CLASS_NAME))), ScalaForkJoinPoolInstrumentation.class.getName() + "$SetScalaForkJoinStateAdvice"); - return transformers; } public static class SetScalaForkJoinStateAdvice { diff --git a/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinTaskInstrumentation.java b/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinTaskInstrumentation.java index 4693d80c2b3d..545d318e8fc9 100644 --- a/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinTaskInstrumentation.java +++ b/instrumentation/scala-executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinTaskInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -15,14 +14,13 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.concurrent.AdviceUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import java.util.concurrent.Callable; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import scala.concurrent.forkjoin.ForkJoinPool; @@ -49,8 +47,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("exec").and(takesArguments(0)).and(not(isAbstract())), ScalaForkJoinTaskInstrumentation.class.getName() + "$ForkJoinTaskAdvice"); } diff --git a/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/HttpServletResponseInstrumentation.java b/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/HttpServletResponseInstrumentation.java index 24bd0ed7e58a..e3fdf1dbb15c 100644 --- a/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/HttpServletResponseInstrumentation.java +++ b/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/HttpServletResponseInstrumentation.java @@ -13,14 +13,12 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import java.util.HashMap; -import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -47,15 +45,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( namedOneOf("sendError", "setStatus"), HttpServletResponseInstrumentation.class.getName() + "$Servlet2ResponseStatusAdvice"); - transformers.put( + transformer.applyAdviceToMethod( named("sendRedirect"), HttpServletResponseInstrumentation.class.getName() + "$Servlet2ResponseRedirectAdvice"); - return transformers; } public static class Servlet2ResponseRedirectAdvice { diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/async/AsyncContextInstrumentation.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/async/AsyncContextInstrumentation.java index 86963d1bcf20..6acb528a5531 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/async/AsyncContextInstrumentation.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/async/AsyncContextInstrumentation.java @@ -7,14 +7,12 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,7 +36,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap(isMethod().and(isPublic()).and(named("dispatch")), adviceClassName); + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(isPublic()).and(named("dispatch")), adviceClassName); } } diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/response/HttpServletResponseInstrumentation.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/response/HttpServletResponseInstrumentation.java index 7f24bebfbf55..53838e7e3959 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/response/HttpServletResponseInstrumentation.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/response/HttpServletResponseInstrumentation.java @@ -8,12 +8,10 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -37,7 +35,7 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap(namedOneOf("sendError", "sendRedirect"), adviceClassName); + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod(namedOneOf("sendError", "sendRedirect"), adviceClassName); } } diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/service/ServletAndFilterInstrumentation.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/service/ServletAndFilterInstrumentation.java index 24d48ae10e77..f1798bfd6c31 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/service/ServletAndFilterInstrumentation.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/common/service/ServletAndFilterInstrumentation.java @@ -13,9 +13,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -51,24 +49,22 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( namedOneOf("doFilter", "service") .and(takesArgument(0, named(basePackageName + ".ServletRequest"))) .and(takesArgument(1, named(basePackageName + ".ServletResponse"))) .and(isPublic()), adviceClassName); if (servletInitAdviceClassName != null) { - transformers.put( + transformer.applyAdviceToMethod( named("init").and(takesArgument(0, named(basePackageName + ".ServletConfig"))), servletInitAdviceClassName); } if (filterInitAdviceClassName != null) { - transformers.put( + transformer.applyAdviceToMethod( named("init").and(takesArgument(0, named(basePackageName + ".FilterConfig"))), filterInitAdviceClassName); } - return transformers; } } diff --git a/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkInstrumentationModule.java b/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkInstrumentationModule.java index 487edb9ce429..db4b182211fa 100644 --- a/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkInstrumentationModule.java +++ b/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.sparkjava; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -16,11 +15,10 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import spark.routematch.RouteMatch; @@ -44,8 +42,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("find") .and(takesArgument(0, named("spark.route.HttpMethod"))) .and(returns(named("spark.routematch.RouteMatch"))) diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/StepBuilderInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/StepBuilderInstrumentation.java index adb4a3eabbcf..f35c99705a29 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/StepBuilderInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/chunk/StepBuilderInstrumentation.java @@ -5,18 +5,16 @@ package io.opentelemetry.javaagent.instrumentation.spring.batch.chunk; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.spring.batch.ContextAndScope; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.core.scope.context.ChunkContext; @@ -33,8 +31,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("build").and(isPublic()).and(takesArguments(0)), this.getClass().getName() + "$BuildAdvice"); } diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/ChunkOrientedTaskletInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/ChunkOrientedTaskletInstrumentation.java index 148c9cf48118..60c428ef2cc6 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/ChunkOrientedTaskletInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/ChunkOrientedTaskletInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.spring.batch.SpringBatchInstrumentationConfig.shouldTraceItems; import static io.opentelemetry.javaagent.instrumentation.spring.batch.item.ItemTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -16,9 +15,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.core.scope.context.ChunkContext; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isPublic() .and(named("execute")) .and(takesArguments(2)) diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/JsrChunkProcessorInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/JsrChunkProcessorInstrumentation.java index d27d514253dc..465f81f67955 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/JsrChunkProcessorInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/JsrChunkProcessorInstrumentation.java @@ -14,10 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -28,18 +26,16 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isProtected().and(named("doProvide")).and(takesArguments(2)), this.getClass().getName() + "$ProvideAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isProtected().and(named("doTransform")).and(takesArguments(1)), this.getClass().getName() + "$TransformAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isProtected().and(named("doPersist")).and(takesArguments(2)), this.getClass().getName() + "$PersistAdvice"); - return transformers; } public static class ProvideAdvice { diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProcessorInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProcessorInstrumentation.java index 15acf894d181..8cd0aa6f5efb 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProcessorInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProcessorInstrumentation.java @@ -14,10 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.HashMap; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.item.ItemProcessor; @@ -30,15 +28,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isProtected().and(named("doProcess")).and(takesArguments(1)), this.getClass().getName() + "$ProcessAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isProtected().and(named("doWrite")).and(takesArguments(1)), this.getClass().getName() + "$WriteAdvice"); - return transformers; } public static class ProcessAdvice { diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProviderInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProviderInstrumentation.java index 6ed87cc4ef14..4b7f617be14a 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProviderInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/item/SimpleChunkProviderInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.spring.batch.SpringBatchInstrumentationConfig.shouldTraceItems; import static io.opentelemetry.javaagent.instrumentation.spring.batch.item.ItemTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -15,9 +14,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isProtected().and(named("doRead")).and(takesArguments(0)), this.getClass().getName() + "$ReadAdvice"); } diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobBuilderHelperInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobBuilderHelperInstrumentation.java index 521225522445..b66b7c5b7fd8 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobBuilderHelperInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobBuilderHelperInstrumentation.java @@ -5,19 +5,17 @@ package io.opentelemetry.javaagent.instrumentation.spring.batch.job; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.spring.batch.ContextAndScope; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.core.JobExecution; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("enhance") .and(isProtected()) .and(takesArguments(1)) diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobFactoryBeanInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobFactoryBeanInstrumentation.java index a0a66d68831d..c30e4b6f4c7d 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobFactoryBeanInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobFactoryBeanInstrumentation.java @@ -13,13 +13,11 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.spring.batch.ContextAndScope; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.core.JobExecution; @@ -34,16 +32,14 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put(isConstructor(), this.getClass().getName() + "$InitAdvice"); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod(isConstructor(), this.getClass().getName() + "$InitAdvice"); + transformer.applyAdviceToMethod( isMethod() .and(named("setJobExecutionListeners")) .and(takesArguments(1)) .and(takesArgument(0, isArray())), this.getClass().getName() + "$SetListenersAdvice"); - return transformers; } public static class InitAdvice { diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobParserJobFactoryBeanInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobParserJobFactoryBeanInstrumentation.java index 10065f9fd6aa..08eff780a47b 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobParserJobFactoryBeanInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/job/JobParserJobFactoryBeanInstrumentation.java @@ -13,13 +13,11 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.spring.batch.ContextAndScope; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.core.JobExecution; @@ -34,16 +32,14 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put(isConstructor(), this.getClass().getName() + "$InitAdvice"); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod(isConstructor(), this.getClass().getName() + "$InitAdvice"); + transformer.applyAdviceToMethod( isMethod() .and(named("setJobExecutionListeners")) .and(takesArguments(1)) .and(takesArgument(0, isArray())), this.getClass().getName() + "$SetListenersAdvice"); - return transformers; } public static class InitAdvice { diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/step/StepBuilderHelperInstrumentation.java b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/step/StepBuilderHelperInstrumentation.java index 4468eba5358f..5de17e1cfa84 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/step/StepBuilderHelperInstrumentation.java +++ b/instrumentation/spring/spring-batch-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/batch/step/StepBuilderHelperInstrumentation.java @@ -5,19 +5,17 @@ package io.opentelemetry.javaagent.instrumentation.spring.batch.step; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.spring.batch.ContextAndScope; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.batch.core.StepExecution; @@ -30,8 +28,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("enhance") .and(isProtected()) .and(takesArguments(1)) diff --git a/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/SimpleAsyncTaskExecutorInstrumentation.java b/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/SimpleAsyncTaskExecutorInstrumentation.java index 98c5c11a55bc..1353124b5786 100644 --- a/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/SimpleAsyncTaskExecutorInstrumentation.java +++ b/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/SimpleAsyncTaskExecutorInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.spring.core; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -13,15 +12,14 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.api.concurrent.ExecutorInstrumentationUtils; import io.opentelemetry.javaagent.instrumentation.api.concurrent.RunnableWrapper; import io.opentelemetry.javaagent.instrumentation.api.concurrent.State; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -33,8 +31,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isProtected()) .and(named("doExecute")) diff --git a/instrumentation/spring/spring-data-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/SpringDataInstrumentationModule.java b/instrumentation/spring/spring-data-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/SpringDataInstrumentationModule.java index e4835faf4748..c79ac6edc2d5 100644 --- a/instrumentation/spring/spring-data-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/SpringDataInstrumentationModule.java +++ b/instrumentation/spring/spring-data-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/data/SpringDataInstrumentationModule.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.instrumentation.spring.data.SpringDataTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,11 +15,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Method; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.aopalliance.intercept.MethodInterceptor; @@ -51,8 +49,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor(), SpringDataInstrumentationModule.class.getName() + "$RepositoryFactorySupportAdvice"); } diff --git a/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingInstrumentationModule.java b/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingInstrumentationModule.java index e1a8143f12ec..d1d171c2d6a5 100644 --- a/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingInstrumentationModule.java +++ b/instrumentation/spring/spring-scheduling-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/scheduling/SpringSchedulingInstrumentationModule.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.spring.scheduling; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -14,10 +13,9 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor().and(takesArgument(0, Runnable.class)), SpringSchedulingInstrumentationModule.class.getName() + "$SpringSchedulingAdvice"); } diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/client/WebfluxClientInstrumentationModule.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/client/WebfluxClientInstrumentationModule.java index 68c391de7986..7c9a9030303b 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/client/WebfluxClientInstrumentationModule.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/client/WebfluxClientInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -16,9 +15,8 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -47,8 +45,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("build")), WebClientFilterAdvice.class.getName()); } } diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/DispatcherHandlerInstrumentation.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/DispatcherHandlerInstrumentation.java index bc53d8531a4d..55f9dc31f0c5 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/DispatcherHandlerInstrumentation.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/DispatcherHandlerInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.spring.webflux.server; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -13,8 +12,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -26,8 +24,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("handle")) diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java index d55616d6ba14..50e897f53b56 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -17,8 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -36,8 +34,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("handle")) diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/RouterFunctionInstrumentation.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/RouterFunctionInstrumentation.java index 0029e68d857e..85244a94c01b 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/RouterFunctionInstrumentation.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/RouterFunctionInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -17,8 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -40,8 +38,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("route")) diff --git a/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/DispatcherServletInstrumentation.java b/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/DispatcherServletInstrumentation.java index 82d6b20ade9c..b27ace871722 100644 --- a/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/DispatcherServletInstrumentation.java +++ b/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/DispatcherServletInstrumentation.java @@ -16,12 +16,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.context.ApplicationContext; @@ -36,28 +34,26 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isProtected()) .and(named("onRefresh")) .and(takesArgument(0, named("org.springframework.context.ApplicationContext"))) .and(takesArguments(1)), DispatcherServletInstrumentation.class.getName() + "$HandlerMappingAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(isProtected()) .and(named("render")) .and(takesArgument(0, named("org.springframework.web.servlet.ModelAndView"))), DispatcherServletInstrumentation.class.getName() + "$RenderAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(isProtected()) .and(nameStartsWith("processHandlerException")) .and(takesArgument(3, Exception.class)), DispatcherServletInstrumentation.class.getName() + "$ErrorHandlerAdvice"); - return transformers; } /** diff --git a/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/HandlerAdapterInstrumentation.java b/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/HandlerAdapterInstrumentation.java index a9c9af9dcda5..e534ec47686e 100644 --- a/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/HandlerAdapterInstrumentation.java +++ b/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/HandlerAdapterInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.springwebmvc.SpringWebMvcTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; @@ -21,11 +20,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.tracer.ServerSpan; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -42,8 +40,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(nameStartsWith("handle")) diff --git a/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/WebApplicationContextInstrumentation.java b/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/WebApplicationContextInstrumentation.java index ed55fca200ac..59c82d70b203 100644 --- a/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/WebApplicationContextInstrumentation.java +++ b/instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/WebApplicationContextInstrumentation.java @@ -8,15 +8,13 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -42,8 +40,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("postProcessBeanFactory")) .and( diff --git a/instrumentation/spring/spring-ws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/ws/AnnotatedMethodInstrumentation.java b/instrumentation/spring/spring-ws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/ws/AnnotatedMethodInstrumentation.java index 2fc7ad2d2f70..a9452bb6d807 100644 --- a/instrumentation/spring/spring-ws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/ws/AnnotatedMethodInstrumentation.java +++ b/instrumentation/spring/spring-ws-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/ws/AnnotatedMethodInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.spring.ws.SpringWsTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -16,11 +15,10 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; import java.lang.reflect.Method; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; @@ -44,8 +42,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isAnnotatedWith(namedOneOf(ANNOTATION_CLASSES))), AnnotatedMethodInstrumentation.class.getName() + "$AnnotatedMethodAdvice"); } diff --git a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedInstrumentationModule.java b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedInstrumentationModule.java index 2e109ab1b2fc..7bc73b88dbd9 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedInstrumentationModule.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/SpymemcachedInstrumentationModule.java @@ -17,13 +17,11 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.CallDepth; import io.opentelemetry.javaagent.instrumentation.api.CallDepthThreadLocalMap; -import java.util.HashMap; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.spy.memcached.MemcachedClient; @@ -50,9 +48,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(returns(named("net.spy.memcached.internal.OperationFuture"))) @@ -62,16 +59,15 @@ public Map, String> transfor */ .and(not(named("flush"))), SpymemcachedInstrumentationModule.class.getName() + "$AsyncOperationAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(returns(named("net.spy.memcached.internal.GetFuture"))), SpymemcachedInstrumentationModule.class.getName() + "$AsyncGetAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(returns(named("net.spy.memcached.internal.BulkFuture"))), SpymemcachedInstrumentationModule.class.getName() + "$AsyncBulkAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(namedOneOf("incr", "decr")), SpymemcachedInstrumentationModule.class.getName() + "$SyncOperationAdvice"); - return transformers; } } diff --git a/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java b/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java index 00cf10e16da1..6ffb2dd79fde 100644 --- a/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java +++ b/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java @@ -7,14 +7,12 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,8 +29,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(isPublic()).and(named("invokeActionOnly")), ActionInvocationAdvice.class.getName()); } diff --git a/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryInstrumentationModule.java b/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryInstrumentationModule.java index c06d7d51cc03..80e6b065f501 100644 --- a/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryInstrumentationModule.java +++ b/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryInstrumentationModule.java @@ -19,12 +19,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.HashMap; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.tapestry5.internal.structure.ComponentPageElementImpl; @@ -59,10 +56,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("handleComponentEvent")) @@ -73,7 +68,7 @@ public Map, String> transfor .and( takesArgument(1, named("org.apache.tapestry5.services.ComponentRequestHandler"))), InitializeActivePageNameInstrumentation.class.getName() + "$ComponentEventAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("handlePageRender")) @@ -84,8 +79,6 @@ public Map, String> transfor .and( takesArgument(1, named("org.apache.tapestry5.services.ComponentRequestHandler"))), InitializeActivePageNameInstrumentation.class.getName() + "$PageRenderAdvice"); - - return transformers; } public static class ComponentEventAdvice { @@ -111,8 +104,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(named("processEventTriggering")) .and(takesArguments(3)) diff --git a/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatServerHandlerInstrumentation.java b/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatServerHandlerInstrumentation.java index 8e0ccc544db3..960ae3a9d48c 100644 --- a/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatServerHandlerInstrumentation.java +++ b/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatServerHandlerInstrumentation.java @@ -12,9 +12,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Collections; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -34,8 +32,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("service")) diff --git a/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioAsyncInstrumentation.java b/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioAsyncInstrumentation.java index 7b39b3dd4c85..2d08b3c0a7e0 100644 --- a/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioAsyncInstrumentation.java +++ b/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioAsyncInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.twilio.TwilioTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -25,9 +24,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -51,18 +49,15 @@ public ElementMatcher typeMatcher() { "com.twilio.base.Updater")); } - /** Return bytebuddy transformers for instrumenting the Twilio SDK. */ @Override - public Map, String> transformers() { - + public void transform(TypeTransformer transformer) { /* We are listing out the main service calls on the Creator, Deleter, Fetcher, Reader, and Updater abstract classes. The isDeclaredBy() matcher did not work in the unit tests and we found that there were certain methods declared on the base class (particularly Reader), which we weren't interested in annotating. */ - - return singletonMap( + transformer.applyAdviceToMethod( isMethod() .and(namedOneOf("createAsync", "deleteAsync", "readAsync", "fetchAsync", "updateAsync")) .and(isPublic()) diff --git a/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioSyncInstrumentation.java b/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioSyncInstrumentation.java index 595b98218715..d3a8d49ff589 100644 --- a/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioSyncInstrumentation.java +++ b/instrumentation/twilio-6.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/twilio/TwilioSyncInstrumentation.java @@ -10,7 +10,6 @@ import static io.opentelemetry.javaagent.extension.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.twilio.TwilioTracer.tracer; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -19,9 +18,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.Map; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -45,18 +43,15 @@ public ElementMatcher typeMatcher() { "com.twilio.base.Updater")); } - /** Return bytebuddy transformers for instrumenting the Twilio SDK. */ @Override - public Map, String> transformers() { - + public void transform(TypeTransformer transformer) { /* We are listing out the main service calls on the Creator, Deleter, Fetcher, Reader, and Updater abstract classes. The isDeclaredBy() matcher did not work in the unit tests and we found that there were certain methods declared on the base class (particularly Reader), which we weren't interested in annotating. */ - - return singletonMap( + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(not(isAbstract())) diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowInstrumentationModule.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowInstrumentationModule.java index 671a7c45a6a8..5261b94863c5 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowInstrumentationModule.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowInstrumentationModule.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.undertow.UndertowHttpServerTracer.tracer; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -19,12 +18,11 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.undertow.server.HttpServerExchange; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -53,8 +51,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handleRequest") .and(takesArgument(0, named("io.undertow.server.HttpServerExchange"))) .and(isPublic()), diff --git a/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinInstrumentationModule.java b/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinInstrumentationModule.java index 94555e3494e5..fb70575fa122 100644 --- a/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinInstrumentationModule.java +++ b/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinInstrumentationModule.java @@ -9,7 +9,6 @@ import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.javaagent.instrumentation.vaadin.VaadinTracer.tracer; import static java.util.Arrays.asList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -26,11 +25,10 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Method; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -68,8 +66,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handleRequest") .and(takesArgument(0, named("com.vaadin.flow.server.VaadinRequest"))) .and(takesArgument(1, named("com.vaadin.flow.server.VaadinResponse"))), @@ -113,8 +111,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handleRequest") .and(takesArgument(0, named("com.vaadin.flow.server.VaadinSession"))) .and(takesArgument(1, named("com.vaadin.flow.server.VaadinRequest"))) @@ -161,10 +159,10 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // setCurrent is called by some request handler when they have accepted the request // we can get the path of currently active route from ui - return singletonMap( + transformer.applyAdviceToMethod( named("setCurrent").and(takesArgument(0, named("com.vaadin.flow.component.UI"))), UiInstrumentation.class.getName() + "$SetUiAdvice"); } @@ -186,8 +184,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("navigate") .and(takesArguments(4)) .and(takesArgument(1, named("com.vaadin.flow.router.Location"))) @@ -216,8 +214,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("connectClient"), JavaScriptBootstrapUiInstrumentation.class.getName() + "$ConnectViewAdvice"); } @@ -245,8 +243,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("handle") .and(takesArgument(0, named("com.vaadin.flow.component.UI"))) .and(takesArgument(1, named("elemental.json.JsonObject"))), @@ -288,8 +286,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("invokeMethod") .and(takesArgument(0, named("com.vaadin.flow.component.Component"))) .and(takesArgument(1, named(Class.class.getName()))) diff --git a/instrumentation/vertx-reactive-3.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/reactive/VertxRxInstrumentationModule.java b/instrumentation/vertx-reactive-3.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/reactive/VertxRxInstrumentationModule.java index ac0aefa13be4..e611104459a3 100644 --- a/instrumentation/vertx-reactive-3.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/reactive/VertxRxInstrumentationModule.java +++ b/instrumentation/vertx-reactive-3.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/reactive/VertxRxInstrumentationModule.java @@ -14,15 +14,13 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.vertx.core.AsyncResult; import io.vertx.core.Handler; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.function.Consumer; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -54,15 +52,13 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> result = new HashMap<>(); - result.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isConstructor().and(takesArgument(0, named("io.vertx.core.Handler"))), VertxRxInstrumentationModule.class.getName() + "$AsyncResultSingleHandlerAdvice"); - result.put( + transformer.applyAdviceToMethod( isConstructor().and(takesArgument(0, Consumer.class)), VertxRxInstrumentationModule.class.getName() + "$AsyncResultSingleConsumerAdvice"); - return result; } } diff --git a/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java index 65ade1fe4006..645a0e7d1a62 100644 --- a/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java +++ b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -16,12 +15,11 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.vertx.core.Handler; import io.vertx.ext.web.RoutingContext; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -49,8 +47,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(named("handler")).and(takesArgument(0, named("io.vertx.core.Handler"))), VertxWebInstrumentationModule.class.getName() + "$RouteAdvice"); } diff --git a/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java index a1f49c899ad5..c5b54ce36cbe 100644 --- a/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java +++ b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java @@ -17,16 +17,14 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import io.vertx.core.Handler; import io.vertx.core.http.HttpClientRequest; import io.vertx.core.http.HttpClientResponse; -import java.util.HashMap; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -57,32 +55,28 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(); - - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod().and(nameStartsWith("end").or(named("sendHead"))), HttpRequestInstrumentation.class.getName() + "$EndRequestAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("handleException")), HttpRequestInstrumentation.class.getName() + "$HandleExceptionAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(named("handleResponse")), HttpRequestInstrumentation.class.getName() + "$HandleResponseAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod().and(isPrivate()).and(nameStartsWith("write").or(nameStartsWith("connected"))), HttpRequestInstrumentation.class.getName() + "$MountContextAdvice"); - transformers.put( + transformer.applyAdviceToMethod( isMethod() .and(named("exceptionHandler")) .and(takesArgument(0, named("io.vertx.core.Handler"))), HttpRequestInstrumentation.class.getName() + "$ExceptionHandlerAdvice"); - - return transformers; } public static class EndRequestAdvice { diff --git a/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/DefaultExceptionMapperInstrumentation.java b/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/DefaultExceptionMapperInstrumentation.java index 5d36e294bd98..73c112edab13 100644 --- a/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/DefaultExceptionMapperInstrumentation.java +++ b/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/DefaultExceptionMapperInstrumentation.java @@ -11,12 +11,10 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.instrumentation.api.tracer.ServerSpan; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; import java.lang.reflect.InvocationTargetException; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.wicket.WicketRuntimeException; @@ -29,8 +27,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("mapUnexpectedExceptions").and(takesArgument(0, named(Exception.class.getName()))), DefaultExceptionMapperInstrumentation.class.getName() + "$ExceptionAdvice"); } diff --git a/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/RequestHandlerExecutorInstrumentation.java b/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/RequestHandlerExecutorInstrumentation.java index 0f9e33d606e0..a58358556218 100644 --- a/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/RequestHandlerExecutorInstrumentation.java +++ b/instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/RequestHandlerExecutorInstrumentation.java @@ -14,11 +14,9 @@ import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming; import io.opentelemetry.instrumentation.api.tracer.ServerSpan; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge; -import java.util.Collections; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.wicket.core.request.handler.IPageClassRequestHandler; @@ -32,8 +30,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return Collections.singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( named("execute").and(takesArgument(0, named("org.apache.wicket.request.IRequestHandler"))), RequestHandlerExecutorInstrumentation.class.getName() + "$ExecuteAdvice"); } diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeInstrumentation.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeInstrumentation.java index b853ac5fd2b5..e77a4206ed78 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeInstrumentation.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeInstrumentation.java @@ -8,8 +8,6 @@ import static net.bytebuddy.matcher.ElementMatchers.any; import io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; @@ -49,14 +47,15 @@ default ElementMatcher classLoaderOptimization() { } /** - * Returns a type matcher defining which classes should undergo transformations defined by advices - * returned by {@link #transformers()}. + * Returns a type matcher defining which classes should undergo transformations defined in the + * {@link #transform(TypeTransformer)} method. */ ElementMatcher typeMatcher(); /** - * Keys of the returned map are method matchers, values are full names of advice classes that will - * be applied onto methods that satisfy matcher (key). + * Define transformations that should be applied to classes matched by {@link #typeMatcher()}, for + * example: apply advice classes to chosen methods ({@link + * TypeTransformer#applyAdviceToMethod(ElementMatcher, String)}. */ - Map, String> transformers(); + void transform(TypeTransformer transformer); } diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeTransformer.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeTransformer.java new file mode 100644 index 000000000000..52d51312e0d0 --- /dev/null +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/extension/instrumentation/TypeTransformer.java @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.extension.instrumentation; + +import net.bytebuddy.agent.builder.AgentBuilder; +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; + +/** + * This interface represents type transformations that can be applied to a type instrumented using + * {@link TypeInstrumentation}. + * + *

This interface should not be implemented by the javaagent extension developer - the javaagent + * will provide the implementation of all transformations described here. + */ +public interface TypeTransformer { + /** + * Apply the advice class named {@code adviceClassName} to the instrumented type methods that + * match {@code methodMatcher}. + */ + void applyAdviceToMethod( + ElementMatcher methodMatcher, String adviceClassName); + + /** + * Apply a custom ByteBuddy {@link AgentBuilder.Transformer} to the instrumented type. Note that + * since this is a completely custom transformer, muzzle won't be able to scan for references or + * helper classes. + */ + void applyTransformer(AgentBuilder.Transformer transformer); +} diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java index f3884af69162..2f28d39ded56 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/InstrumentationModuleInstaller.java @@ -15,8 +15,6 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.tooling.HelperInjector; import io.opentelemetry.javaagent.tooling.TransformSafeLogger; -import io.opentelemetry.javaagent.tooling.Utils; -import io.opentelemetry.javaagent.tooling.bytebuddy.ExceptionHandlers; import io.opentelemetry.javaagent.tooling.context.FieldBackedProvider; import io.opentelemetry.javaagent.tooling.context.InstrumentationContextProvider; import io.opentelemetry.javaagent.tooling.context.NoopContextProvider; @@ -28,7 +26,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.description.annotation.AnnotationSource; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.utility.JavaModule; @@ -90,9 +87,9 @@ AgentBuilder install( .transform(ConstantAdjuster.instance()) .transform(helperInjector); extendableAgentBuilder = contextProvider.instrumentationTransformer(extendableAgentBuilder); - extendableAgentBuilder = - applyInstrumentationTransformers( - typeInstrumentation.transformers(), extendableAgentBuilder); + TypeTransformerImpl typeTransformer = new TypeTransformerImpl(extendableAgentBuilder); + typeInstrumentation.transform(typeTransformer); + extendableAgentBuilder = typeTransformer.getAgentBuilder(); extendableAgentBuilder = contextProvider.additionalInstrumentation(extendableAgentBuilder); agentBuilder = extendableAgentBuilder; @@ -111,21 +108,6 @@ private InstrumentationContextProvider createInstrumentationContextProvider( } } - private AgentBuilder.Identified.Extendable applyInstrumentationTransformers( - Map, String> transformers, - AgentBuilder.Identified.Extendable agentBuilder) { - for (Map.Entry, String> entry : - transformers.entrySet()) { - agentBuilder = - agentBuilder.transform( - new AgentBuilder.Transformer.ForAdvice() - .include(Utils.getBootstrapProxy(), Utils.getAgentClassLoader()) - .withExceptionHandler(ExceptionHandlers.defaultExceptionHandler()) - .advice(entry.getKey(), entry.getValue())); - } - return agentBuilder; - } - /** * A ByteBuddy matcher that decides whether this instrumentation should be applied. Calls * generated {@link ReferenceMatcher}: if any mismatch with the passed {@code classLoader} is diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/TypeTransformerImpl.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/TypeTransformerImpl.java new file mode 100644 index 000000000000..57e27c59cdc4 --- /dev/null +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/TypeTransformerImpl.java @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.tooling.instrumentation; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.tooling.Utils; +import io.opentelemetry.javaagent.tooling.bytebuddy.ExceptionHandlers; +import net.bytebuddy.agent.builder.AgentBuilder; +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; + +final class TypeTransformerImpl implements TypeTransformer { + private AgentBuilder.Identified.Extendable agentBuilder; + + TypeTransformerImpl(AgentBuilder.Identified.Extendable agentBuilder) { + this.agentBuilder = agentBuilder; + } + + @Override + public void applyAdviceToMethod( + ElementMatcher methodMatcher, String adviceClassName) { + agentBuilder = + agentBuilder.transform( + new AgentBuilder.Transformer.ForAdvice() + .include(Utils.getBootstrapProxy(), Utils.getAgentClassLoader()) + .withExceptionHandler(ExceptionHandlers.defaultExceptionHandler()) + .advice(methodMatcher, adviceClassName)); + } + + @Override + public void applyTransformer(AgentBuilder.Transformer transformer) { + agentBuilder = agentBuilder.transform(transformer); + } + + AgentBuilder.Identified.Extendable getAgentBuilder() { + return agentBuilder; + } +} diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/AdviceClassNameCollector.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/AdviceClassNameCollector.java new file mode 100644 index 000000000000..9e13434d4c98 --- /dev/null +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/AdviceClassNameCollector.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.tooling.muzzle.collector; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import java.util.HashSet; +import java.util.Set; +import net.bytebuddy.agent.builder.AgentBuilder; +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; + +final class AdviceClassNameCollector implements TypeTransformer { + private final Set adviceClassNames = new HashSet<>(); + + @Override + public void applyAdviceToMethod( + ElementMatcher methodMatcher, String adviceClassName) { + adviceClassNames.add(adviceClassName); + } + + @Override + public void applyTransformer(AgentBuilder.Transformer transformer) {} + + Set getAdviceClassNames() { + return adviceClassNames; + } +} diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/MuzzleCodeGenerator.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/MuzzleCodeGenerator.java index 4fe69b31cda3..775952fc9078 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/MuzzleCodeGenerator.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/collector/MuzzleCodeGenerator.java @@ -6,14 +6,13 @@ package io.opentelemetry.javaagent.tooling.muzzle.collector; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.muzzle.Reference; import io.opentelemetry.javaagent.tooling.Utils; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.util.stream.Collectors; import net.bytebuddy.ClassFileVersion; import net.bytebuddy.asm.AsmVisitorWrapper; import net.bytebuddy.description.field.FieldDescription; @@ -178,13 +177,13 @@ public void visitEnd() { } private ReferenceCollector collectReferences() { - Set adviceClassNames = - instrumentationModule.typeInstrumentations().stream() - .flatMap(typeInstrumentation -> typeInstrumentation.transformers().values().stream()) - .collect(Collectors.toSet()); + AdviceClassNameCollector adviceClassNameCollector = new AdviceClassNameCollector(); + for (TypeInstrumentation typeInstrumentation : instrumentationModule.typeInstrumentations()) { + typeInstrumentation.transform(adviceClassNameCollector); + } ReferenceCollector collector = new ReferenceCollector(instrumentationModule::isHelperClass); - for (String adviceClass : adviceClassNames) { + for (String adviceClass : adviceClassNameCollector.getAdviceClassNames()) { collector.collectReferencesFromAdvice(adviceClass); } for (String resource : instrumentationModule.helperResourceNames()) { diff --git a/testing-common/integration-tests/src/main/java/IbmResourceLevelInstrumentation.java b/testing-common/integration-tests/src/main/java/IbmResourceLevelInstrumentation.java index 7610e5371585..d835ac0bb594 100644 --- a/testing-common/integration-tests/src/main/java/IbmResourceLevelInstrumentation.java +++ b/testing-common/integration-tests/src/main/java/IbmResourceLevelInstrumentation.java @@ -4,16 +4,14 @@ */ import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.List; -import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -35,8 +33,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap(named("toString"), ToStringAdvice.class.getName()); + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod(named("toString"), ToStringAdvice.class.getName()); } } diff --git a/testing-common/integration-tests/src/main/java/context/ContextTestInstrumentationModule.java b/testing-common/integration-tests/src/main/java/context/ContextTestInstrumentationModule.java index 9ca7ca4046a6..3b9793666662 100644 --- a/testing-common/integration-tests/src/main/java/context/ContextTestInstrumentationModule.java +++ b/testing-common/integration-tests/src/main/java/context/ContextTestInstrumentationModule.java @@ -12,14 +12,12 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import java.util.HashMap; import java.util.List; -import java.util.Map; import library.KeyClass; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -54,15 +52,15 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - Map, String> transformers = new HashMap<>(7); - transformers.put(named("isInstrumented"), MarkInstrumentedAdvice.class.getName()); - transformers.put( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + named("isInstrumented"), MarkInstrumentedAdvice.class.getName()); + transformer.applyAdviceToMethod( named("incrementContextCount"), StoreAndIncrementApiUsageAdvice.class.getName()); - transformers.put(named("getContextCount"), GetApiUsageAdvice.class.getName()); - transformers.put(named("putContextCount"), PutApiUsageAdvice.class.getName()); - transformers.put(named("removeContextCount"), RemoveApiUsageAdvice.class.getName()); - return transformers; + transformer.applyAdviceToMethod(named("getContextCount"), GetApiUsageAdvice.class.getName()); + transformer.applyAdviceToMethod(named("putContextCount"), PutApiUsageAdvice.class.getName()); + transformer.applyAdviceToMethod( + named("removeContextCount"), RemoveApiUsageAdvice.class.getName()); } }