Split interface and class "supertype matching" (#1232)

Split interface and class "supertype matching"
This commit is contained in:
Tyler Benson 2020-02-20 11:08:39 -08:00 committed by GitHub
commit e4a454549d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
77 changed files with 223 additions and 209 deletions

View File

@ -22,6 +22,16 @@ import net.bytebuddy.matcher.ElementMatchers;
@Slf4j @Slf4j
public class ByteBuddyElementMatchers { public class ByteBuddyElementMatchers {
public static <T extends TypeDescription> ElementMatcher.Junction<T> safeExtendsClass(
final ElementMatcher<? super TypeDescription> matcher) {
return new SafeExtendsClassMatcher<>(new SafeErasureMatcher<>(matcher));
}
public static <T extends TypeDescription> ElementMatcher.Junction<T> safeHasInterface(
final ElementMatcher<? super TypeDescription> matcher) {
return new SafeHasSuperTypeMatcher<>(new SafeErasureMatcher<>(matcher), true);
}
/** /**
* Matches any type description that declares a super type that matches the provided matcher. * Matches any type description that declares a super type that matches the provided matcher.
* Exceptions during matching process are logged and ignored. * Exceptions during matching process are logged and ignored.
@ -34,22 +44,7 @@ public class ByteBuddyElementMatchers {
*/ */
public static <T extends TypeDescription> ElementMatcher.Junction<T> safeHasSuperType( public static <T extends TypeDescription> ElementMatcher.Junction<T> safeHasSuperType(
final ElementMatcher<? super TypeDescription> matcher) { final ElementMatcher<? super TypeDescription> matcher) {
return safeHasGenericSuperType(new SafeErasureMatcher(matcher)); return new SafeHasSuperTypeMatcher<>(new SafeErasureMatcher<>(matcher), false);
}
/**
* 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 <T> 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 <T extends TypeDescription> ElementMatcher.Junction<T> safeHasGenericSuperType(
final ElementMatcher<? super TypeDescription.Generic> matcher) {
return new SafeHasSuperTypeMatcher<>(matcher);
} }
/** /**
@ -104,13 +99,17 @@ public class ByteBuddyElementMatchers {
/** The matcher to apply to any super type of the matched type. */ /** The matcher to apply to any super type of the matched type. */
private final ElementMatcher<? super TypeDescription.Generic> matcher; private final ElementMatcher<? super TypeDescription.Generic> matcher;
private final boolean interfacesOnly;
/** /**
* Creates a new matcher for a super type. * Creates a new matcher for a super type.
* *
* @param matcher The matcher to apply to any super type of the matched type. * @param matcher The matcher to apply to any super type of the matched type.
*/ */
public SafeHasSuperTypeMatcher(final ElementMatcher<? super TypeDescription.Generic> matcher) { public SafeHasSuperTypeMatcher(
final ElementMatcher<? super TypeDescription.Generic> matcher,
final boolean interfacesOnly) {
this.matcher = matcher; this.matcher = matcher;
this.interfacesOnly = interfacesOnly;
} }
@Override @Override
@ -120,7 +119,8 @@ public class ByteBuddyElementMatchers {
// in {@code getSuperClass} calls // in {@code getSuperClass} calls
TypeDefinition typeDefinition = target; TypeDefinition typeDefinition = target;
while (typeDefinition != null) { while (typeDefinition != null) {
if (matcher.matches(typeDefinition.asGenericType()) if (((!interfacesOnly || typeDefinition.isInterface())
&& matcher.matches(typeDefinition.asGenericType()))
|| hasInterface(typeDefinition, checkedInterfaces)) { || hasInterface(typeDefinition, checkedInterfaces)) {
return true; return true;
} }
@ -129,19 +129,6 @@ public class ByteBuddyElementMatchers {
return false; 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. * Matches a type's interfaces against the provided matcher.
* *
@ -361,7 +348,13 @@ public class ByteBuddyElementMatchers {
return false; return false;
} }
private TypeDefinition safeGetSuperClass(final TypeDefinition typeDefinition) { @Override
public String toString() {
return "hasSuperMethodMatcher(" + matcher + ")";
}
}
private static TypeDefinition safeGetSuperClass(final TypeDefinition typeDefinition) {
try { try {
return typeDefinition.getSuperClass(); return typeDefinition.getSuperClass();
} catch (final Exception e) { } catch (final Exception e) {
@ -374,9 +367,27 @@ public class ByteBuddyElementMatchers {
} }
} }
public static class SafeExtendsClassMatcher<T extends TypeDescription>
extends ElementMatcher.Junction.AbstractBase<T> {
private final ElementMatcher<? super TypeDescription.Generic> matcher;
public SafeExtendsClassMatcher(final ElementMatcher<? super TypeDescription.Generic> matcher) {
this.matcher = matcher;
}
@Override @Override
public String toString() { public boolean matches(final T target) {
return "hasSuperMethodMatcher(" + matcher + ")"; // 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;
} }
} }
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.apachehttpasyncclient; 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.activeScope;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -40,7 +40,7 @@ public class ApacheHttpAsyncClientInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("org.apache.http.nio.client.HttpAsyncClient")); return safeHasInterface(named("org.apache.http.nio.client.HttpAsyncClient"));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.apachehttpasyncclient; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -31,7 +31,7 @@ public class ApacheHttpClientRedirectInstrumentation extends Instrumenter.Defaul
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("org.apache.http.client.RedirectStrategy")); return safeHasInterface(named("org.apache.http.client.RedirectStrategy"));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.apachehttpclient; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -44,7 +44,7 @@ public class ApacheHttpClientInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.apache.http.client.HttpClient"))); return not(isInterface()).and(safeHasInterface(named("org.apache.http.client.HttpClient")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.aws.v0; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
@ -26,7 +26,7 @@ public final class RequestInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("com.amazonaws.AmazonWebServiceRequest")); return safeExtendsClass(named("com.amazonaws.AmazonWebServiceRequest"));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.aws.v2; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -23,8 +23,9 @@ public final class AwsClientInstrumentation extends AbstractAwsClientInstrumenta
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("software.amazon.awssdk.core.client.builder.SdkClientBuilder")) return not(isInterface())
.and(not(isInterface())); .and(
safeHasInterface(named("software.amazon.awssdk.core.client.builder.SdkClientBuilder")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.aws.v2; 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 datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -28,7 +28,7 @@ public final class AwsHttpClientInstrumentation extends AbstractAwsClientInstrum
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType( return safeExtendsClass(
named("software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage") named("software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage")
.or( .or(
named( named(

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.classloading; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.isProtected;
@ -44,7 +44,7 @@ public final class ClassloadingInstrumentation extends Instrumenter.Default {
return not(named("java.lang.ClassLoader")) return not(named("java.lang.ClassLoader"))
.and(not(named("com.ibm.oti.vm.BootstrapClassLoader"))) .and(not(named("com.ibm.oti.vm.BootstrapClassLoader")))
.and(not(named("datadog.trace.bootstrap.AgentClassLoader"))) .and(not(named("datadog.trace.bootstrap.AgentClassLoader")))
.and(safeHasSuperType(named("java.lang.ClassLoader"))); .and(safeExtendsClass(named("java.lang.ClassLoader")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.couchbase.client; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -31,7 +31,7 @@ public class CouchbaseNetworkInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
// Exact class because private fields are used // 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 @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.dropwizard.view; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -34,7 +34,7 @@ public final class DropwizardViewInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("io.dropwizard.views.ViewRenderer"))); return not(isInterface()).and(safeHasInterface(named("io.dropwizard.views.ViewRenderer")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.finatra; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -52,7 +52,7 @@ public class FinatraInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("com.twitter.finatra.http.internal.routing.Route"))); .and(safeExtendsClass(named("com.twitter.finatra.http.internal.routing.Route")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v3_3; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -31,7 +31,7 @@ public class CriteriaInstrumentation extends AbstractHibernateInstrumentation {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Criteria"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.Criteria")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v3_3; 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.HibernateDecorator.DECORATOR;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -33,7 +33,7 @@ public class QueryInstrumentation extends AbstractHibernateInstrumentation {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Query"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.Query")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v3_3; 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.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -40,7 +40,7 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SessionFactory"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.SessionFactory")));
} }
@Override @Override
@ -53,7 +53,7 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat
returns( returns(
named("org.hibernate.Session") named("org.hibernate.Session")
.or(named("org.hibernate.StatelessSession")) .or(named("org.hibernate.StatelessSession"))
.or(safeHasSuperType(named("org.hibernate.Session"))))), .or(safeHasInterface(named("org.hibernate.Session"))))),
SessionFactoryInstrumentation.class.getName() + "$SessionFactoryAdvice"); SessionFactoryInstrumentation.class.getName() + "$SessionFactoryAdvice");
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v3_3; 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.HibernateDecorator.DECORATOR;
import static datadog.trace.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS; import static datadog.trace.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -50,7 +50,7 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation {
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and( .and(
safeHasSuperType( safeHasInterface(
named("org.hibernate.Session").or(named("org.hibernate.StatelessSession")))); named("org.hibernate.Session").or(named("org.hibernate.StatelessSession"))));
} }
@ -99,11 +99,11 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation {
SessionInstrumentation.class.getName() + "$GetTransactionAdvice"); SessionInstrumentation.class.getName() + "$GetTransactionAdvice");
transformers.put( transformers.put(
isMethod().and(returns(safeHasSuperType(named("org.hibernate.Query")))), isMethod().and(returns(safeHasInterface(named("org.hibernate.Query")))),
SessionInstrumentation.class.getName() + "$GetQueryAdvice"); SessionInstrumentation.class.getName() + "$GetQueryAdvice");
transformers.put( transformers.put(
isMethod().and(returns(safeHasSuperType(named("org.hibernate.Criteria")))), isMethod().and(returns(safeHasInterface(named("org.hibernate.Criteria")))),
SessionInstrumentation.class.getName() + "$GetCriteriaAdvice"); SessionInstrumentation.class.getName() + "$GetCriteriaAdvice");
return transformers; return transformers;

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v3_3; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -31,7 +31,7 @@ public class TransactionInstrumentation extends AbstractHibernateInstrumentation
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Transaction"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.Transaction")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_0; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -31,7 +31,7 @@ public class CriteriaInstrumentation extends AbstractHibernateInstrumentation {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Criteria"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.Criteria")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_0; 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.HibernateDecorator.DECORATOR;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -33,7 +33,7 @@ public class QueryInstrumentation extends AbstractHibernateInstrumentation {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Query"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.Query")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_0; 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.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR; import static datadog.trace.instrumentation.hibernate.HibernateDecorator.DECORATOR;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -34,7 +34,7 @@ public class SessionFactoryInstrumentation extends AbstractHibernateInstrumentat
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SessionFactory"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.SessionFactory")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_0; 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.HibernateDecorator.DECORATOR;
import static datadog.trace.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS; import static datadog.trace.instrumentation.hibernate.SessionMethodUtils.SCOPE_ONLY_METHODS;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -46,7 +46,7 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SharedSessionContract"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.SharedSessionContract")));
} }
@Override @Override
@ -93,11 +93,11 @@ public class SessionInstrumentation extends AbstractHibernateInstrumentation {
SessionInstrumentation.class.getName() + "$GetTransactionAdvice"); SessionInstrumentation.class.getName() + "$GetTransactionAdvice");
transformers.put( transformers.put(
isMethod().and(returns(safeHasSuperType(named("org.hibernate.Query")))), isMethod().and(returns(safeHasInterface(named("org.hibernate.Query")))),
SessionInstrumentation.class.getName() + "$GetQueryAdvice"); SessionInstrumentation.class.getName() + "$GetQueryAdvice");
transformers.put( transformers.put(
isMethod().and(returns(safeHasSuperType(named("org.hibernate.Criteria")))), isMethod().and(returns(safeHasInterface(named("org.hibernate.Criteria")))),
SessionInstrumentation.class.getName() + "$GetCriteriaAdvice"); SessionInstrumentation.class.getName() + "$GetCriteriaAdvice");
return transformers; return transformers;

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_0; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -31,7 +31,7 @@ public class TransactionInstrumentation extends AbstractHibernateInstrumentation
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.Transaction"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.Transaction")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_3; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -47,7 +47,7 @@ public class ProcedureCallInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.procedure.ProcedureCall"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.procedure.ProcedureCall")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hibernate.core.v4_3; 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.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -53,7 +53,7 @@ public class SessionInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("org.hibernate.SharedSessionContract"))); return not(isInterface()).and(safeHasInterface(named("org.hibernate.SharedSessionContract")));
} }
@Override @Override
@ -61,7 +61,7 @@ public class SessionInstrumentation extends Instrumenter.Default {
final Map<ElementMatcher<? super MethodDescription>, String> transformers = new HashMap<>(); final Map<ElementMatcher<? super MethodDescription>, String> transformers = new HashMap<>();
transformers.put( transformers.put(
isMethod().and(returns(safeHasSuperType(named("org.hibernate.procedure.ProcedureCall")))), isMethod().and(returns(safeHasInterface(named("org.hibernate.procedure.ProcedureCall")))),
SessionInstrumentation.class.getName() + "$GetProcedureCallAdvice"); SessionInstrumentation.class.getName() + "$GetProcedureCallAdvice");
return transformers; return transformers;

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.http_url_connection; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -35,9 +35,9 @@ public class HttpUrlConnectionInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("java.net.HttpURLConnection"))
// This class is a simple delegator. Skip because it does not update its `connected` field. // This class is a simple delegator. Skip because it does not update its `connected` field.
.and(not(named("sun.net.www.protocol.https.HttpsURLConnectionImpl"))); return not(named("sun.net.www.protocol.https.HttpsURLConnectionImpl"))
.and(safeExtendsClass(named("java.net.HttpURLConnection")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.hystrix; 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 datadog.trace.instrumentation.hystrix.HystrixDecorator.DECORATE;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.returns;
@ -29,7 +29,7 @@ public class HystrixInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType( return safeExtendsClass(
named("com.netflix.hystrix.HystrixCommand") named("com.netflix.hystrix.HystrixCommand")
.or(named("com.netflix.hystrix.HystrixObservableCommand"))); .or(named("com.netflix.hystrix.HystrixObservableCommand")));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.not;
@ -103,7 +103,7 @@ public abstract class AbstractExecutorInstrumentation extends Instrumenter.Defau
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
final ElementMatcher.Junction<TypeDescription> matcher = final ElementMatcher.Junction<TypeDescription> matcher =
not(isInterface()).and(safeHasSuperType(named(Executor.class.getName()))); not(isInterface()).and(safeHasInterface(named(Executor.class.getName())));
if (TRACE_ALL_EXECUTORS) { if (TRACE_ALL_EXECUTORS) {
return matcher; return matcher;
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -44,7 +44,7 @@ public final class AkkaForkJoinTaskInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named(TASK_CLASS_NAME))); return not(isInterface()).and(safeExtendsClass(named(TASK_CLASS_NAME)));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan;
@ -36,7 +36,7 @@ public final class AsyncPropagatingDisableInstrumentation implements Instrumente
new ImmutableMap.Builder< new ImmutableMap.Builder<
ElementMatcher<? super TypeDescription>, ElementMatcher<? super TypeDescription>,
ElementMatcher<? super MethodDescription>>() ElementMatcher<? super MethodDescription>>()
.put(safeHasSuperType(named("rx.Scheduler$Worker")), named("schedulePeriodically")) .put(safeExtendsClass(named("rx.Scheduler$Worker")), named("schedulePeriodically"))
.build(); .build();
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -79,7 +79,7 @@ public final class FutureInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named(Future.class.getName()))) .and(safeHasInterface(named(Future.class.getName())))
.and( .and(
new ElementMatcher<TypeDescription>() { new ElementMatcher<TypeDescription>() {
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -41,7 +41,7 @@ public final class JavaForkJoinTaskInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named(ForkJoinTask.class.getName()))); return not(isInterface()).and(safeExtendsClass(named(ForkJoinTask.class.getName())));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -35,7 +35,7 @@ public final class RunnableCallableInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) 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 @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.java.concurrent; 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.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -43,7 +43,7 @@ public final class ScalaForkJoinTaskInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named(TASK_CLASS_NAME))); return not(isInterface()).and(safeExtendsClass(named(TASK_CLASS_NAME)));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jaxrs2; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -31,7 +31,7 @@ public abstract class AbstractRequestContextInstrumentation extends Instrumenter
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("javax.ws.rs.container.ContainerRequestContext"))); .and(safeHasInterface(named("javax.ws.rs.container.ContainerRequestContext")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jaxrs2; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -33,7 +33,7 @@ public class ContainerRequestFilterInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("javax.ws.rs.container.ContainerRequestFilter"))); .and(safeHasInterface(named("javax.ws.rs.container.ContainerRequestFilter")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jaxrs2; 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 datadog.trace.instrumentation.jaxrs2.JaxRsAnnotationsDecorator.DECORATE;
import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -35,7 +35,7 @@ public final class JaxRsAsyncResponseInstrumentation extends Instrumenter.Defaul
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("javax.ws.rs.container.AsyncResponse")); return safeHasInterface(named("javax.ws.rs.container.AsyncResponse"));
} }
@Override @Override

View File

@ -1,7 +1,8 @@
package datadog.trace.instrumentation.jaxrs.v1; package datadog.trace.instrumentation.jaxrs.v1;
import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -35,7 +36,7 @@ public final class JaxRsClientV1Instrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("com.sun.jersey.api.client.ClientHandler")); return safeHasInterface(named("com.sun.jersey.api.client.ClientHandler"));
} }
@Override @Override
@ -55,8 +56,8 @@ public final class JaxRsClientV1Instrumentation extends Instrumenter.Default {
named("handle") named("handle")
.and( .and(
takesArgument( takesArgument(
0, safeHasSuperType(named("com.sun.jersey.api.client.ClientRequest")))) 0, safeExtendsClass(named("com.sun.jersey.api.client.ClientRequest"))))
.and(returns(safeHasSuperType(named("com.sun.jersey.api.client.ClientResponse")))), .and(returns(safeExtendsClass(named("com.sun.jersey.api.client.ClientResponse")))),
JaxRsClientV1Instrumentation.class.getName() + "$HandleAdvice"); JaxRsClientV1Instrumentation.class.getName() + "$HandleAdvice");
} }

View File

@ -1,6 +1,7 @@
package datadog.trace.instrumentation.jaxrs; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.returns;
@ -24,7 +25,7 @@ public final class JaxRsClientInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("javax.ws.rs.client.ClientBuilder")); return safeExtendsClass(named("javax.ws.rs.client.ClientBuilder"));
} }
@Override @Override
@ -43,7 +44,7 @@ public final class JaxRsClientInstrumentation extends Instrumenter.Default {
@Override @Override
public Map<? extends ElementMatcher<? super MethodDescription>, String> transformers() { public Map<? extends ElementMatcher<? super MethodDescription>, String> transformers() {
return singletonMap( 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"); JaxRsClientInstrumentation.class.getName() + "$ClientBuilderAdvice");
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jdbc; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
@ -27,7 +27,7 @@ public final class ConnectionInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("java.sql.Connection"))); return not(isInterface()).and(safeHasInterface(named("java.sql.Connection")));
} }
@Override @Override
@ -43,7 +43,7 @@ public final class ConnectionInstrumentation extends Instrumenter.Default {
nameStartsWith("prepare") nameStartsWith("prepare")
.and(takesArgument(0, String.class)) .and(takesArgument(0, String.class))
// Also include CallableStatement, which is a sub type of PreparedStatement // 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"); ConnectionInstrumentation.class.getName() + "$ConnectionPrepareAdvice");
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jdbc; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -42,7 +42,7 @@ public final class DataSourceInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.sql.DataSource"))); return not(isInterface()).and(safeHasInterface(named("javax.sql.DataSource")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jdbc; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
@ -30,7 +30,7 @@ public final class DriverInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("java.sql.Driver"))); return not(isInterface()).and(safeHasInterface(named("java.sql.Driver")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jdbc; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE;
@ -35,7 +35,7 @@ public final class PreparedStatementInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("java.sql.PreparedStatement"))); return not(isInterface()).and(safeHasInterface(named("java.sql.PreparedStatement")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jdbc; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE; import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE;
@ -35,7 +35,7 @@ public final class StatementInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("java.sql.Statement"))); return not(isInterface()).and(safeHasInterface(named("java.sql.Statement")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jetty8; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isPublic;
@ -30,7 +30,7 @@ public final class JettyHandlerInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) 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"))); .and(not(named("org.eclipse.jetty.server.handler.HandlerWrapper")));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jms; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -37,7 +37,7 @@ public final class JMSMessageConsumerInstrumentation extends Instrumenter.Defaul
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.jms.MessageConsumer"))); return not(isInterface()).and(safeHasInterface(named("javax.jms.MessageConsumer")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jms; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -35,7 +35,7 @@ public final class JMSMessageListenerInstrumentation extends Instrumenter.Defaul
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.jms.MessageListener"))); return not(isInterface()).and(safeHasInterface(named("javax.jms.MessageListener")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jms; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -37,7 +37,7 @@ public final class JMSMessageProducerInstrumentation extends Instrumenter.Defaul
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.jms.MessageProducer"))); return not(isInterface()).and(safeHasInterface(named("javax.jms.MessageProducer")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.jsp; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.jsp.JSPDecorator.DECORATE; import static datadog.trace.instrumentation.jsp.JSPDecorator.DECORATE;
@ -31,7 +31,7 @@ public final class JSPInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.servlet.jsp.HttpJspPage"))); return not(isInterface()).and(safeHasInterface(named("javax.servlet.jsp.HttpJspPage")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.netty40; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -36,7 +36,7 @@ public class ChannelFutureListenerInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("io.netty.channel.ChannelFutureListener"))); .and(safeHasInterface(named("io.netty.channel.ChannelFutureListener")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.netty40; 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 datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -48,7 +48,7 @@ public class NettyChannelPipelineInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("io.netty.channel.ChannelPipeline"))); return not(isInterface()).and(safeHasInterface(named("io.netty.channel.ChannelPipeline")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.netty41; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -36,7 +36,7 @@ public class ChannelFutureListenerInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("io.netty.channel.ChannelFutureListener"))); .and(safeHasInterface(named("io.netty.channel.ChannelFutureListener")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.netty41; 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 datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -48,7 +48,7 @@ public class NettyChannelPipelineInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("io.netty.channel.ChannelPipeline"))); return not(isInterface()).and(safeHasInterface(named("io.netty.channel.ChannelPipeline")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.play24; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.returns;
@ -22,7 +22,7 @@ public final class PlayInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("play.api.mvc.Action")); return safeHasInterface(named("play.api.mvc.Action"));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.play26; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.returns;
@ -22,7 +22,7 @@ public final class PlayInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return safeHasSuperType(named("play.api.mvc.Action")); return safeHasInterface(named("play.api.mvc.Action"));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.playws1; 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.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.playws1.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.playws1.HeadersInjectAdapter.SETTER;
@ -33,7 +33,7 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default {
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
// CachingAsyncHttpClient rejects overrides to AsyncHandler // CachingAsyncHttpClient rejects overrides to AsyncHandler
// It also delegates to another AsyncHttpClient // 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"))); .and(not(named("play.api.libs.ws.ahc.cache.CachingAsyncHttpClient")));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.playws21; 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.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.playws21.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.playws21.HeadersInjectAdapter.SETTER;
@ -33,7 +33,7 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default {
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
// CachingAsyncHttpClient rejects overrides to AsyncHandler // CachingAsyncHttpClient rejects overrides to AsyncHandler
// It also delegates to another AsyncHttpClient // 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"))); .and(not(named("play.api.libs.ws.ahc.cache.CachingAsyncHttpClient")));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.playws2; 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.propagate;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.playws2.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.playws2.HeadersInjectAdapter.SETTER;
@ -33,7 +33,7 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default {
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
// CachingAsyncHttpClient rejects overrides to AsyncHandler // CachingAsyncHttpClient rejects overrides to AsyncHandler
// It also delegates to another AsyncHttpClient // 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"))); .and(not(named("play.api.libs.ws.ahc.cache.CachingAsyncHttpClient")));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.rabbitmq.amqp; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan;
@ -56,7 +56,7 @@ public class RabbitChannelInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("com.rabbitmq.client.Channel"))); return not(isInterface()).and(safeHasInterface(named("com.rabbitmq.client.Channel")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.rabbitmq.amqp; 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.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.instrumentation.rabbitmq.amqp.RabbitDecorator.DECORATE; import static datadog.trace.instrumentation.rabbitmq.amqp.RabbitDecorator.DECORATE;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -28,7 +28,7 @@ public class RabbitCommandInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("com.rabbitmq.client.Command"))); return not(isInterface()).and(safeHasInterface(named("com.rabbitmq.client.Command")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.ratpack; 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 datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.named;
@ -25,7 +25,7 @@ public final class ContinuationInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
return safeHasSuperType(named("ratpack.exec.internal.Continuation")); return safeHasInterface(named("ratpack.exec.internal.Continuation"));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.ratpack; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -25,7 +25,7 @@ public class ServerErrorHandlerInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface().or(isAbstract())) return not(isInterface().or(isAbstract()))
.and(safeHasSuperType(named("ratpack.error.ServerErrorHandler"))); .and(safeHasInterface(named("ratpack.error.ServerErrorHandler")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.reactor.core; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -36,7 +36,7 @@ public final class FluxAndMonoInstrumentation extends Instrumenter.Default {
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isAbstract()) return not(isAbstract())
.and( .and(
safeHasSuperType( safeExtendsClass(
named("reactor.core.publisher.Mono").or(named("reactor.core.publisher.Flux")))); named("reactor.core.publisher.Mono").or(named("reactor.core.publisher.Flux"))));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.rmi.client; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -33,7 +33,7 @@ public final class RmiClientInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("sun.rmi.server.UnicastRef"))); return not(isInterface()).and(safeExtendsClass(named("sun.rmi.server.UnicastRef")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.rmi.context.client; 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.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.instrumentation.rmi.context.ContextPropagator.PROPAGATOR; import static datadog.trace.instrumentation.rmi.context.ContextPropagator.PROPAGATOR;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -53,7 +53,7 @@ public class RmiClientContextInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("sun.rmi.transport.StreamRemoteCall"))); return not(isInterface()).and(safeExtendsClass(named("sun.rmi.transport.StreamRemoteCall")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.rmi.context.server; 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 datadog.trace.instrumentation.rmi.context.ContextPropagator.DD_CONTEXT_CALL_ID;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -28,7 +28,7 @@ public class RmiServerContextInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("sun.rmi.transport.ObjectTable"))); return not(isInterface()).and(safeExtendsClass(named("sun.rmi.transport.ObjectTable")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.rmi.server; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.bootstrap.instrumentation.rmi.ThreadLocalContext.THREAD_LOCAL_CONTEXT; import static datadog.trace.bootstrap.instrumentation.rmi.ThreadLocalContext.THREAD_LOCAL_CONTEXT;
@ -43,7 +43,7 @@ public final class RmiServerInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("java.rmi.server.RemoteServer"))); return not(isInterface()).and(safeExtendsClass(named("java.rmi.server.RemoteServer")));
} }
@Override @Override

View File

@ -1,7 +1,7 @@
package datadog.trace.instrumentation.servlet3; package datadog.trace.instrumentation.servlet3;
import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; 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.bootstrap.instrumentation.api.AgentTracer.propagate;
import static datadog.trace.instrumentation.servlet3.HttpServletRequestInjectAdapter.SETTER; import static datadog.trace.instrumentation.servlet3.HttpServletRequestInjectAdapter.SETTER;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
@ -38,7 +38,7 @@ public final class AsyncContextInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.servlet.AsyncContext"))); return not(isInterface()).and(safeHasInterface(named("javax.servlet.AsyncContext")));
} }
@Override @Override

View File

@ -1,7 +1,7 @@
package datadog.trace.instrumentation.servlet.dispatcher; package datadog.trace.instrumentation.servlet.dispatcher;
import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
@ -46,7 +46,7 @@ public final class RequestDispatcherInstrumentation extends Instrumenter.Default
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.servlet.RequestDispatcher"))); return not(isInterface()).and(safeHasInterface(named("javax.servlet.RequestDispatcher")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.servlet.dispatcher; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isPublic;
@ -27,7 +27,7 @@ public final class ServletContextInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.servlet.ServletContext"))); return not(isInterface()).and(safeHasInterface(named("javax.servlet.ServletContext")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.servlet.filter; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -44,7 +44,7 @@ public final class FilterInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.servlet.Filter"))); return not(isInterface()).and(safeHasInterface(named("javax.servlet.Filter")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.servlet.http; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -46,7 +46,7 @@ public final class HttpServletInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()).and(safeHasSuperType(named("javax.servlet.http.HttpServlet"))); return not(isInterface()).and(safeExtendsClass(named("javax.servlet.http.HttpServlet")));
} }
/** /**

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.servlet.http; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
@ -44,7 +44,7 @@ public final class HttpServletResponseInstrumentation extends Instrumenter.Defau
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("javax.servlet.http.HttpServletResponse"))); .and(safeHasInterface(named("javax.servlet.http.HttpServletResponse")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.springwebflux.client; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.isPublic;
@ -37,7 +37,7 @@ public class DefaultWebClientInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<? super TypeDescription> typeMatcher() { public ElementMatcher<? super TypeDescription> typeMatcher() {
return safeHasSuperType( return safeHasInterface(
named("org.springframework.web.reactive.function.client.ExchangeFunction")); named("org.springframework.web.reactive.function.client.ExchangeFunction"));
} }

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.springwebflux.server; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isInterface; import static net.bytebuddy.matcher.ElementMatchers.isInterface;
@ -25,7 +25,7 @@ public final class HandlerAdapterInstrumentation extends AbstractWebfluxInstrume
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(not(isAbstract())) .and(not(isAbstract()))
.and(safeHasSuperType(named("org.springframework.web.reactive.HandlerAdapter"))); .and(safeHasInterface(named("org.springframework.web.reactive.HandlerAdapter")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.springwebflux.server; 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 java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isAbstract; import static net.bytebuddy.matcher.ElementMatchers.isAbstract;
import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@ -28,7 +28,7 @@ public final class RouterFunctionInstrumentation extends AbstractWebfluxInstrume
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isAbstract()) return not(isAbstract())
.and( .and(
safeHasSuperType( safeExtendsClass(
// TODO: this doesn't handle nested routes (DefaultNestedRouterFunction) // TODO: this doesn't handle nested routes (DefaultNestedRouterFunction)
named( named(
"org.springframework.web.reactive.function.server.RouterFunctions$DefaultRouterFunction"))); "org.springframework.web.reactive.function.server.RouterFunctions$DefaultRouterFunction")));

View File

@ -1,7 +1,7 @@
package datadog.trace.instrumentation.springweb; package datadog.trace.instrumentation.springweb;
import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
@ -37,7 +37,7 @@ public final class HandlerAdapterInstrumentation extends Instrumenter.Default {
@Override @Override
public ElementMatcher<TypeDescription> typeMatcher() { public ElementMatcher<TypeDescription> typeMatcher() {
return not(isInterface()) return not(isInterface())
.and(safeHasSuperType(named("org.springframework.web.servlet.HandlerAdapter"))); .and(safeHasInterface(named("org.springframework.web.servlet.HandlerAdapter")));
} }
@Override @Override

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.twilio; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.twilio.TwilioClientDecorator.DECORATE; 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. */ /** Match any child class of the base Twilio service classes. */
@Override @Override
public ElementMatcher<? super net.bytebuddy.description.type.TypeDescription> typeMatcher() { public ElementMatcher<? super net.bytebuddy.description.type.TypeDescription> typeMatcher() {
return safeHasSuperType( return safeExtendsClass(
named("com.twilio.base.Creator") named("com.twilio.base.Creator")
.or(named("com.twilio.base.Deleter")) .or(named("com.twilio.base.Deleter"))
.or(named("com.twilio.base.Fetcher")) .or(named("com.twilio.base.Fetcher"))

View File

@ -1,6 +1,6 @@
package datadog.trace.instrumentation.twilio; 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.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.twilio.TwilioClientDecorator.DECORATE; import static datadog.trace.instrumentation.twilio.TwilioClientDecorator.DECORATE;
@ -35,7 +35,7 @@ public class TwilioSyncInstrumentation extends Instrumenter.Default {
public net.bytebuddy.matcher.ElementMatcher< public net.bytebuddy.matcher.ElementMatcher<
? super net.bytebuddy.description.type.TypeDescription> ? super net.bytebuddy.description.type.TypeDescription>
typeMatcher() { typeMatcher() {
return safeHasSuperType( return safeExtendsClass(
named("com.twilio.base.Creator") named("com.twilio.base.Creator")
.or(named("com.twilio.base.Deleter")) .or(named("com.twilio.base.Deleter"))
.or(named("com.twilio.base.Fetcher")) .or(named("com.twilio.base.Fetcher"))