Skip to content

Commit 4af59aa

Browse files
committed
muzzle
1 parent 0a7bf86 commit 4af59aa

File tree

4 files changed

+40
-29
lines changed

4 files changed

+40
-29
lines changed

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,19 @@ muzzle {
3535
module = 'mule-core'
3636
versions = "[$muleVersion,)"
3737
javaVersion = "17"
38-
assertInverse true
3938
excludeDependency 'om.google.guava:guava'
4039
excludeDependency 'com.google.code.findbugs:jsr305'
4140
additionalDependencies +="org.mule.runtime:mule-tracer-customization-impl:$muleVersion"
4241
}
42+
43+
fail {
44+
name = 'before-4.5.0'
45+
group = 'org.mule.runtime'
46+
module = 'mule-core'
47+
versions = "[, $muleVersion)"
48+
excludeDependency 'om.google.guava:guava'
49+
excludeDependency 'com.google.code.findbugs:jsr305'
50+
}
4351
}
4452

4553
apply from: "$rootDir/gradle/java.gradle"
@@ -130,10 +138,9 @@ tasks.named("compileLatestDepForkedTestJava").configure {
130138
dependencies {
131139
compileOnly group: 'org.mule.runtime', name: 'mule-core', version: muleVersion
132140
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
141+
compileOnly sourceSets.main_java11.output
142+
testImplementation sourceSets.main_java11.output
143+
137144
testImplementation project(':dd-java-agent:instrumentation:aws-common')
138145
testImplementation project(':dd-java-agent:instrumentation:reactor-core-3.1')
139146
testImplementation project(':dd-java-agent:instrumentation:reactive-streams')

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

Lines changed: 16 additions & 1 deletion
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(), getClass().getName() + "$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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,19 @@
33
import java.util.WeakHashMap;
44

55
public class JpmsAdvisingHelper {
6-
private static final WeakHashMap<Module, Boolean> ALREADY_PROCESSED_CACHE = new WeakHashMap<>();
6+
private static final WeakHashMap<Class<?>, 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+
if (Boolean.TRUE.equals(ALREADY_PROCESSED_CACHE.putIfAbsent(cls, Boolean.TRUE))) {
10+
return;
11+
}
12+
final Module module = cls.getModule();
13+
if (module != null) {
14+
try {
15+
module.addExports(cls.getPackageName(), module.getClassLoader().getUnnamedModule());
16+
} catch (Throwable ignored) {
17+
}
18+
}
1019
}
1120

1221
private JpmsAdvisingHelper() {}

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

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)