From d45ead1284d86db65834222c6daa45a738735076 Mon Sep 17 00:00:00 2001 From: Laplie Anderson Date: Tue, 18 Feb 2020 15:39:30 -0500 Subject: [PATCH 1/4] split matching into safeExtendsClass and safeHasInterface --- .../trace/agent/tooling/ByteBuddyElementMatchers.java | 10 ++++++++++ .../ApacheHttpAsyncClientInstrumentation.java | 4 ++-- .../ApacheHttpClientRedirectInstrumentation.java | 4 ++-- .../ApacheHttpClientInstrumentation.java | 4 ++-- .../instrumentation/aws/v0/RequestInstrumentation.java | 4 ++-- .../aws/v2/AwsClientInstrumentation.java | 7 ++++--- .../aws/v2/AwsHttpClientInstrumentation.java | 4 ++-- .../classloading/ClassloadingInstrumentation.java | 4 ++-- .../client/CouchbaseNetworkInstrumentation.java | 4 ++-- .../dropwizard/view/DropwizardViewInstrumentation.java | 4 ++-- .../finatra/FinatraInstrumentation.java | 4 ++-- .../hibernate/core/v3_3/CriteriaInstrumentation.java | 4 ++-- .../hibernate/core/v3_3/QueryInstrumentation.java | 4 ++-- .../core/v3_3/SessionFactoryInstrumentation.java | 6 +++--- .../hibernate/core/v3_3/SessionInstrumentation.java | 8 ++++---- .../core/v3_3/TransactionInstrumentation.java | 4 ++-- .../hibernate/core/v4_0/CriteriaInstrumentation.java | 4 ++-- .../hibernate/core/v4_0/QueryInstrumentation.java | 4 ++-- .../core/v4_0/SessionFactoryInstrumentation.java | 4 ++-- .../hibernate/core/v4_0/SessionInstrumentation.java | 8 ++++---- .../core/v4_0/TransactionInstrumentation.java | 4 ++-- .../core/v4_3/ProcedureCallInstrumentation.java | 4 ++-- .../hibernate/core/v4_3/SessionInstrumentation.java | 6 +++--- .../HttpUrlConnectionInstrumentation.java | 8 ++++---- .../hystrix/HystrixInstrumentation.java | 4 ++-- .../concurrent/AbstractExecutorInstrumentation.java | 4 ++-- .../concurrent/AkkaForkJoinTaskInstrumentation.java | 4 ++-- .../AsyncPropagatingDisableInstrumentation.java | 4 ++-- .../java/concurrent/FutureInstrumentation.java | 4 ++-- .../concurrent/JavaForkJoinTaskInstrumentation.java | 4 ++-- .../concurrent/RunnableCallableInstrumentation.java | 4 ++-- .../concurrent/ScalaForkJoinTaskInstrumentation.java | 4 ++-- .../jaxrs2/AbstractRequestContextInstrumentation.java | 4 ++-- .../jaxrs2/ContainerRequestFilterInstrumentation.java | 4 ++-- .../jaxrs2/JaxRsAsyncResponseInstrumentation.java | 4 ++-- .../jaxrs/v1/JaxRsClientV1Instrumentation.java | 9 +++++---- .../jaxrs/JaxRsClientInstrumentation.java | 7 ++++--- .../jdbc/ConnectionInstrumentation.java | 6 +++--- .../jdbc/DataSourceInstrumentation.java | 4 ++-- .../instrumentation/jdbc/DriverInstrumentation.java | 4 ++-- .../jdbc/PreparedStatementInstrumentation.java | 4 ++-- .../instrumentation/jdbc/StatementInstrumentation.java | 4 ++-- .../jetty8/JettyHandlerInstrumentation.java | 4 ++-- .../jms/JMSMessageConsumerInstrumentation.java | 4 ++-- .../jms/JMSMessageListenerInstrumentation.java | 4 ++-- .../jms/JMSMessageProducerInstrumentation.java | 4 ++-- .../trace/instrumentation/jsp/JSPInstrumentation.java | 4 ++-- .../netty40/ChannelFutureListenerInstrumentation.java | 4 ++-- .../netty40/NettyChannelPipelineInstrumentation.java | 4 ++-- .../netty41/ChannelFutureListenerInstrumentation.java | 4 ++-- .../netty41/NettyChannelPipelineInstrumentation.java | 4 ++-- .../instrumentation/play24/PlayInstrumentation.java | 4 ++-- .../instrumentation/play26/PlayInstrumentation.java | 4 ++-- .../playws1/PlayWSClientInstrumentation.java | 4 ++-- .../playws21/PlayWSClientInstrumentation.java | 4 ++-- .../playws2/PlayWSClientInstrumentation.java | 4 ++-- .../rabbitmq/amqp/RabbitChannelInstrumentation.java | 4 ++-- .../rabbitmq/amqp/RabbitCommandInstrumentation.java | 4 ++-- .../ratpack/ContinuationInstrumentation.java | 4 ++-- .../ratpack/ServerErrorHandlerInstrumentation.java | 4 ++-- .../reactor/core/FluxAndMonoInstrumentation.java | 4 ++-- .../rmi/client/RmiClientInstrumentation.java | 4 ++-- .../client/RmiClientContextInstrumentation.java | 4 ++-- .../server/RmiServerContextInstrumentation.java | 4 ++-- .../rmi/server/RmiServerInstrumentation.java | 4 ++-- .../servlet3/AsyncContextInstrumentation.java | 4 ++-- .../dispatcher/RequestDispatcherInstrumentation.java | 4 ++-- .../dispatcher/ServletContextInstrumentation.java | 4 ++-- .../servlet/filter/FilterInstrumentation.java | 4 ++-- .../servlet/http/HttpServletInstrumentation.java | 4 ++-- .../http/HttpServletResponseInstrumentation.java | 4 ++-- .../client/DefaultWebClientInstrumentation.java | 4 ++-- .../server/HandlerAdapterInstrumentation.java | 4 ++-- .../server/RouterFunctionInstrumentation.java | 4 ++-- .../springweb/HandlerAdapterInstrumentation.java | 4 ++-- .../twilio/TwilioAsyncInstrumentation.java | 4 ++-- .../twilio/TwilioSyncInstrumentation.java | 4 ++-- 77 files changed, 178 insertions(+), 165 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java index b94a19e4ab..a2a5d0763e 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java @@ -22,6 +22,16 @@ import net.bytebuddy.matcher.ElementMatchers; @Slf4j public class ByteBuddyElementMatchers { + public static ElementMatcher.Junction safeExtendsClass( + final ElementMatcher matcher) { + return safeHasSuperType(matcher); + } + + public static ElementMatcher.Junction safeHasInterface( + final ElementMatcher matcher) { + return safeHasSuperType(matcher); + } + /** * Matches any type description that declares a super type that matches the provided matcher. * Exceptions during matching process are logged and ignored. diff --git a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java index e1c57b4ea0..0f09146013 100644 --- a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java +++ b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.apachehttpasyncclient; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -40,7 +40,7 @@ public class ApacheHttpAsyncClientInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("org.apache.http.nio.client.HttpAsyncClient")); + return safeHasInterface(named("org.apache.http.nio.client.HttpAsyncClient")); } @Override diff --git a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpClientRedirectInstrumentation.java b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpClientRedirectInstrumentation.java index e61ff4a7a3..6d1fcdaf0e 100644 --- a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpClientRedirectInstrumentation.java +++ b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/ApacheHttpClientRedirectInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.apachehttpasyncclient; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -31,7 +31,7 @@ public class ApacheHttpClientRedirectInstrumentation extends Instrumenter.Defaul @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("org.apache.http.client.RedirectStrategy")); + return safeHasInterface(named("org.apache.http.client.RedirectStrategy")); } @Override diff --git a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java index d5fe205521..26d75907c0 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java +++ b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.apachehttpclient; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -44,7 +44,7 @@ public class ApacheHttpClientInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.apache.http.client.HttpClient"))); + return not(isInterface()).and(safeHasInterface(named("org.apache.http.client.HttpClient"))); } @Override diff --git a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/RequestInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/RequestInstrumentation.java index d74ff4eb2f..71dd9d9aa4 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/RequestInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/RequestInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v0; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -26,7 +26,7 @@ public final class RequestInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("com.amazonaws.AmazonWebServiceRequest")); + return safeExtendsClass(named("com.amazonaws.AmazonWebServiceRequest")); } @Override diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsClientInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsClientInstrumentation.java index 1c4f2abfda..91babf1474 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsClientInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v2; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -23,8 +23,9 @@ public final class AwsClientInstrumentation extends AbstractAwsClientInstrumenta @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("software.amazon.awssdk.core.client.builder.SdkClientBuilder")) - .and(not(isInterface())); + return not(isInterface()) + .and( + safeHasInterface(named("software.amazon.awssdk.core.client.builder.SdkClientBuilder"))); } @Override diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsHttpClientInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsHttpClientInstrumentation.java index a2a2ca7682..f02ad94e35 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsHttpClientInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsHttpClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v2; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -28,7 +28,7 @@ public final class AwsHttpClientInstrumentation extends AbstractAwsClientInstrum @Override public ElementMatcher typeMatcher() { - return safeHasSuperType( + return safeExtendsClass( named("software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage") .or( named( diff --git a/dd-java-agent/instrumentation/classloading/src/main/java/datadog/trace/instrumentation/classloading/ClassloadingInstrumentation.java b/dd-java-agent/instrumentation/classloading/src/main/java/datadog/trace/instrumentation/classloading/ClassloadingInstrumentation.java index 59abce0789..087f5c1c63 100644 --- a/dd-java-agent/instrumentation/classloading/src/main/java/datadog/trace/instrumentation/classloading/ClassloadingInstrumentation.java +++ b/dd-java-agent/instrumentation/classloading/src/main/java/datadog/trace/instrumentation/classloading/ClassloadingInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.classloading; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isProtected; @@ -44,7 +44,7 @@ public final class ClassloadingInstrumentation extends Instrumenter.Default { return not(named("java.lang.ClassLoader")) .and(not(named("com.ibm.oti.vm.BootstrapClassLoader"))) .and(not(named("datadog.trace.bootstrap.AgentClassLoader"))) - .and(safeHasSuperType(named("java.lang.ClassLoader"))); + .and(safeExtendsClass(named("java.lang.ClassLoader"))); } @Override diff --git a/dd-java-agent/instrumentation/couchbase-2.6/src/main/java/datadog/trace/instrumentation/couchbase/client/CouchbaseNetworkInstrumentation.java b/dd-java-agent/instrumentation/couchbase-2.6/src/main/java/datadog/trace/instrumentation/couchbase/client/CouchbaseNetworkInstrumentation.java index 926b8b1931..b2c6654f1c 100644 --- a/dd-java-agent/instrumentation/couchbase-2.6/src/main/java/datadog/trace/instrumentation/couchbase/client/CouchbaseNetworkInstrumentation.java +++ b/dd-java-agent/instrumentation/couchbase-2.6/src/main/java/datadog/trace/instrumentation/couchbase/client/CouchbaseNetworkInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.couchbase.client; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -31,7 +31,7 @@ public class CouchbaseNetworkInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { // Exact class because private fields are used - return safeHasSuperType(named("com.couchbase.client.core.endpoint.AbstractGenericHandler")); + return safeExtendsClass(named("com.couchbase.client.core.endpoint.AbstractGenericHandler")); } @Override diff --git a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java index 8482b92f3d..a9fa6841c8 100644 --- a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java +++ b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.dropwizard.view; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -34,7 +34,7 @@ public final class DropwizardViewInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("io.dropwizard.views.ViewRenderer"))); + return not(isInterface()).and(safeHasInterface(named("io.dropwizard.views.ViewRenderer"))); } @Override diff --git a/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java b/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java index d1fa3dd0f7..a7ba385db5 100644 --- a/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java +++ b/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.finatra; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -52,7 +52,7 @@ public class FinatraInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("com.twitter.finatra.http.internal.routing.Route"))); + .and(safeExtendsClass(named("com.twitter.finatra.http.internal.routing.Route"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/CriteriaInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/CriteriaInstrumentation.java index ef2de7b35e..195cfc4cac 100644 --- a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/CriteriaInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/CriteriaInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v3_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -31,7 +31,7 @@ public class CriteriaInstrumentation extends AbstractHibernateInstrumentation { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Criteria"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.Criteria"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java index e1709299a7..63ac466880 100644 --- a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/QueryInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v3_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -33,7 +33,7 @@ public class QueryInstrumentation extends AbstractHibernateInstrumentation { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Query"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.Query"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java index 372c535ad3..b70c15f046 100644 --- a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionFactoryInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v3_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static java.util.Collections.singletonMap; @@ -40,7 +40,7 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SessionFactory"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.SessionFactory"))); } @Override @@ -53,7 +53,7 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat returns( named("org.hibernate.Session") .or(named("org.hibernate.StatelessSession")) - .or(safeHasSuperType(named("org.hibernate.Session"))))), + .or(safeHasInterface(named("org.hibernate.Session"))))), SessionFactoryInstrumentation.class.getName() + "$SessionFactoryAdvice"); } diff --git a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java index 81dc036813..8021599141 100644 --- a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/SessionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v3_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static datadog.trace.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -50,7 +50,7 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation { public ElementMatcher typeMatcher() { return not(isInterface()) .and( - safeHasSuperType( + safeHasInterface( named("org.hibernate.Session").or(named("org.hibernate.StatelessSession")))); } @@ -99,11 +99,11 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation { SessionInstrumentation.class.getName() + "$GetTransactionAdvice"); transformers.put( - isMethod().and(returns(safeHasSuperType(named("org.hibernate.Query")))), + isMethod().and(returns(safeHasInterface(named("org.hibernate.Query")))), SessionInstrumentation.class.getName() + "$GetQueryAdvice"); transformers.put( - isMethod().and(returns(safeHasSuperType(named("org.hibernate.Criteria")))), + isMethod().and(returns(safeHasInterface(named("org.hibernate.Criteria")))), SessionInstrumentation.class.getName() + "$GetCriteriaAdvice"); return transformers; diff --git a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/TransactionInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/TransactionInstrumentation.java index d6ab703337..6fe2471bb3 100644 --- a/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/TransactionInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-3.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v3_3/TransactionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v3_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -31,7 +31,7 @@ public class TransactionInstrumentation extends AbstractHibernateInstrumentation @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Transaction"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.Transaction"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/CriteriaInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/CriteriaInstrumentation.java index d1d2b00c23..c9cf90e9bd 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/CriteriaInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/CriteriaInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_0; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -31,7 +31,7 @@ public class CriteriaInstrumentation extends AbstractHibernateInstrumentation { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Criteria"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.Criteria"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java index 9e2087a530..fc7a9c6996 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/QueryInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_0; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -33,7 +33,7 @@ public class QueryInstrumentation extends AbstractHibernateInstrumentation { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Query"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.Query"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java index be6c4cb8a0..4e0ad3cc02 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionFactoryInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_0; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static java.util.Collections.singletonMap; @@ -34,7 +34,7 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SessionFactory"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.SessionFactory"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java index 2fb7cee33c..f95612d8b5 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/SessionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_0; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static datadog.trace.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -46,7 +46,7 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SharedSessionContract"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.SharedSessionContract"))); } @Override @@ -93,11 +93,11 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation { SessionInstrumentation.class.getName() + "$GetTransactionAdvice"); transformers.put( - isMethod().and(returns(safeHasSuperType(named("org.hibernate.Query")))), + isMethod().and(returns(safeHasInterface(named("org.hibernate.Query")))), SessionInstrumentation.class.getName() + "$GetQueryAdvice"); transformers.put( - isMethod().and(returns(safeHasSuperType(named("org.hibernate.Criteria")))), + isMethod().and(returns(safeHasInterface(named("org.hibernate.Criteria")))), SessionInstrumentation.class.getName() + "$GetCriteriaAdvice"); return transformers; diff --git a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/TransactionInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/TransactionInstrumentation.java index 2d2898f4f2..cd5425952d 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/TransactionInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.0/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_0/TransactionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_0; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -31,7 +31,7 @@ public class TransactionInstrumentation extends AbstractHibernateInstrumentation @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Transaction"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.Transaction"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/ProcedureCallInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/ProcedureCallInstrumentation.java index bb1007628f..a35576b82e 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/ProcedureCallInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/ProcedureCallInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -47,7 +47,7 @@ public class ProcedureCallInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.procedure.ProcedureCall"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.procedure.ProcedureCall"))); } @Override diff --git a/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/SessionInstrumentation.java b/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/SessionInstrumentation.java index 70ff431051..d58dbdea38 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/SessionInstrumentation.java +++ b/dd-java-agent/instrumentation/hibernate/core-4.3/src/main/java/datadog/trace/instrumentation/hibernate/core/v4_3/SessionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hibernate.core.v4_3; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -53,7 +53,7 @@ public class SessionInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SharedSessionContract"))); + return not(isInterface()).and(safeHasInterface(named("org.hibernate.SharedSessionContract"))); } @Override @@ -61,7 +61,7 @@ public class SessionInstrumentation extends Instrumenter.Default { final Map, String> transformers = new HashMap<>(); transformers.put( - isMethod().and(returns(safeHasSuperType(named("org.hibernate.procedure.ProcedureCall")))), + isMethod().and(returns(safeHasInterface(named("org.hibernate.procedure.ProcedureCall")))), SessionInstrumentation.class.getName() + "$GetProcedureCallAdvice"); return transformers; diff --git a/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java b/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java index 50b749f3cb..8b9ca4ff5b 100644 --- a/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java +++ b/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.http_url_connection; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -35,9 +35,9 @@ public class HttpUrlConnectionInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("java.net.HttpURLConnection")) - // This class is a simple delegator. Skip because it does not update its `connected` field. - .and(not(named("sun.net.www.protocol.https.HttpsURLConnectionImpl"))); + // This class is a simple delegator. Skip because it does not update its `connected` field. + return not(named("sun.net.www.protocol.https.HttpsURLConnectionImpl")) + .and(safeExtendsClass(named("java.net.HttpURLConnection"))); } @Override diff --git a/dd-java-agent/instrumentation/hystrix-1.4/src/main/java/datadog/trace/instrumentation/hystrix/HystrixInstrumentation.java b/dd-java-agent/instrumentation/hystrix-1.4/src/main/java/datadog/trace/instrumentation/hystrix/HystrixInstrumentation.java index a0a5fec253..7939b2846b 100644 --- a/dd-java-agent/instrumentation/hystrix-1.4/src/main/java/datadog/trace/instrumentation/hystrix/HystrixInstrumentation.java +++ b/dd-java-agent/instrumentation/hystrix-1.4/src/main/java/datadog/trace/instrumentation/hystrix/HystrixInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.hystrix; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.instrumentation.hystrix.HystrixDecorator.DECORATE; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -29,7 +29,7 @@ public class HystrixInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType( + return safeExtendsClass( named("com.netflix.hystrix.HystrixCommand") .or(named("com.netflix.hystrix.HystrixObservableCommand"))); } diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java index 69a9a7ee37..4fe6518f94 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -103,7 +103,7 @@ public abstract class AbstractExecutorInstrumentation extends Instrumenter.Defau @Override public ElementMatcher typeMatcher() { final ElementMatcher.Junction matcher = - not(isInterface()).and(safeHasSuperType(named(Executor.class.getName()))); + not(isInterface()).and(safeHasInterface(named(Executor.class.getName()))); if (TRACE_ALL_EXECUTORS) { return matcher; } diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AkkaForkJoinTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AkkaForkJoinTaskInstrumentation.java index b87aaa5d87..26380bc20e 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AkkaForkJoinTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AkkaForkJoinTaskInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -44,7 +44,7 @@ public final class AkkaForkJoinTaskInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named(TASK_CLASS_NAME))); + return not(isInterface()).and(safeExtendsClass(named(TASK_CLASS_NAME))); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java index 6549682c55..334ccf081f 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan; @@ -36,7 +36,7 @@ public final class AsyncPropagatingDisableInstrumentation implements Instrumente new ImmutableMap.Builder< ElementMatcher, ElementMatcher>() - .put(safeHasSuperType(named("rx.Scheduler$Worker")), named("schedulePeriodically")) + .put(safeExtendsClass(named("rx.Scheduler$Worker")), named("schedulePeriodically")) .build(); @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/FutureInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/FutureInstrumentation.java index cb1ca1406e..bf1fd2f591 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/FutureInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/FutureInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -79,7 +79,7 @@ public final class FutureInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named(Future.class.getName()))) + .and(safeHasInterface(named(Future.class.getName()))) .and( new ElementMatcher() { @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java index b075eb80ae..1ac50be415 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -41,7 +41,7 @@ public final class JavaForkJoinTaskInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named(ForkJoinTask.class.getName()))); + return not(isInterface()).and(safeExtendsClass(named(ForkJoinTask.class.getName()))); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableCallableInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableCallableInstrumentation.java index 1f518d5fd6..e17bfc8b94 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableCallableInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableCallableInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -35,7 +35,7 @@ public final class RunnableCallableInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named(Runnable.class.getName()).or(named(Callable.class.getName())))); + .and(safeHasInterface(named(Runnable.class.getName()).or(named(Callable.class.getName())))); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ScalaForkJoinTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ScalaForkJoinTaskInstrumentation.java index 2523bdbb37..f0c9fabf8d 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ScalaForkJoinTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ScalaForkJoinTaskInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.concurrent; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -43,7 +43,7 @@ public final class ScalaForkJoinTaskInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named(TASK_CLASS_NAME))); + return not(isInterface()).and(safeExtendsClass(named(TASK_CLASS_NAME))); } @Override diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/AbstractRequestContextInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/AbstractRequestContextInstrumentation.java index 75c1df26fc..22339c70cb 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/AbstractRequestContextInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/AbstractRequestContextInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jaxrs2; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -31,7 +31,7 @@ public abstract class AbstractRequestContextInstrumentation extends Instrumenter @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("javax.ws.rs.container.ContainerRequestContext"))); + .and(safeHasInterface(named("javax.ws.rs.container.ContainerRequestContext"))); } @Override diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/ContainerRequestFilterInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/ContainerRequestFilterInstrumentation.java index 5f32319508..5601dbc7c0 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/ContainerRequestFilterInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/ContainerRequestFilterInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jaxrs2; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -33,7 +33,7 @@ public class ContainerRequestFilterInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("javax.ws.rs.container.ContainerRequestFilter"))); + .and(safeHasInterface(named("javax.ws.rs.container.ContainerRequestFilter"))); } @Override diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAsyncResponseInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAsyncResponseInstrumentation.java index b43c92ea32..b5e3a380f8 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAsyncResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAsyncResponseInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jaxrs2; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.instrumentation.jaxrs2.JaxRsAnnotationsDecorator.DECORATE; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -35,7 +35,7 @@ public final class JaxRsAsyncResponseInstrumentation extends Instrumenter.Defaul @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("javax.ws.rs.container.AsyncResponse")); + return safeHasInterface(named("javax.ws.rs.container.AsyncResponse")); } @Override diff --git a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java index 3c7d1d3246..5ad1787f30 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java @@ -1,7 +1,8 @@ package datadog.trace.instrumentation.jaxrs.v1; import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -35,7 +36,7 @@ public final class JaxRsClientV1Instrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("com.sun.jersey.api.client.ClientHandler")); + return safeHasInterface(named("com.sun.jersey.api.client.ClientHandler")); } @Override @@ -55,8 +56,8 @@ public final class JaxRsClientV1Instrumentation extends Instrumenter.Default { named("handle") .and( takesArgument( - 0, safeHasSuperType(named("com.sun.jersey.api.client.ClientRequest")))) - .and(returns(safeHasSuperType(named("com.sun.jersey.api.client.ClientResponse")))), + 0, safeExtendsClass(named("com.sun.jersey.api.client.ClientRequest")))) + .and(returns(safeExtendsClass(named("com.sun.jersey.api.client.ClientResponse")))), JaxRsClientV1Instrumentation.class.getName() + "$HandleAdvice"); } diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/JaxRsClientInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/JaxRsClientInstrumentation.java index 19af4fe24e..ce2b8dd453 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/JaxRsClientInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/JaxRsClientInstrumentation.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.jaxrs; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -24,7 +25,7 @@ public final class JaxRsClientInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("javax.ws.rs.client.ClientBuilder")); + return safeExtendsClass(named("javax.ws.rs.client.ClientBuilder")); } @Override @@ -43,7 +44,7 @@ public final class JaxRsClientInstrumentation extends Instrumenter.Default { @Override public Map, String> transformers() { return singletonMap( - named("build").and(returns(safeHasSuperType(named("javax.ws.rs.client.Client")))), + named("build").and(returns(safeHasInterface(named("javax.ws.rs.client.Client")))), JaxRsClientInstrumentation.class.getName() + "$ClientBuilderAdvice"); } diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/ConnectionInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/ConnectionInstrumentation.java index a890cbb220..7b2b2fc670 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/ConnectionInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/ConnectionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jdbc; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; @@ -27,7 +27,7 @@ public final class ConnectionInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("java.sql.Connection"))); + return not(isInterface()).and(safeHasInterface(named("java.sql.Connection"))); } @Override @@ -43,7 +43,7 @@ public final class ConnectionInstrumentation extends Instrumenter.Default { nameStartsWith("prepare") .and(takesArgument(0, String.class)) // Also include CallableStatement, which is a sub type of PreparedStatement - .and(returns(safeHasSuperType(named("java.sql.PreparedStatement")))), + .and(returns(safeHasInterface(named("java.sql.PreparedStatement")))), ConnectionInstrumentation.class.getName() + "$ConnectionPrepareAdvice"); } diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java index eae2ba545e..0fdc695dc0 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jdbc; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -42,7 +42,7 @@ public final class DataSourceInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.sql.DataSource"))); + return not(isInterface()).and(safeHasInterface(named("javax.sql.DataSource"))); } @Override diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java index d58d921a60..53c3d017e2 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jdbc; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; @@ -30,7 +30,7 @@ public final class DriverInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("java.sql.Driver"))); + return not(isInterface()).and(safeHasInterface(named("java.sql.Driver"))); } @Override diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java index 13ec4ac81e..8d2c5aa675 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jdbc; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE; @@ -35,7 +35,7 @@ public final class PreparedStatementInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("java.sql.PreparedStatement"))); + return not(isInterface()).and(safeHasInterface(named("java.sql.PreparedStatement"))); } @Override diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java index a612d8ba3f..345529f58c 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jdbc; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE; @@ -35,7 +35,7 @@ public final class StatementInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("java.sql.Statement"))); + return not(isInterface()).and(safeHasInterface(named("java.sql.Statement"))); } @Override diff --git a/dd-java-agent/instrumentation/jetty-8/src/main/java/datadog/trace/instrumentation/jetty8/JettyHandlerInstrumentation.java b/dd-java-agent/instrumentation/jetty-8/src/main/java/datadog/trace/instrumentation/jetty8/JettyHandlerInstrumentation.java index f039c4fbdc..551c728e63 100644 --- a/dd-java-agent/instrumentation/jetty-8/src/main/java/datadog/trace/instrumentation/jetty8/JettyHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty-8/src/main/java/datadog/trace/instrumentation/jetty8/JettyHandlerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jetty8; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -30,7 +30,7 @@ public final class JettyHandlerInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("org.eclipse.jetty.server.Handler"))) + .and(safeHasInterface(named("org.eclipse.jetty.server.Handler"))) .and(not(named("org.eclipse.jetty.server.handler.HandlerWrapper"))); } diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java index 9a60aef0cd..0cb8777531 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jms; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -37,7 +37,7 @@ public final class JMSMessageConsumerInstrumentation extends Instrumenter.Defaul @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.jms.MessageConsumer"))); + return not(isInterface()).and(safeHasInterface(named("javax.jms.MessageConsumer"))); } @Override diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageListenerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageListenerInstrumentation.java index ab658c4eab..1347d056b4 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageListenerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jms; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -35,7 +35,7 @@ public final class JMSMessageListenerInstrumentation extends Instrumenter.Defaul @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.jms.MessageListener"))); + return not(isInterface()).and(safeHasInterface(named("javax.jms.MessageListener"))); } @Override diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java index f7d806b889..201be7e3b4 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jms; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -37,7 +37,7 @@ public final class JMSMessageProducerInstrumentation extends Instrumenter.Defaul @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.jms.MessageProducer"))); + return not(isInterface()).and(safeHasInterface(named("javax.jms.MessageProducer"))); } @Override diff --git a/dd-java-agent/instrumentation/jsp-2.3/src/main/java/datadog/trace/instrumentation/jsp/JSPInstrumentation.java b/dd-java-agent/instrumentation/jsp-2.3/src/main/java/datadog/trace/instrumentation/jsp/JSPInstrumentation.java index c087746398..1385c1622a 100644 --- a/dd-java-agent/instrumentation/jsp-2.3/src/main/java/datadog/trace/instrumentation/jsp/JSPInstrumentation.java +++ b/dd-java-agent/instrumentation/jsp-2.3/src/main/java/datadog/trace/instrumentation/jsp/JSPInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.jsp; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jsp.JSPDecorator.DECORATE; @@ -31,7 +31,7 @@ public final class JSPInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.servlet.jsp.HttpJspPage"))); + return not(isInterface()).and(safeHasInterface(named("javax.servlet.jsp.HttpJspPage"))); } @Override diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java index 7219f97d20..bb1282dd3a 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.netty40; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static java.util.Collections.singletonMap; @@ -36,7 +36,7 @@ public class ChannelFutureListenerInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("io.netty.channel.ChannelFutureListener"))); + .and(safeHasInterface(named("io.netty.channel.ChannelFutureListener"))); } @Override diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/NettyChannelPipelineInstrumentation.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/NettyChannelPipelineInstrumentation.java index da5a7fb2c7..7beb747880 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/NettyChannelPipelineInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/NettyChannelPipelineInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.netty40; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -48,7 +48,7 @@ public class NettyChannelPipelineInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("io.netty.channel.ChannelPipeline"))); + return not(isInterface()).and(safeHasInterface(named("io.netty.channel.ChannelPipeline"))); } @Override diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java index a9f17b0426..97a61b6f27 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.netty41; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static java.util.Collections.singletonMap; @@ -36,7 +36,7 @@ public class ChannelFutureListenerInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("io.netty.channel.ChannelFutureListener"))); + .and(safeHasInterface(named("io.netty.channel.ChannelFutureListener"))); } @Override diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/NettyChannelPipelineInstrumentation.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/NettyChannelPipelineInstrumentation.java index b0edd6703a..f96732cadd 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/NettyChannelPipelineInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/NettyChannelPipelineInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.netty41; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -48,7 +48,7 @@ public class NettyChannelPipelineInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("io.netty.channel.ChannelPipeline"))); + return not(isInterface()).and(safeHasInterface(named("io.netty.channel.ChannelPipeline"))); } @Override diff --git a/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayInstrumentation.java b/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayInstrumentation.java index 950fe72d60..2bd873f4b0 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayInstrumentation.java +++ b/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.play24; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -22,7 +22,7 @@ public final class PlayInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("play.api.mvc.Action")); + return safeHasInterface(named("play.api.mvc.Action")); } @Override diff --git a/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayInstrumentation.java b/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayInstrumentation.java index 6b0dee65ad..8c0c24ac70 100644 --- a/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayInstrumentation.java +++ b/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.play26; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; @@ -22,7 +22,7 @@ public final class PlayInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("play.api.mvc.Action")); + return safeHasInterface(named("play.api.mvc.Action")); } @Override diff --git a/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java b/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java index 99033cfd8f..8805ecc9f6 100644 --- a/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java +++ b/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.playws1; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.playws1.HeadersInjectAdapter.SETTER; @@ -33,7 +33,7 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default { public ElementMatcher typeMatcher() { // CachingAsyncHttpClient rejects overrides to AsyncHandler // It also delegates to another AsyncHttpClient - return safeHasSuperType(named("play.shaded.ahc.org.asynchttpclient.AsyncHttpClient")) + return safeHasInterface(named("play.shaded.ahc.org.asynchttpclient.AsyncHttpClient")) .and(not(named("play.api.libs.ws.ahc.cache.CachingAsyncHttpClient"))); } diff --git a/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java b/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java index ab8d3cd5c4..04adcfd040 100644 --- a/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java +++ b/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.playws21; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.playws21.HeadersInjectAdapter.SETTER; @@ -33,7 +33,7 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default { public ElementMatcher typeMatcher() { // CachingAsyncHttpClient rejects overrides to AsyncHandler // It also delegates to another AsyncHttpClient - return safeHasSuperType(named("play.shaded.ahc.org.asynchttpclient.AsyncHttpClient")) + return safeHasInterface(named("play.shaded.ahc.org.asynchttpclient.AsyncHttpClient")) .and(not(named("play.api.libs.ws.ahc.cache.CachingAsyncHttpClient"))); } diff --git a/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java b/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java index d4f3ea992c..8ac3b77473 100644 --- a/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java +++ b/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.playws2; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.playws2.HeadersInjectAdapter.SETTER; @@ -33,7 +33,7 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default { public ElementMatcher typeMatcher() { // CachingAsyncHttpClient rejects overrides to AsyncHandler // It also delegates to another AsyncHttpClient - return safeHasSuperType(named("play.shaded.ahc.org.asynchttpclient.AsyncHttpClient")) + return safeHasInterface(named("play.shaded.ahc.org.asynchttpclient.AsyncHttpClient")) .and(not(named("play.api.libs.ws.ahc.cache.CachingAsyncHttpClient"))); } diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java index 425cc830d3..63c0278f22 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.rabbitmq.amqp; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan; @@ -56,7 +56,7 @@ public class RabbitChannelInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("com.rabbitmq.client.Channel"))); + return not(isInterface()).and(safeHasInterface(named("com.rabbitmq.client.Channel"))); } @Override diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitCommandInstrumentation.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitCommandInstrumentation.java index fde3ade5a3..9ea2907480 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitCommandInstrumentation.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitCommandInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.rabbitmq.amqp; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.instrumentation.rabbitmq.amqp.RabbitDecorator.DECORATE; import static java.util.Collections.singletonMap; @@ -28,7 +28,7 @@ public class RabbitCommandInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("com.rabbitmq.client.Command"))); + return not(isInterface()).and(safeHasInterface(named("com.rabbitmq.client.Command"))); } @Override diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java index be4cdfe46c..a712facf74 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.ratpack; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -25,7 +25,7 @@ public final class ContinuationInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType(named("ratpack.exec.internal.Continuation")); + return safeHasInterface(named("ratpack.exec.internal.Continuation")); } @Override diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java index b3908dd848..d95992f630 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ServerErrorHandlerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.ratpack; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -25,7 +25,7 @@ public class ServerErrorHandlerInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface().or(isAbstract())) - .and(safeHasSuperType(named("ratpack.error.ServerErrorHandler"))); + .and(safeHasInterface(named("ratpack.error.ServerErrorHandler"))); } @Override diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/main/java/datadog/trace/instrumentation/reactor/core/FluxAndMonoInstrumentation.java b/dd-java-agent/instrumentation/reactor-core-3.1/src/main/java/datadog/trace/instrumentation/reactor/core/FluxAndMonoInstrumentation.java index ec319ad7a7..75c1f287ae 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/main/java/datadog/trace/instrumentation/reactor/core/FluxAndMonoInstrumentation.java +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/main/java/datadog/trace/instrumentation/reactor/core/FluxAndMonoInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.reactor.core; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -36,7 +36,7 @@ public final class FluxAndMonoInstrumentation extends Instrumenter.Default { public ElementMatcher typeMatcher() { return not(isAbstract()) .and( - safeHasSuperType( + safeExtendsClass( named("reactor.core.publisher.Mono").or(named("reactor.core.publisher.Flux")))); } diff --git a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/client/RmiClientInstrumentation.java b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/client/RmiClientInstrumentation.java index c6acebdce8..645e7210c7 100644 --- a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/client/RmiClientInstrumentation.java +++ b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/client/RmiClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.rmi.client; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -33,7 +33,7 @@ public final class RmiClientInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("sun.rmi.server.UnicastRef"))); + return not(isInterface()).and(safeExtendsClass(named("sun.rmi.server.UnicastRef"))); } @Override diff --git a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java index 1c7b0175bd..2f48f050fc 100644 --- a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java +++ b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/client/RmiClientContextInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.rmi.context.client; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.instrumentation.rmi.context.ContextPropagator.PROPAGATOR; import static java.util.Collections.singletonMap; @@ -53,7 +53,7 @@ public class RmiClientContextInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("sun.rmi.transport.StreamRemoteCall"))); + return not(isInterface()).and(safeExtendsClass(named("sun.rmi.transport.StreamRemoteCall"))); } @Override diff --git a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java index 1ce41f9310..3cc6cb2d4d 100644 --- a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java +++ b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/context/server/RmiServerContextInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.rmi.context.server; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.instrumentation.rmi.context.ContextPropagator.DD_CONTEXT_CALL_ID; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -28,7 +28,7 @@ public class RmiServerContextInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("sun.rmi.transport.ObjectTable"))); + return not(isInterface()).and(safeExtendsClass(named("sun.rmi.transport.ObjectTable"))); } @Override diff --git a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/server/RmiServerInstrumentation.java b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/server/RmiServerInstrumentation.java index dd96577b52..68f09d720b 100644 --- a/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/server/RmiServerInstrumentation.java +++ b/dd-java-agent/instrumentation/rmi/src/main/java/datadog/trace/instrumentation/rmi/server/RmiServerInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.rmi.server; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.rmi.ThreadLocalContext.THREAD_LOCAL_CONTEXT; @@ -43,7 +43,7 @@ public final class RmiServerInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("java.rmi.server.RemoteServer"))); + return not(isInterface()).and(safeExtendsClass(named("java.rmi.server.RemoteServer"))); } @Override diff --git a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/AsyncContextInstrumentation.java b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/AsyncContextInstrumentation.java index a3b932455b..cccde3a85c 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/AsyncContextInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/AsyncContextInstrumentation.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.servlet3; import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.instrumentation.servlet3.HttpServletRequestInjectAdapter.SETTER; import static java.util.Collections.singletonMap; @@ -38,7 +38,7 @@ public final class AsyncContextInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.servlet.AsyncContext"))); + return not(isInterface()).and(safeHasInterface(named("javax.servlet.AsyncContext"))); } @Override diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java index 7ba4c32f85..3c520bafca 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.servlet.dispatcher; import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -46,7 +46,7 @@ public final class RequestDispatcherInstrumentation extends Instrumenter.Default @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.servlet.RequestDispatcher"))); + return not(isInterface()).and(safeHasInterface(named("javax.servlet.RequestDispatcher"))); } @Override diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/ServletContextInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/ServletContextInstrumentation.java index 9c3df78076..5d6aa9eed6 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/ServletContextInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/ServletContextInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.servlet.dispatcher; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -27,7 +27,7 @@ public final class ServletContextInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.servlet.ServletContext"))); + return not(isInterface()).and(safeHasInterface(named("javax.servlet.ServletContext"))); } @Override diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java index 0795c548ac..357ad29496 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.servlet.filter; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -44,7 +44,7 @@ public final class FilterInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.servlet.Filter"))); + return not(isInterface()).and(safeHasInterface(named("javax.servlet.Filter"))); } @Override diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java index ccac20c47e..4674cb7ec8 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.servlet.http; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -46,7 +46,7 @@ public final class HttpServletInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return not(isInterface()).and(safeHasSuperType(named("javax.servlet.http.HttpServlet"))); + return not(isInterface()).and(safeExtendsClass(named("javax.servlet.http.HttpServlet"))); } /** diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java index f78ca4fb86..26a70d0047 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.servlet.http; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -44,7 +44,7 @@ public final class HttpServletResponseInstrumentation extends Instrumenter.Defau @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("javax.servlet.http.HttpServletResponse"))); + .and(safeHasInterface(named("javax.servlet.http.HttpServletResponse"))); } @Override diff --git a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/client/DefaultWebClientInstrumentation.java b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/client/DefaultWebClientInstrumentation.java index ca23a46fce..d65723ecfd 100644 --- a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/client/DefaultWebClientInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/client/DefaultWebClientInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.springwebflux.client; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -37,7 +37,7 @@ public class DefaultWebClientInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { - return safeHasSuperType( + return safeHasInterface( named("org.springframework.web.reactive.function.client.ExchangeFunction")); } diff --git a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterInstrumentation.java b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterInstrumentation.java index 89d9e946c9..0bdfc20121 100644 --- a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.springwebflux.server; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isInterface; @@ -25,7 +25,7 @@ public final class HandlerAdapterInstrumentation extends AbstractWebfluxInstrume public ElementMatcher typeMatcher() { return not(isInterface()) .and(not(isAbstract())) - .and(safeHasSuperType(named("org.springframework.web.reactive.HandlerAdapter"))); + .and(safeHasInterface(named("org.springframework.web.reactive.HandlerAdapter"))); } @Override diff --git a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/RouterFunctionInstrumentation.java b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/RouterFunctionInstrumentation.java index bc1b5a9322..784091456f 100644 --- a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/RouterFunctionInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/RouterFunctionInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.springwebflux.server; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -28,7 +28,7 @@ public final class RouterFunctionInstrumentation extends AbstractWebfluxInstrume public ElementMatcher typeMatcher() { return not(isAbstract()) .and( - safeHasSuperType( + safeExtendsClass( // TODO: this doesn't handle nested routes (DefaultNestedRouterFunction) named( "org.springframework.web.reactive.function.server.RouterFunctions$DefaultRouterFunction"))); diff --git a/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java b/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java index ce682cc51f..a9f79608f5 100644 --- a/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.springweb; import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasInterface; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; @@ -37,7 +37,7 @@ public final class HandlerAdapterInstrumentation extends Instrumenter.Default { @Override public ElementMatcher typeMatcher() { return not(isInterface()) - .and(safeHasSuperType(named("org.springframework.web.servlet.HandlerAdapter"))); + .and(safeHasInterface(named("org.springframework.web.servlet.HandlerAdapter"))); } @Override diff --git a/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java b/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java index 08a0b10d29..c6ee8011fe 100644 --- a/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java +++ b/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.twilio; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.twilio.TwilioClientDecorator.DECORATE; @@ -37,7 +37,7 @@ public class TwilioAsyncInstrumentation extends Instrumenter.Default { /** Match any child class of the base Twilio service classes. */ @Override public ElementMatcher typeMatcher() { - return safeHasSuperType( + return safeExtendsClass( named("com.twilio.base.Creator") .or(named("com.twilio.base.Deleter")) .or(named("com.twilio.base.Fetcher")) diff --git a/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioSyncInstrumentation.java b/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioSyncInstrumentation.java index 734d102d3e..58223e17a1 100644 --- a/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioSyncInstrumentation.java +++ b/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioSyncInstrumentation.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.twilio; -import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeExtendsClass; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.twilio.TwilioClientDecorator.DECORATE; @@ -35,7 +35,7 @@ public class TwilioSyncInstrumentation extends Instrumenter.Default { public net.bytebuddy.matcher.ElementMatcher< ? super net.bytebuddy.description.type.TypeDescription> typeMatcher() { - return safeHasSuperType( + return safeExtendsClass( named("com.twilio.base.Creator") .or(named("com.twilio.base.Deleter")) .or(named("com.twilio.base.Fetcher")) From 147b4a64f19ba7f27ab4cd1a45ca56daa08ad3ff Mon Sep 17 00:00:00 2001 From: Laplie Anderson Date: Wed, 19 Feb 2020 15:56:57 -0500 Subject: [PATCH 2/4] Add matcher for only concrete classes --- .../tooling/ByteBuddyElementMatchers.java | 82 +++++++++---------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java index a2a5d0763e..e1e0ac9f5a 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java @@ -24,7 +24,7 @@ public class ByteBuddyElementMatchers { public static ElementMatcher.Junction safeExtendsClass( final ElementMatcher matcher) { - return safeHasSuperType(matcher); + return new SafeExtendsClassMatcher<>(new SafeErasureMatcher<>(matcher)); } public static ElementMatcher.Junction safeHasInterface( @@ -44,22 +44,7 @@ public class ByteBuddyElementMatchers { */ public static ElementMatcher.Junction safeHasSuperType( final ElementMatcher matcher) { - return safeHasGenericSuperType(new SafeErasureMatcher(matcher)); - } - - /** - * Matches any type description that declares a super type that matches the provided matcher. - * Exceptions during matching process are logged and ignored. - * - * @param matcher The type to be checked for being a super type of the matched type. - * @param The type of the matched object. - * @return A matcher that matches any type description that declares a super type that matches the - * provided matcher. - * @see ElementMatchers#hasGenericSuperType(net.bytebuddy.matcher.ElementMatcher) - */ - public static ElementMatcher.Junction safeHasGenericSuperType( - final ElementMatcher matcher) { - return new SafeHasSuperTypeMatcher<>(matcher); + return new SafeHasSuperTypeMatcher<>(new SafeErasureMatcher<>(matcher)); } /** @@ -139,19 +124,6 @@ public class ByteBuddyElementMatchers { return false; } - private TypeDefinition safeGetSuperClass(final TypeDefinition typeDefinition) { - try { - return typeDefinition.getSuperClass(); - } catch (final Exception e) { - log.debug( - "{} trying to get super class for target {}: {}", - e.getClass().getSimpleName(), - safeTypeDefinitionName(typeDefinition), - e.getMessage()); - return null; - } - } - /** * Matches a type's interfaces against the provided matcher. * @@ -371,22 +343,46 @@ public class ByteBuddyElementMatchers { return false; } - private TypeDefinition safeGetSuperClass(final TypeDefinition typeDefinition) { - try { - return typeDefinition.getSuperClass(); - } catch (final Exception e) { - log.debug( - "{} trying to get super class for target {}: {}", - e.getClass().getSimpleName(), - safeTypeDefinitionName(typeDefinition), - e.getMessage()); - return null; - } - } - @Override public String toString() { return "hasSuperMethodMatcher(" + matcher + ")"; } } + + private static TypeDefinition safeGetSuperClass(final TypeDefinition typeDefinition) { + try { + return typeDefinition.getSuperClass(); + } catch (final Exception e) { + log.debug( + "{} trying to get super class for target {}: {}", + e.getClass().getSimpleName(), + safeTypeDefinitionName(typeDefinition), + e.getMessage()); + return null; + } + } + + public static class SafeExtendsClassMatcher + extends ElementMatcher.Junction.AbstractBase { + + private final ElementMatcher matcher; + + public SafeExtendsClassMatcher(final ElementMatcher matcher) { + this.matcher = matcher; + } + + @Override + public boolean matches(final T target) { + // We do not use foreach loop and iterator interface here because we need to catch exceptions + // in {@code getSuperClass} calls + TypeDefinition typeDefinition = target; + while (typeDefinition != null) { + if (matcher.matches(typeDefinition.asGenericType())) { + return true; + } + typeDefinition = safeGetSuperClass(typeDefinition); + } + return false; + } + } } From 92b9c0701831ed64714058efe8b28e7c5ae48e4a Mon Sep 17 00:00:00 2001 From: Laplie Anderson Date: Wed, 19 Feb 2020 16:57:47 -0500 Subject: [PATCH 3/4] Add interfaces only code --- .../agent/tooling/ByteBuddyElementMatchers.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java index e1e0ac9f5a..d08ed046c0 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java @@ -29,7 +29,7 @@ public class ByteBuddyElementMatchers { public static ElementMatcher.Junction safeHasInterface( final ElementMatcher matcher) { - return safeHasSuperType(matcher); + return new SafeHasSuperTypeMatcher<>(new SafeErasureMatcher<>(matcher), true); } /** @@ -44,7 +44,7 @@ public class ByteBuddyElementMatchers { */ public static ElementMatcher.Junction safeHasSuperType( final ElementMatcher matcher) { - return new SafeHasSuperTypeMatcher<>(new SafeErasureMatcher<>(matcher)); + return new SafeHasSuperTypeMatcher<>(new SafeErasureMatcher<>(matcher), false); } /** @@ -99,13 +99,17 @@ public class ByteBuddyElementMatchers { /** The matcher to apply to any super type of the matched type. */ private final ElementMatcher matcher; + private final boolean interfacesOnly; /** * Creates a new matcher for a super type. * * @param matcher The matcher to apply to any super type of the matched type. */ - public SafeHasSuperTypeMatcher(final ElementMatcher matcher) { + public SafeHasSuperTypeMatcher( + final ElementMatcher matcher, + final boolean interfacesOnly) { this.matcher = matcher; + this.interfacesOnly = interfacesOnly; } @Override @@ -115,7 +119,7 @@ public class ByteBuddyElementMatchers { // in {@code getSuperClass} calls TypeDefinition typeDefinition = target; while (typeDefinition != null) { - if (matcher.matches(typeDefinition.asGenericType()) + if ((!interfacesOnly && matcher.matches(typeDefinition.asGenericType())) || hasInterface(typeDefinition, checkedInterfaces)) { return true; } From 43487fcfb5377e1ad89a871deea224d207ff760b Mon Sep 17 00:00:00 2001 From: Laplie Anderson Date: Wed, 19 Feb 2020 21:21:29 -0500 Subject: [PATCH 4/4] Fix the logic --- .../datadog/trace/agent/tooling/ByteBuddyElementMatchers.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java index d08ed046c0..847975681b 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ByteBuddyElementMatchers.java @@ -119,7 +119,8 @@ public class ByteBuddyElementMatchers { // in {@code getSuperClass} calls TypeDefinition typeDefinition = target; while (typeDefinition != null) { - if ((!interfacesOnly && matcher.matches(typeDefinition.asGenericType())) + if (((!interfacesOnly || typeDefinition.isInterface()) + && matcher.matches(typeDefinition.asGenericType())) || hasInterface(typeDefinition, checkedInterfaces)) { return true; }