Skip to content

Commit 38b9d43

Browse files
committed
add ExtendedOpenTelemetry
1 parent b466df0 commit 38b9d43

File tree

3 files changed

+87
-1
lines changed

3 files changed

+87
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55;
7+
8+
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
9+
import static java.util.Collections.singletonList;
10+
import static net.bytebuddy.matcher.ElementMatchers.not;
11+
12+
import com.google.auto.service.AutoService;
13+
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
14+
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
15+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
16+
import java.util.List;
17+
import net.bytebuddy.matcher.ElementMatcher;
18+
19+
@AutoService(InstrumentationModule.class)
20+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
21+
implements ExperimentalInstrumentationModule {
22+
public OpenTelemetryApiInstrumentationModule() {
23+
super("opentelemetry-api", "opentelemetry-api-1.55");
24+
}
25+
26+
@Override
27+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
28+
return hasClassesNamed("application.io.opentelemetry.api.common.Value")
29+
.and(
30+
// disable when incubating api is present
31+
not(hasClassesNamed("io.opentelemetry.api.incubator.ExtendedOpenTelemetry")));
32+
}
33+
34+
@Override
35+
public List<TypeInstrumentation> typeInstrumentations() {
36+
return singletonList(new OpenTelemetryInstrumentation());
37+
}
38+
39+
@Override
40+
public String getModuleGroup() {
41+
return "opentelemetry-api-bridge";
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55;
7+
8+
import static net.bytebuddy.matcher.ElementMatchers.named;
9+
import static net.bytebuddy.matcher.ElementMatchers.none;
10+
11+
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
12+
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
13+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.ApplicationOpenTelemetry155Incubator;
14+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config.ApplicationConfigProvider155Incubator;
15+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config.ApplicationDeclarativeConfigProperties155Incubator;
16+
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.description.type.TypeDescription;
18+
import net.bytebuddy.matcher.ElementMatcher;
19+
20+
public class OpenTelemetryInstrumentation implements TypeInstrumentation {
21+
22+
@Override
23+
public ElementMatcher<TypeDescription> typeMatcher() {
24+
return named("application.io.opentelemetry.api.GlobalOpenTelemetry");
25+
}
26+
27+
@Override
28+
public void transform(TypeTransformer transformer) {
29+
transformer.applyAdviceToMethod(
30+
none(), OpenTelemetryInstrumentation.class.getName() + "$InitAdvice");
31+
}
32+
33+
@SuppressWarnings({"ReturnValueIgnored", "unused"})
34+
public static class InitAdvice {
35+
@Advice.OnMethodEnter
36+
public static void init() {
37+
// the sole purpose of this advice is to ensure that the classes are
38+
// recognized as helper class and injected into class loader
39+
ApplicationOpenTelemetry155Incubator.class.getName();
40+
ApplicationDeclarativeConfigProperties155Incubator.class.getName();
41+
ApplicationConfigProvider155Incubator.class.getName();
42+
}
43+
}
44+
}

instrumentation/opentelemetry-api/opentelemetry-api-1.55/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_55/incubator/ExtendedOpenTelemetryTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ void setup() {
3030
void getConfig() {
3131
DeclarativeConfigProperties instrumentationConfig =
3232
extendedOpenTelemetry.getConfigProvider().getInstrumentationConfig();
33-
// todo test for not null with declarative config present
3433
assertThat(instrumentationConfig).isNull();
3534
}
3635
}

0 commit comments

Comments
 (0)