|
5 | 5 |
|
6 | 6 | package io.opentelemetry.javaagent.tooling;
|
7 | 7 |
|
| 8 | +import io.opentelemetry.javaagent.bootstrap.LambdaTransformer; |
8 | 9 | import java.lang.instrument.ClassFileTransformer;
|
9 | 10 | import java.lang.instrument.IllegalClassFormatException;
|
10 |
| -import java.security.ProtectionDomain; |
11 | 11 |
|
12 |
| -/** {@link ClassFileTransformer} for lambda instrumentation without jpms modules */ |
13 |
| -public class LambdaClassFileTransformer implements ClassFileTransformer { |
| 12 | +/** lambda transformer for java < 9 without jpms modules support */ |
| 13 | +public class Java8LambdaTransformer implements LambdaTransformer { |
14 | 14 |
|
15 | 15 | private final ClassFileTransformer delegate;
|
16 | 16 |
|
17 |
| - public LambdaClassFileTransformer(ClassFileTransformer delegate) { |
| 17 | + public Java8LambdaTransformer(ClassFileTransformer delegate) { |
18 | 18 | this.delegate = delegate;
|
19 | 19 | }
|
20 | 20 |
|
21 | 21 | @Override
|
22 |
| - public byte[] transform( |
23 |
| - ClassLoader loader, |
24 |
| - String className, |
25 |
| - Class<?> classBeingRedefined, |
26 |
| - ProtectionDomain protectionDomain, |
27 |
| - byte[] classfileBuffer) |
| 22 | + public byte[] transform(String className, Class<?> targetClass, byte[] classfileBuffer) |
28 | 23 | throws IllegalClassFormatException {
|
29 | 24 |
|
30 | 25 | // lambda instrumentation happens only when the lambda is defined, thus the classBeingRedefined
|
31 | 26 | // must be null otherwise we get a partial instrumentation, for example virtual fields are not
|
32 | 27 | // properly applied.
|
33 |
| - return delegate.transform(loader, className, null, null, classfileBuffer); |
| 28 | + return delegate.transform(targetClass.getClassLoader(), className, null, null, classfileBuffer); |
34 | 29 | }
|
35 | 30 | }
|
0 commit comments