Skip to content

Commit e08bdda

Browse files
committed
re-use library to read build-info.properties
1 parent a6bcc22 commit e08bdda

File tree

6 files changed

+19
-52
lines changed

6 files changed

+19
-52
lines changed

instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ dependencies {
4747
compileOnly(project(":instrumentation-annotations"))
4848

4949
compileOnly(project(":instrumentation:resources:library"))
50+
compileOnly(project(":instrumentation:spring:spring-boot-resources:library"))
5051
annotationProcessor("com.google.auto.service:auto-service")
5152
compileOnly("com.google.auto.service:auto-service-annotations")
5253

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/resources/OtelResourceAutoConfiguration.java

+17-7
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,14 @@
1717
import io.opentelemetry.instrumentation.resources.ProcessRuntimeResource;
1818
import io.opentelemetry.instrumentation.resources.ProcessRuntimeResourceProvider;
1919
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
20+
import io.opentelemetry.instrumentation.spring.resources.SpringBootServiceNameDetector;
21+
import io.opentelemetry.instrumentation.spring.resources.SpringBootServiceVersionDetector;
2022
import io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider;
2123
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
22-
import java.util.Optional;
23-
import org.springframework.beans.factory.annotation.Autowired;
2424
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2727
import org.springframework.boot.context.properties.EnableConfigurationProperties;
28-
import org.springframework.boot.info.BuildProperties;
2928
import org.springframework.context.annotation.Bean;
3029
import org.springframework.context.annotation.Configuration;
3130

@@ -41,9 +40,8 @@ public ResourceProvider otelEnvironmentResourceProvider() {
4140
}
4241

4342
@Bean
44-
public ResourceProvider otelSpringResourceProvider(
45-
@Autowired(required = false) BuildProperties buildProperties) {
46-
return new SpringResourceProvider(Optional.ofNullable(buildProperties));
43+
public ResourceProvider otelSpringResourceProvider() {
44+
return new SpringResourceProvider();
4745
}
4846

4947
@Bean
@@ -53,10 +51,22 @@ public ResourceProvider otelDistroVersionResourceProvider() {
5351

5452
@Bean
5553
@ConditionalOnClass(JarServiceNameDetector.class)
56-
public ResourceProvider otelJarResourceProvider() {
54+
public ResourceProvider otelJarNameResourceProvider() {
5755
return new JarServiceNameDetector();
5856
}
5957

58+
@Bean
59+
@ConditionalOnClass(SpringBootServiceNameDetector.class)
60+
public ResourceProvider otelSpringBootServiceNameResourceProvider() {
61+
return new SpringBootServiceNameDetector();
62+
}
63+
64+
@Bean
65+
@ConditionalOnClass(SpringBootServiceVersionDetector.class)
66+
public ResourceProvider otelSpringBootServiceVersionResourceProvider() {
67+
return new SpringBootServiceVersionDetector();
68+
}
69+
6070
@Bean
6171
@ConditionalOnClass(OsResource.class)
6272
public ResourceProvider otelOsResourceProvider() {

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/resources/SpringResourceProvider.java

-17
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,16 @@
1111
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
1212
import io.opentelemetry.sdk.resources.Resource;
1313
import io.opentelemetry.semconv.ResourceAttributes;
14-
import java.util.Optional;
15-
import org.springframework.boot.info.BuildProperties;
1614

1715
public class SpringResourceProvider implements ResourceProvider {
1816

19-
private final Optional<BuildProperties> buildProperties;
20-
21-
public SpringResourceProvider(Optional<BuildProperties> buildProperties) {
22-
this.buildProperties = buildProperties;
23-
}
24-
2517
@Override
2618
public Resource createResource(ConfigProperties configProperties) {
2719
AttributesBuilder attributesBuilder = Attributes.builder();
28-
buildProperties
29-
.map(BuildProperties::getName)
30-
.ifPresent(v -> attributesBuilder.put(ResourceAttributes.SERVICE_NAME, v));
31-
3220
String springApplicationName = configProperties.getString("spring.application.name");
3321
if (springApplicationName != null) {
3422
attributesBuilder.put(ResourceAttributes.SERVICE_NAME, springApplicationName);
3523
}
36-
37-
buildProperties
38-
.map(BuildProperties::getVersion)
39-
.ifPresent(v -> attributesBuilder.put(ResourceAttributes.SERVICE_VERSION, v));
40-
4124
return Resource.create(attributesBuilder.build());
4225
}
4326
}

instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java

-24
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package io.opentelemetry.instrumentation.spring.autoconfigure;
77

88
import static io.opentelemetry.semconv.ResourceAttributes.SERVICE_NAME;
9-
import static io.opentelemetry.semconv.ResourceAttributes.SERVICE_VERSION;
109
import static org.assertj.core.api.Assertions.assertThat;
1110

1211
import io.opentelemetry.api.OpenTelemetry;
@@ -17,11 +16,9 @@
1716
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1817
import io.opentelemetry.sdk.resources.Resource;
1918
import io.opentelemetry.sdk.trace.SdkTracerProvider;
20-
import java.util.Properties;
2119
import org.junit.jupiter.api.DisplayName;
2220
import org.junit.jupiter.api.Test;
2321
import org.springframework.boot.autoconfigure.AutoConfigurations;
24-
import org.springframework.boot.info.BuildProperties;
2522
import org.springframework.boot.test.context.TestConfiguration;
2623
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2724
import org.springframework.context.annotation.Bean;
@@ -120,27 +117,6 @@ void shouldDetermineServiceNameBySpringApplicationName() {
120117
});
121118
}
122119

123-
@Test
124-
@DisplayName(
125-
"when spring.application.name is set value should be passed to service name attribute")
126-
void shouldDetermineServiceNameAndVersionBySpringApplicationVersion() {
127-
Properties properties = new Properties();
128-
properties.put("name", "demo");
129-
properties.put("version", "0.3");
130-
this.contextRunner
131-
.withBean("buildProperties", BuildProperties.class, () -> new BuildProperties(properties))
132-
.withConfiguration(
133-
AutoConfigurations.of(
134-
OtelResourceAutoConfiguration.class, OpenTelemetryAutoConfiguration.class))
135-
.run(
136-
context -> {
137-
Resource otelResource = context.getBean("otelResource", Resource.class);
138-
139-
assertThat(otelResource.getAttribute(SERVICE_NAME)).isEqualTo("demo");
140-
assertThat(otelResource.getAttribute(SERVICE_VERSION)).isEqualTo("0.3");
141-
});
142-
}
143-
144120
@Test
145121
@DisplayName(
146122
"when spring application name and otel service name are not set service name should be default")

instrumentation/spring/spring-boot-resources/library/src/main/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceVersionDetector.java

-4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818
import java.util.Properties;
1919
import java.util.logging.Logger;
2020

21-
/**
22-
* Note: should not be used inside a spring application, where the spring.application.name is
23-
* already available.
24-
*/
2521
@AutoService(ResourceProvider.class)
2622
public class SpringBootServiceVersionDetector implements ResourceProvider {
2723

instrumentation/spring/starters/spring-boot-starter/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ dependencies {
1313
api("org.springframework.boot:spring-boot-starter-aop:$springBootVersion")
1414
api(project(":instrumentation:spring:spring-boot-autoconfigure"))
1515
implementation(project(":instrumentation:resources:library"))
16+
implementation(project(":instrumentation:spring:spring-boot-resources:library"))
1617
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
1718
api("io.opentelemetry:opentelemetry-api")
1819
api("io.opentelemetry:opentelemetry-exporter-logging")

0 commit comments

Comments
 (0)