restore classLoaderMatcher to make instrumentation safer
This commit is contained in:
parent
80b4a9790c
commit
2312c13aa2
|
@ -2,9 +2,11 @@ muzzle {
|
||||||
pass {
|
pass {
|
||||||
group = "javax.servlet"
|
group = "javax.servlet"
|
||||||
module = "servlet-api"
|
module = "servlet-api"
|
||||||
versions = "[2.3, 2.5]"
|
versions = "[2.3, 3.0)"
|
||||||
assertInverse = true
|
assertInverse = true
|
||||||
}
|
}
|
||||||
|
// can't add a fail block for servlet 3, because servlet 3 is backward compatible with servlet 2.3+,
|
||||||
|
// meaning that for every class that exists in servlet 2, it also exists in servlet 3
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "${rootDir}/gradle/java.gradle"
|
apply from: "${rootDir}/gradle/java.gradle"
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package datadog.trace.instrumentation.servlet2;
|
package datadog.trace.instrumentation.servlet2;
|
||||||
|
|
||||||
|
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||||
|
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||||
|
|
||||||
import datadog.trace.agent.tooling.Instrumenter;
|
import datadog.trace.agent.tooling.Instrumenter;
|
||||||
|
import net.bytebuddy.matcher.ElementMatcher;
|
||||||
|
|
||||||
public abstract class AbstractServlet2Instrumentation extends Instrumenter.Default {
|
public abstract class AbstractServlet2Instrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
|
@ -8,6 +12,12 @@ public abstract class AbstractServlet2Instrumentation extends Instrumenter.Defau
|
||||||
super("servlet", "servlet-2");
|
super("servlet", "servlet-2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this is required to make sure servlet 2 instrumentation won't apply to servlet 3
|
||||||
|
@Override
|
||||||
|
public ElementMatcher<ClassLoader> classLoaderMatcher() {
|
||||||
|
return not(classLoaderHasClasses("javax.servlet.AsyncEvent", "javax.servlet.AsyncListener"));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] helperClassNames() {
|
public String[] helperClassNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
|
|
Loading…
Reference in New Issue