Skip to content

Commit 11ebe32

Browse files
committed
Remove dependency to opentelemetry-sdk
Closes gh-37284
1 parent 262eb5c commit 11ebe32

File tree

3 files changed

+67
-13
lines changed

3 files changed

+67
-13
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/opentelemetry/OpenTelemetryAutoConfiguration.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.opentelemetry;
1818

19+
import java.util.Map.Entry;
20+
1921
import io.opentelemetry.api.OpenTelemetry;
2022
import io.opentelemetry.api.common.Attributes;
2123
import io.opentelemetry.context.propagation.ContextPropagators;
@@ -24,6 +26,7 @@
2426
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
2527
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
2628
import io.opentelemetry.sdk.resources.Resource;
29+
import io.opentelemetry.sdk.resources.ResourceBuilder;
2730
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2831
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
2932

@@ -71,7 +74,15 @@ Resource openTelemetryResource(Environment environment, OpenTelemetryProperties
7174
String applicationName = environment.getProperty("spring.application.name", DEFAULT_APPLICATION_NAME);
7275
return Resource.getDefault()
7376
.merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, applicationName)))
74-
.merge(properties.toResource());
77+
.merge(toResource(properties));
78+
}
79+
80+
private static Resource toResource(OpenTelemetryProperties properties) {
81+
ResourceBuilder builder = Resource.builder();
82+
for (Entry<String, String> entry : properties.getResourceAttributes().entrySet()) {
83+
builder.put(entry.getKey(), entry.getValue());
84+
}
85+
return builder.build();
7586
}
7687

7788
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/opentelemetry/OpenTelemetryProperties.java

-12
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818

1919
import java.util.HashMap;
2020
import java.util.Map;
21-
import java.util.Map.Entry;
22-
23-
import io.opentelemetry.sdk.resources.Resource;
24-
import io.opentelemetry.sdk.resources.ResourceBuilder;
2521

2622
import org.springframework.boot.context.properties.ConfigurationProperties;
2723

@@ -47,12 +43,4 @@ public void setResourceAttributes(Map<String, String> resourceAttributes) {
4743
this.resourceAttributes = resourceAttributes;
4844
}
4945

50-
Resource toResource() {
51-
ResourceBuilder builder = Resource.builder();
52-
for (Entry<String, String> entry : this.resourceAttributes.entrySet()) {
53-
builder.put(entry.getKey(), entry.getValue());
54-
}
55-
return builder.build();
56-
}
57-
5846
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright 2012-2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.actuate.autoconfigure.opentelemetry;
18+
19+
import org.junit.jupiter.api.Test;
20+
21+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
22+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
23+
import org.springframework.boot.testsupport.classpath.ClassPathExclusions;
24+
import org.springframework.context.annotation.Configuration;
25+
26+
import static org.assertj.core.api.Assertions.assertThat;
27+
import static org.assertj.core.api.Assertions.entry;
28+
29+
/**
30+
* Tests for {@link OpenTelemetryProperties}.
31+
*
32+
* @author Moritz Halbritter
33+
*/
34+
class OpenTelemetryPropertiesTests {
35+
36+
private final ApplicationContextRunner runner = new ApplicationContextRunner().withPropertyValues(
37+
"management.opentelemetry.resource-attributes.a=alpha",
38+
"management.opentelemetry.resource-attributes.b=beta");
39+
40+
@Test
41+
@ClassPathExclusions("opentelemetry-sdk-*")
42+
void shouldNotDependOnOpenTelemetrySdk() {
43+
this.runner.withUserConfiguration(TestConfiguration.class).run((context) -> {
44+
OpenTelemetryProperties properties = context.getBean(OpenTelemetryProperties.class);
45+
assertThat(properties.getResourceAttributes()).containsOnly(entry("a", "alpha"), entry("b", "beta"));
46+
});
47+
}
48+
49+
@Configuration(proxyBeanMethods = false)
50+
@EnableConfigurationProperties(OpenTelemetryProperties.class)
51+
private static class TestConfiguration {
52+
53+
}
54+
55+
}

0 commit comments

Comments
 (0)