Skip to content

Commit 2f0f3d8

Browse files
bric3devflow.devflow-routing-intake
andauthored
Apply main forbidden APIs to instrumentation modules (#11623)
fix: apply main forbidden APIs to instrumentation refactor: Replace for bidden ElementMatchers API by HierarchyMatchers Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
1 parent 0121ec8 commit 2f0f3d8

4 files changed

Lines changed: 15 additions & 18 deletions

File tree

dd-java-agent/instrumentation/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ subprojects { Project subProj ->
4444

4545
// Add instrumentation-specific forbiddenApi rules
4646
subProj.tasks.withType(CheckForbiddenApis).configureEach {
47-
signaturesFiles += subProj.files("$rootDir/gradle/forbiddenApiFilters/instrumentation.txt")
47+
signaturesFiles = subProj.files(
48+
"$rootDir/gradle/forbiddenApiFilters/main.txt",
49+
"$rootDir/gradle/forbiddenApiFilters/instrumentation.txt")
4850
}
4951

5052

dd-java-agent/instrumentation/datadog/dynamic-instrumentation/span-origin/src/main/java/datadog/trace/instrumentation/codeorigin/CodeOriginInstrumentation.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package datadog.trace.instrumentation.codeorigin;
22

3-
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
4-
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
5-
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
6-
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
3+
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.declaresMethod;
4+
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface;
5+
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.isAnnotatedWith;
6+
import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy;
77

88
import datadog.trace.agent.tooling.Instrumenter;
99
import datadog.trace.agent.tooling.InstrumenterModule.Tracing;
10-
import datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers;
1110
import datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers;
1211
import datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.OneOf;
1312
import datadog.trace.api.InstrumenterConfig;
@@ -16,7 +15,6 @@
1615
import net.bytebuddy.description.NamedElement;
1716
import net.bytebuddy.description.type.TypeDescription;
1817
import net.bytebuddy.matcher.ElementMatcher;
19-
import net.bytebuddy.matcher.ElementMatchers;
2018

2119
public abstract class CodeOriginInstrumentation extends Tracing
2220
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
@@ -44,26 +42,20 @@ public String hierarchyMarkerType() {
4442
@Override
4543
public ElementMatcher<TypeDescription> hierarchyMatcher() {
4644
ElementMatcher.Junction<TypeDescription> matcher =
47-
HierarchyMatchers.declaresMethod(HierarchyMatchers.isAnnotatedWith(this.matcher));
45+
declaresMethod(isAnnotatedWith(this.matcher));
4846
if (InstrumenterConfig.get().isCodeOriginInterfaceSupport()) {
49-
matcher =
50-
matcher.or(
51-
HierarchyMatchers.implementsInterface(
52-
HierarchyMatchers.declaresMethod(
53-
HierarchyMatchers.isAnnotatedWith(this.matcher))));
47+
matcher = matcher.or(implementsInterface(declaresMethod(isAnnotatedWith(this.matcher))));
5448
}
5549
return matcher;
5650
}
5751

5852
@Override
5953
public void methodAdvice(MethodTransformer transformer) {
6054
transformer.applyAdvice(
61-
HierarchyMatchers.isAnnotatedWith(matcher),
62-
"datadog.trace.instrumentation.codeorigin.EntrySpanOriginAdvice");
55+
isAnnotatedWith(matcher), "datadog.trace.instrumentation.codeorigin.EntrySpanOriginAdvice");
6356
if (InstrumenterConfig.get().isCodeOriginInterfaceSupport()) {
6457
transformer.applyAdvice(
65-
ElementMatchers.isDeclaredBy(
66-
hasSuperType(isInterface().and(declaresMethod(isAnnotatedWith(matcher))))),
58+
isDeclaredBy(implementsInterface(declaresMethod(isAnnotatedWith(matcher)))),
6759
"datadog.trace.instrumentation.codeorigin.EntrySpanOriginAdvice");
6860
}
6961
}

dd-java-agent/instrumentation/liberty/liberty-20.0/src/main/java/datadog/trace/instrumentation/liberty20/PartHelper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.instrumentation.liberty20;
22

3+
import de.thetaphi.forbiddenapis.SuppressForbidden;
34
import java.lang.reflect.Method;
45
import java.util.ArrayList;
56
import java.util.Collection;
@@ -48,6 +49,7 @@ private static String getSubmittedFilename(Method method, Object part) {
4849
}
4950
}
5051

52+
@SuppressForbidden // split on single-character uses a fast path
5153
private static String getFilenameFromContentDisposition(Method getHeader, Object part) {
5254
if (getHeader == null) {
5355
return null;

dd-java-agent/instrumentation/spring/spring-core-3.2.2/src/main/java/datadog/trace/instrumentation/springcore/StreamUtilsInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.trace.instrumentation.springcore;
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
4+
import static java.nio.charset.StandardCharsets.UTF_8;
45
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
56
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
67
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
@@ -56,7 +57,7 @@ public static void checkReturnedObject(
5657

5758
private static void muzzleCheck() throws IOException {
5859
StreamUtils.copyToString(
59-
new ByteArrayInputStream("test".getBytes()), Charset.defaultCharset());
60+
new ByteArrayInputStream("test".getBytes(UTF_8)), Charset.defaultCharset());
6061
}
6162
}
6263
}

0 commit comments

Comments
 (0)