Skip to content

Commit a853a04

Browse files
committed
muzzle
1 parent 8c76abb commit a853a04

File tree

4 files changed

+29
-27
lines changed

4 files changed

+29
-27
lines changed

dd-java-agent/instrumentation/mule-4/build.gradle

+1-4
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,7 @@ tasks.named("compileLatestDepForkedTestJava").configure {
130130
dependencies {
131131
compileOnly group: 'org.mule.runtime', name: 'mule-core', version: muleVersion
132132
compileOnly group: 'org.mule.runtime', name: 'mule-tracer-customization-impl', version: muleVersion
133-
main_java11CompileOnly project(':internal-api')
134-
main_java11CompileOnly project(':dd-java-agent:agent-tooling')
135-
main_java11CompileOnly project(':dd-java-agent:agent-bootstrap')
136-
main_java11CompileOnly sourceSets.main.output
133+
compileOnly sourceSets.main_java11.output
137134
testImplementation project(':dd-java-agent:instrumentation:aws-common')
138135
testImplementation project(':dd-java-agent:instrumentation:reactor-core-3.1')
139136
testImplementation project(':dd-java-agent:instrumentation:reactive-streams')

dd-java-agent/instrumentation/mule-4/src/main/java/datadog/trace/instrumentation/mule4/JpmsMuleInstrumentation.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import datadog.trace.agent.tooling.Instrumenter;
77
import datadog.trace.agent.tooling.InstrumenterModule;
88
import datadog.trace.api.Platform;
9+
import net.bytebuddy.asm.Advice;
10+
import net.bytebuddy.implementation.bytecode.assign.Assigner;
11+
import org.mule.runtime.tracer.api.EventTracer;
912

1013
@AutoService(InstrumenterModule.class)
1114
public class JpmsMuleInstrumentation extends InstrumenterModule.Tracing
@@ -38,6 +41,18 @@ public String[] helperClassNames() {
3841
@Override
3942
public void methodAdvice(MethodTransformer transformer) {
4043
// it does not work with typeInitializer()
41-
transformer.applyAdvice(isConstructor(), packageName + ".JpmsClearanceAdvice");
44+
transformer.applyAdvice(isConstructor(), packageName + "$JpmsClearanceAdvice");
45+
}
46+
47+
public static class JpmsClearanceAdvice {
48+
@Advice.OnMethodExit(suppress = Throwable.class)
49+
public static void openOnReturn(@Advice.This(typing = Assigner.Typing.DYNAMIC) Object self) {
50+
JpmsAdvisingHelper.allowAccessOnModuleClass(self.getClass());
51+
}
52+
53+
private static void muzzleCheck(final EventTracer<?> tracer) {
54+
// introduced in 4.5.0
55+
tracer.endCurrentSpan(null);
56+
}
4257
}
4358
}

dd-java-agent/instrumentation/mule-4/src/main/java11/datadog/trace/instrumentation/mule4/JpmsAdvisingHelper.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,18 @@
55
public class JpmsAdvisingHelper {
66
private static final WeakHashMap<Module, Boolean> ALREADY_PROCESSED_CACHE = new WeakHashMap<>();
77

8-
public static boolean isModuleAlreadyProcessed(final Module module) {
9-
return Boolean.TRUE.equals(ALREADY_PROCESSED_CACHE.putIfAbsent(module, Boolean.TRUE));
8+
public static void allowAccessOnModuleClass(final Class<?> cls) {
9+
final Module module = cls.getModule();
10+
if (module == null
11+
|| Boolean.TRUE.equals(ALREADY_PROCESSED_CACHE.putIfAbsent(module, Boolean.TRUE))) {
12+
return;
13+
}
14+
for (String pn : module.getPackages()) {
15+
try {
16+
module.addExports(pn, module.getClassLoader().getUnnamedModule());
17+
} catch (Throwable ignored) {
18+
}
19+
}
1020
}
1121

1222
private JpmsAdvisingHelper() {}

dd-java-agent/instrumentation/mule-4/src/main/java11/datadog/trace/instrumentation/mule4/JpmsClearanceAdvice.java

-20
This file was deleted.

0 commit comments

Comments
 (0)