Skip to content

Commit 2942c2d

Browse files
authored
Define servlet classloader matchers in the module (#130)
* Define servlet classloader matchers in the module Signed-off-by: Pavol Loffay <[email protected]> * Fix Signed-off-by: Pavol Loffay <[email protected]>
1 parent 4ed0308 commit 2942c2d

File tree

4 files changed

+24
-24
lines changed

4 files changed

+24
-24
lines changed

instrumentation/servlet/servlet-2.3/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ muzzle {
1414
fail {
1515
group = "javax.servlet"
1616
module = "javax.servlet-api"
17-
versions = "(3.0.1,)"
17+
versions = "(,)"
1818
}
1919
}
2020

instrumentation/servlet/servlet-2.3/src/main/java/io/opentelemetry/instrumentation/hypertrace/servlet/v2_3/Servlet2BodyInstrumentationModule.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,15 @@ public int getOrder() {
6666
return 1;
6767
}
6868

69+
// this is required to make sure servlet 2 instrumentation won't apply to servlet 3
70+
@Override
71+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
72+
// Request/response wrappers are available since servlet 2.3!
73+
return hasClassesNamed(
74+
"javax.servlet.http.HttpServlet", "javax.servlet.http.HttpServletRequestWrapper")
75+
.and(not(hasClassesNamed("javax.servlet.AsyncEvent", "javax.servlet.AsyncListener")));
76+
}
77+
6978
@Override
7079
public Map<String, String> contextStore() {
7180
return singletonMap("javax.servlet.ServletResponse", Integer.class.getName());
@@ -95,15 +104,6 @@ public List<TypeInstrumentation> typeInstrumentations() {
95104

96105
public static class Servlet2BodyInstrumentation implements TypeInstrumentation {
97106

98-
// this is required to make sure servlet 2 instrumentation won't apply to servlet 3
99-
@Override
100-
public ElementMatcher<ClassLoader> classLoaderMatcher() {
101-
// Request/response wrappers are available since servlet 2.3!
102-
return hasClassesNamed(
103-
"javax.servlet.http.HttpServlet", "javax.servlet.http.HttpServletRequestWrapper")
104-
.and(not(hasClassesNamed("javax.servlet.AsyncEvent", "javax.servlet.AsyncListener")));
105-
}
106-
107107
@Override
108108
public ElementMatcher<TypeDescription> typeMatcher() {
109109
return safeHasSuperType(

instrumentation/servlet/servlet-3.0/src/main/java/io/opentelemetry/instrumentation/hypertrace/servlet/v3_0/Servlet30BodyInstrumentationModule.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ public int getOrder() {
6666
return 1;
6767
}
6868

69+
@Override
70+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
71+
// Optimization for expensive typeMatcher.
72+
// ReadListener was added in 3.1
73+
return hasClassesNamed("javax.servlet.http.HttpServlet", "javax.servlet.AsyncEvent")
74+
.and(not(hasClassesNamed("javax.servlet.ReadListener")));
75+
}
76+
6977
@Override
7078
public String[] helperClassNames() {
7179
return new String[] {
@@ -91,14 +99,6 @@ public List<TypeInstrumentation> typeInstrumentations() {
9199

92100
private static class Servlet30BodyInstrumentation implements TypeInstrumentation {
93101

94-
@Override
95-
public ElementMatcher<ClassLoader> classLoaderMatcher() {
96-
// Optimization for expensive typeMatcher.
97-
// ReadListener was added in 3.1
98-
return hasClassesNamed("javax.servlet.http.HttpServlet", "javax.servlet.AsyncEvent")
99-
.and(not(hasClassesNamed("javax.servlet.ReadListener")));
100-
}
101-
102102
@Override
103103
public ElementMatcher<? super TypeDescription> typeMatcher() {
104104
return safeHasSuperType(

instrumentation/servlet/servlet-3.1/src/main/java/io/opentelemetry/instrumentation/hypertrace/servlet/v3_1/Servlet31BodyInstrumentationModule.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ public int getOrder() {
5959
return 1;
6060
}
6161

62+
@Override
63+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
64+
// Optimization for expensive typeMatcher.
65+
return hasClassesNamed("javax.servlet.http.HttpServlet", "javax.servlet.ReadListener");
66+
}
67+
6268
@Override
6369
public String[] helperClassNames() {
6470
return new String[] {
@@ -89,12 +95,6 @@ public List<TypeInstrumentation> typeInstrumentations() {
8995

9096
private static final class Servlet31BodyInstrumentation implements TypeInstrumentation {
9197

92-
@Override
93-
public ElementMatcher<ClassLoader> classLoaderMatcher() {
94-
// Optimization for expensive typeMatcher.
95-
return hasClassesNamed("javax.servlet.http.HttpServlet", "javax.servlet.ReadListener");
96-
}
97-
9898
@Override
9999
public ElementMatcher<? super TypeDescription> typeMatcher() {
100100
return safeHasSuperType(

0 commit comments

Comments
 (0)