Skip to content

Commit e377301

Browse files
authored
Add nullaway to spring autoconfigure (#15170)
1 parent ed8209d commit e377301

File tree

13 files changed

+36
-9
lines changed

13 files changed

+36
-9
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("otel.library-instrumentation")
3+
id("otel.nullaway-conventions")
34
}
45

56
base.archivesName.set("opentelemetry-spring-boot-autoconfigure")

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.spring.autoconfigure;
77

8+
import static java.util.Objects.requireNonNull;
9+
810
import io.opentelemetry.api.OpenTelemetry;
911
import io.opentelemetry.api.incubator.config.ConfigProvider;
1012
import io.opentelemetry.api.trace.TracerProvider;
@@ -145,7 +147,7 @@ public InstrumentationConfig instrumentationConfig(ConfigProperties properties)
145147
@Bean
146148
public ConfigProperties otelProperties(
147149
AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
148-
return AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk);
150+
return requireNonNull(AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk));
149151
}
150152
}
151153

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/InstrumentationPropertyEnabled.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.spring.autoconfigure.internal;
77

8+
import static java.util.Objects.requireNonNull;
9+
810
import java.util.Map;
911
import java.util.Objects;
1012
import org.springframework.context.annotation.Condition;
@@ -25,7 +27,7 @@ public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)
2527

2628
return EarlyConfig.isInstrumentationEnabled(
2729
context.getEnvironment(),
28-
attributes.get("module").toString(),
29-
(boolean) attributes.get("enabledByDefault"));
30+
requireNonNull(attributes.get("module")).toString(),
31+
(boolean) requireNonNull(attributes.get("enabledByDefault")));
3032
}
3133
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/annotations/InstrumentationWithSpanAspect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.annotations;
77

88
import io.opentelemetry.api.OpenTelemetry;
9+
import javax.annotation.Nullable;
910
import org.aspectj.lang.ProceedingJoinPoint;
1011
import org.aspectj.lang.annotation.Around;
1112
import org.aspectj.lang.annotation.Aspect;
@@ -24,6 +25,7 @@ class InstrumentationWithSpanAspect extends WithSpanAspect {
2425
.InstrumentationAnnotationAttributeNameSupplier());
2526
}
2627

28+
@Nullable
2729
@Override
2830
@Around("@annotation(io.opentelemetry.instrumentation.annotations.WithSpan)")
2931
public Object traceMethod(ProceedingJoinPoint pjp) throws Throwable {

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/annotations/WithSpanAspect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.opentelemetry.instrumentation.api.annotation.support.async.AsyncOperationEndSupport;
1717
import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesExtractor;
1818
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
19+
import javax.annotation.Nullable;
1920
import org.aspectj.lang.ProceedingJoinPoint;
2021
import org.springframework.core.ParameterNameDiscoverer;
2122

@@ -64,6 +65,7 @@ private static Context parentContext(
6465
return request.inheritContext() ? parentContext : Context.root();
6566
}
6667

68+
@Nullable
6769
public Object traceMethod(ProceedingJoinPoint pjp) throws Throwable {
6870
JoinPointRequest request = requestFactory.create(pjp);
6971
Context parentContext = Context.current();

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/jdbc/DataSourcePostProcessor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.sql.SQLException;
1818
import java.sql.SQLFeatureNotSupportedException;
1919
import java.util.logging.Logger;
20+
import javax.annotation.Nullable;
2021
import javax.sql.DataSource;
2122
import org.springframework.aop.SpringProxy;
2223
import org.springframework.aop.framework.AdvisedSupport;
@@ -27,7 +28,7 @@
2728

2829
final class DataSourcePostProcessor implements BeanPostProcessor, Ordered {
2930

30-
private static final Class<?> ROUTING_DATA_SOURCE_CLASS = getRoutingDataSourceClass();
31+
@Nullable private static final Class<?> ROUTING_DATA_SOURCE_CLASS = getRoutingDataSourceClass();
3132

3233
private final ObjectProvider<OpenTelemetry> openTelemetryProvider;
3334
private final ObjectProvider<InstrumentationConfig> configProvider;
@@ -39,6 +40,7 @@ final class DataSourcePostProcessor implements BeanPostProcessor, Ordered {
3940
this.configProvider = configProvider;
4041
}
4142

43+
@Nullable
4244
private static Class<?> getRoutingDataSourceClass() {
4345
try {
4446
return Class.forName("org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource");

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/kafka/ConcurrentKafkaListenerContainerFactoryPostProcessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.instrumentation.spring.kafka.v2_7.SpringKafkaTelemetry;
99
import java.lang.reflect.Field;
1010
import java.util.function.Supplier;
11+
import javax.annotation.Nullable;
1112
import org.springframework.beans.factory.config.BeanPostProcessor;
1213
import org.springframework.kafka.config.AbstractKafkaListenerContainerFactory;
1314
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
@@ -47,6 +48,7 @@ public Object postProcessAfterInitialization(Object bean, String beanName) {
4748
return listenerContainerFactory;
4849
}
4950

51+
@Nullable
5052
private static <T> T readField(Object container, String filedName, Class<T> fieldType) {
5153
try {
5254
Field field = AbstractKafkaListenerContainerFactory.class.getDeclaredField(filedName);

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/Java17RuntimeMetricsProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1010
import io.opentelemetry.instrumentation.runtimemetrics.java17.RuntimeMetrics;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RuntimeMetricsConfigUtil;
12+
import javax.annotation.Nullable;
1213
import org.slf4j.Logger;
1314
import org.slf4j.LoggerFactory;
1415

@@ -26,6 +27,7 @@ public int minJavaVersion() {
2627
return 17;
2728
}
2829

30+
@Nullable
2931
@Override
3032
public AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config) {
3133
logger.debug("Use runtime metrics instrumentation for Java 17+");

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/Java8RuntimeMetricsProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1010
import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics;
1111
import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.RuntimeMetricsConfigUtil;
12+
import javax.annotation.Nullable;
1213
import org.slf4j.Logger;
1314
import org.slf4j.LoggerFactory;
1415

@@ -26,6 +27,7 @@ public int minJavaVersion() {
2627
return 8;
2728
}
2829

30+
@Nullable
2931
@Override
3032
public AutoCloseable start(OpenTelemetry openTelemetry, InstrumentationConfig config) {
3133
logger.debug("Use runtime metrics instrumentation for Java 8");

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/RuntimeMetricsAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation;
1111
import java.util.Comparator;
1212
import java.util.Optional;
13+
import javax.annotation.Nullable;
1314
import javax.annotation.PreDestroy;
1415
import org.slf4j.Logger;
1516
import org.slf4j.LoggerFactory;
@@ -31,7 +32,7 @@ public class RuntimeMetricsAutoConfiguration {
3132
private static final Logger logger =
3233
LoggerFactory.getLogger(RuntimeMetricsAutoConfiguration.class);
3334

34-
private AutoCloseable closeable;
35+
@Nullable private AutoCloseable closeable;
3536

3637
@PreDestroy
3738
public void stopMetrics() throws Exception {

0 commit comments

Comments
 (0)