Skip to content

Commit b466df0

Browse files
committed
add ExtendedOpenTelemetry
1 parent 66d5921 commit b466df0

File tree

6 files changed

+213
-12
lines changed

6 files changed

+213
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.common;
7+
8+
import application.io.opentelemetry.common.ComponentLoader;
9+
10+
public class ApplicationComponentLoader155 implements ComponentLoader {
11+
12+
private final io.opentelemetry.common.ComponentLoader componentLoader;
13+
14+
public ApplicationComponentLoader155(io.opentelemetry.common.ComponentLoader componentLoader) {
15+
this.componentLoader = componentLoader;
16+
}
17+
18+
@Override
19+
public <T> Iterable<T> load(Class<T> aClass) {
20+
return componentLoader.load(aClass);
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator;
27

38
import application.io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
49
import application.io.opentelemetry.api.incubator.config.ConfigProvider;
5-
610
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.ApplicationOpenTelemetry127;
11+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config.ApplicationConfigProvider155Incubator;
712

813
public class ApplicationOpenTelemetry155Incubator extends ApplicationOpenTelemetry127
914
implements ExtendedOpenTelemetry {
1015

11-
io.opentelemetry.api.incubator.ExtendedOpenTelemetry extendedOpenTelemetry =
12-
(io.opentelemetry.api.incubator.ExtendedOpenTelemetry)
13-
io.opentelemetry.api.GlobalOpenTelemetry.get();
16+
private final ConfigProvider configProvider =
17+
new ApplicationConfigProvider155Incubator(
18+
((io.opentelemetry.api.incubator.ExtendedOpenTelemetry)
19+
io.opentelemetry.api.GlobalOpenTelemetry.get())
20+
.getConfigProvider());
1421

1522
@Override
1623
public ConfigProvider getConfigProvider() {
17-
return extendedOpenTelemetry.getConfigProvider();
24+
return configProvider;
1825
}
1926
}

instrumentation/opentelemetry-api/opentelemetry-api-1.55/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_55/incubator/OpenTelemetryIncubatorInstrumentation.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator;/*
1+
/*
22
* Copyright The OpenTelemetry Authors
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator;
7+
68
import static net.bytebuddy.matcher.ElementMatchers.named;
79
import static net.bytebuddy.matcher.ElementMatchers.none;
810

911
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1012
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
11-
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_52.incubator.logs.ApplicationLoggerFactory152Incubator;
13+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config.ApplicationConfigProvider155Incubator;
14+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config.ApplicationDeclarativeConfigProperties155Incubator;
1215
import net.bytebuddy.asm.Advice;
1316
import net.bytebuddy.description.type.TypeDescription;
1417
import net.bytebuddy.matcher.ElementMatcher;
@@ -30,9 +33,11 @@ public void transform(TypeTransformer transformer) {
3033
public static class InitAdvice {
3134
@Advice.OnMethodEnter
3235
public static void init() {
33-
// the sole purpose of this advice is to ensure that ApplicationLoggerFactory152Incubator is
36+
// the sole purpose of this advice is to ensure that the classes are
3437
// recognized as helper class and injected into class loader
35-
ApplicationLoggerFactory152Incubator.class.getName();
38+
ApplicationOpenTelemetry155Incubator.class.getName();
39+
ApplicationDeclarativeConfigProperties155Incubator.class.getName();
40+
ApplicationConfigProvider155Incubator.class.getName();
3641
}
3742
}
3843
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,28 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config;
27

38
import application.io.opentelemetry.api.incubator.config.ConfigProvider;
49
import application.io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
510
import javax.annotation.Nullable;
611

712
public class ApplicationConfigProvider155Incubator implements ConfigProvider {
13+
14+
private final DeclarativeConfigProperties declarativeConfigProperties;
15+
16+
public ApplicationConfigProvider155Incubator(
17+
io.opentelemetry.api.incubator.config.ConfigProvider configProvider) {
18+
this.declarativeConfigProperties =
19+
new ApplicationDeclarativeConfigProperties155Incubator(
20+
configProvider.getInstrumentationConfig());
21+
}
22+
823
@Nullable
924
@Override
1025
public DeclarativeConfigProperties getInstrumentationConfig() {
11-
return null;
26+
return declarativeConfigProperties;
1227
}
1328
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,122 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator.config;
27

38
import application.io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
9+
import application.io.opentelemetry.common.ComponentLoader;
10+
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.common.ApplicationComponentLoader155;
11+
import java.util.List;
12+
import java.util.Set;
13+
import java.util.stream.Collectors;
14+
import javax.annotation.Nullable;
15+
16+
public class ApplicationDeclarativeConfigProperties155Incubator
17+
implements DeclarativeConfigProperties {
18+
private final io.opentelemetry.api.incubator.config.DeclarativeConfigProperties
19+
instrumentationConfig;
20+
21+
public ApplicationDeclarativeConfigProperties155Incubator(
22+
io.opentelemetry.api.incubator.config.DeclarativeConfigProperties instrumentationConfig) {
23+
this.instrumentationConfig = instrumentationConfig;
24+
}
25+
26+
@Nullable
27+
@Override
28+
public String getString(String name) {
29+
return instrumentationConfig.getString(name);
30+
}
31+
32+
@Override
33+
public String getString(String name, String defaultValue) {
34+
return instrumentationConfig.getString(name, defaultValue);
35+
}
36+
37+
@Nullable
38+
@Override
39+
public Boolean getBoolean(String name) {
40+
return instrumentationConfig.getBoolean(name);
41+
}
42+
43+
@Override
44+
public boolean getBoolean(String name, boolean defaultValue) {
45+
return instrumentationConfig.getBoolean(name, defaultValue);
46+
}
47+
48+
@Nullable
49+
@Override
50+
public Integer getInt(String name) {
51+
return instrumentationConfig.getInt(name);
52+
}
53+
54+
@Override
55+
public int getInt(String name, int defaultValue) {
56+
return instrumentationConfig.getInt(name, defaultValue);
57+
}
58+
59+
@Nullable
60+
@Override
61+
public Long getLong(String name) {
62+
return instrumentationConfig.getLong(name);
63+
}
64+
65+
@Override
66+
public long getLong(String name, long defaultValue) {
67+
return instrumentationConfig.getLong(name, defaultValue);
68+
}
69+
70+
@Nullable
71+
@Override
72+
public Double getDouble(String name) {
73+
return instrumentationConfig.getDouble(name);
74+
}
75+
76+
@Override
77+
public double getDouble(String name, double defaultValue) {
78+
return instrumentationConfig.getDouble(name, defaultValue);
79+
}
80+
81+
@Nullable
82+
@Override
83+
public <T> List<T> getScalarList(String name, Class<T> scalarType) {
84+
return instrumentationConfig.getScalarList(name, scalarType);
85+
}
86+
87+
@Override
88+
public <T> List<T> getScalarList(String name, Class<T> scalarType, List<T> defaultValue) {
89+
return instrumentationConfig.getScalarList(name, scalarType, defaultValue);
90+
}
91+
92+
@Nullable
93+
@Override
94+
public DeclarativeConfigProperties getStructured(String name) {
95+
return new ApplicationDeclarativeConfigProperties155Incubator(
96+
instrumentationConfig.getStructured(name));
97+
}
98+
99+
@Nullable
100+
@Override
101+
public List<DeclarativeConfigProperties> getStructuredList(String name) {
102+
List<io.opentelemetry.api.incubator.config.DeclarativeConfigProperties> structuredList =
103+
instrumentationConfig.getStructuredList(name);
104+
if (structuredList == null) {
105+
return null;
106+
}
107+
108+
return structuredList.stream()
109+
.map(e -> new ApplicationDeclarativeConfigProperties155Incubator(e))
110+
.collect(Collectors.toList());
111+
}
112+
113+
@Override
114+
public Set<String> getPropertyKeys() {
115+
return instrumentationConfig.getPropertyKeys();
116+
}
4117

5-
public class ApplicationDeclarativeConfigProperties155Incubator implements
6-
DeclarativeConfigProperties {}
118+
@Override
119+
public ComponentLoader getComponentLoader() {
120+
return new ApplicationComponentLoader155(instrumentationConfig.getComponentLoader());
121+
}
122+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_55.incubator;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import io.opentelemetry.api.GlobalOpenTelemetry;
11+
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
12+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
13+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
14+
import org.junit.jupiter.api.BeforeEach;
15+
import org.junit.jupiter.api.Test;
16+
import org.junit.jupiter.api.extension.RegisterExtension;
17+
18+
class ExtendedOpenTelemetryTest {
19+
@RegisterExtension
20+
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();
21+
22+
private ExtendedOpenTelemetry extendedOpenTelemetry;
23+
24+
@BeforeEach
25+
void setup() {
26+
extendedOpenTelemetry = (ExtendedOpenTelemetry) GlobalOpenTelemetry.get();
27+
}
28+
29+
@Test
30+
void getConfig() {
31+
DeclarativeConfigProperties instrumentationConfig =
32+
extendedOpenTelemetry.getConfigProvider().getInstrumentationConfig();
33+
// todo test for not null with declarative config present
34+
assertThat(instrumentationConfig).isNull();
35+
}
36+
}

0 commit comments

Comments
 (0)