Skip to content

Commit d96c3a3

Browse files
committed
simplify bytecode transform
1 parent ff89a97 commit d96c3a3

File tree

3 files changed

+17
-21
lines changed

3 files changed

+17
-21
lines changed

instrumentation/methods/javaagent/src/declarativeConfigTest/java/io/opentelemetry/javaagent/instrumentation/methods/MethodTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ void methodTraced() {
3737
equalTo(CODE_NAMESPACE, ConfigTracedCallable.class.getName()),
3838
equalTo(CODE_FUNCTION, "call"))));
3939
}
40+
4041
static class ConfigTracedCallable implements Callable<String> {
4142

4243
@Override

instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasSuperType;
1111
import static io.opentelemetry.javaagent.instrumentation.methods.MethodSingletons.getBootstrapLoader;
1212
import static io.opentelemetry.javaagent.instrumentation.methods.MethodSingletons.instrumenter;
13+
import static net.bytebuddy.matcher.ElementMatchers.any;
1314
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
1415
import static net.bytebuddy.matcher.ElementMatchers.named;
1516
import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
17+
import static net.bytebuddy.matcher.ElementMatchers.none;
1618

1719
import io.opentelemetry.api.trace.SpanKind;
1820
import io.opentelemetry.context.Context;
@@ -40,6 +42,9 @@ public MethodInstrumentation(String className, Map<String, SpanKind> methodNames
4042

4143
@Override
4244
public ElementMatcher<ClassLoader> classLoaderOptimization() {
45+
if (className == null) {
46+
return any();
47+
}
4348
ElementMatcher<ClassLoader> delegate = hasClassesNamed(className);
4449
return target -> {
4550
// hasClassesNamed does not support null class loader, so we provide a custom loader that
@@ -53,7 +58,7 @@ public ElementMatcher<ClassLoader> classLoaderOptimization() {
5358

5459
@Override
5560
public ElementMatcher<TypeDescription> typeMatcher() {
56-
return hasSuperType(named(className));
61+
return className == null ? none() : hasSuperType(named(className));
5762
}
5863

5964
@Override
@@ -95,9 +100,7 @@ public static void onEnter(
95100
@Advice.Local("otelScope") Scope scope) {
96101
Context parentContext = currentContext();
97102
classAndMethod =
98-
MethodAndType.create(
99-
ClassAndMethod.create(declaringClass, methodName),
100-
spanKind);
103+
MethodAndType.create(ClassAndMethod.create(declaringClass, methodName), spanKind);
101104

102105
if (!instrumenter().shouldStart(parentContext, classAndMethod)) {
103106
return;

instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentationModule.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@
55

66
package io.opentelemetry.javaagent.instrumentation.methods;
77

8-
import static java.util.Collections.emptyList;
9-
108
import com.google.auto.service.AutoService;
119
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1210
import io.opentelemetry.api.trace.SpanKind;
1311
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
1412
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1513
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1614
import io.opentelemetry.javaagent.tooling.config.MethodsConfigurationParser;
17-
import java.util.Arrays;
15+
import java.util.Collections;
1816
import java.util.List;
1917
import java.util.Map;
2018
import java.util.Set;
@@ -29,11 +27,18 @@ public class MethodInstrumentationModule extends InstrumentationModule {
2927

3028
public MethodInstrumentationModule() {
3129
super("methods");
30+
typeInstrumentations = createInstrumentations();
31+
}
3232

33+
private static List<TypeInstrumentation> createInstrumentations() {
3334
DeclarativeConfigProperties methods =
3435
AgentInstrumentationConfig.get().getDeclarativeConfig("methods");
35-
typeInstrumentations =
36+
List<TypeInstrumentation> list =
3637
methods != null ? MethodsConfig.parseDeclarativeConfig(methods) : parseConfigProperties();
38+
if (list.isEmpty()) {
39+
return Collections.singletonList(new MethodInstrumentation(null, Collections.emptyMap()));
40+
}
41+
return list;
3742
}
3843

3944
private static List<TypeInstrumentation> parseConfigProperties() {
@@ -54,19 +59,6 @@ private static List<TypeInstrumentation> parseConfigProperties() {
5459
.collect(Collectors.toList());
5560
}
5661

57-
// the default configuration has empty "otel.instrumentation.methods.include", and so doesn't
58-
// generate any TypeInstrumentation for muzzle to analyze
59-
@Override
60-
public List<String> getAdditionalHelperClassNames() {
61-
return typeInstrumentations.isEmpty()
62-
? emptyList()
63-
: Arrays.asList(
64-
"io.opentelemetry.javaagent.instrumentation.methods.MethodAndType",
65-
"io.opentelemetry.javaagent.instrumentation.methods.MethodSingletons",
66-
"io.opentelemetry.javaagent.instrumentation.methods.MethodSingletons$1",
67-
"io.opentelemetry.javaagent.instrumentation.methods.MethodSingletons$BootstrapLoader");
68-
}
69-
7062
@Override
7163
public List<TypeInstrumentation> typeInstrumentations() {
7264
return typeInstrumentations;

0 commit comments

Comments
 (0)