Skip to content

Commit a8cd4f7

Browse files
committed
internal-reflection
1 parent 72edf42 commit a8cd4f7

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

instrumentation/internal/internal-reflection/javaagent-integration-tests/src/main/java/instrumentation/TestHelperClass.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55

66
package instrumentation;
77

8+
import io.opentelemetry.instrumentation.api.util.VirtualField;
9+
810
/**
911
* Class that will be injected in target classloader with inline instrumentation and proxied with
1012
* indy instrumentation
1113
*/
1214
public class TestHelperClass {
1315

16+
// virtual field needs to be in an helper class for indy instrumentation
17+
public static final VirtualField<Runnable, String> VIRTUAL_FIELD =
18+
VirtualField.find(Runnable.class, String.class);
19+
1420
public TestHelperClass() {}
1521
}

instrumentation/internal/internal-reflection/javaagent-integration-tests/src/main/java/instrumentation/TestInstrumentationModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,9 @@ public void injectClasses(ClassInjector injector) {
4040
.proxyBuilder("instrumentation.TestHelperClass")
4141
.inject(InjectionMode.CLASS_AND_RESOURCE);
4242
}
43+
44+
@Override
45+
public boolean isIndyReady() {
46+
return true;
47+
}
4348
}

instrumentation/internal/internal-reflection/javaagent-integration-tests/src/main/java/instrumentation/TestTypeInstrumentation.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
import static net.bytebuddy.matcher.ElementMatchers.named;
99

10-
import io.opentelemetry.instrumentation.api.util.VirtualField;
1110
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1211
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1312
import net.bytebuddy.asm.Advice;
13+
import net.bytebuddy.asm.Advice.AssignReturned;
1414
import net.bytebuddy.description.type.TypeDescription;
1515
import net.bytebuddy.matcher.ElementMatcher;
1616

@@ -32,21 +32,21 @@ public void transform(TypeTransformer transformer) {
3232
@SuppressWarnings("unused")
3333
public static class TestAdvice {
3434

35+
@AssignReturned.ToReturned
3536
@Advice.OnMethodExit
36-
public static void methodExit(
37-
@Advice.This Runnable test, @Advice.Return(readOnly = false) String result) {
38-
VirtualField.find(Runnable.class, String.class).set(test, "instrumented");
39-
result = "instrumented";
37+
public static String methodExit(@Advice.This Runnable test) {
38+
TestHelperClass.VIRTUAL_FIELD.set(test, "instrumented");
39+
return "instrumented";
4040
}
4141
}
4242

4343
@SuppressWarnings("unused")
4444
public static class Test2Advice {
4545

46+
@AssignReturned.ToReturned
4647
@Advice.OnMethodExit
47-
public static void methodExit(
48-
@Advice.This Runnable test, @Advice.Return(readOnly = false) String result) {
49-
result = VirtualField.find(Runnable.class, String.class).get(test);
48+
public static String methodExit(@Advice.This Runnable test) {
49+
return TestHelperClass.VIRTUAL_FIELD.get(test);
5050
}
5151
}
5252
}

0 commit comments

Comments
 (0)