From e66d818206018086e8946da6bd868ab4032548ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Nov 2025 13:48:36 +0000 Subject: [PATCH 1/6] fix(deps): update errorproneversion to v2.44.0 --- dependencyManagement/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index be90c0255dee..94b2f126ea57 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -37,7 +37,7 @@ val DEPENDENCY_BOMS = listOf( val autoServiceVersion = "1.1.1" val autoValueVersion = "1.11.1" -val errorProneVersion = "2.43.0" +val errorProneVersion = "2.44.0" val byteBuddyVersion = "1.18.0" val asmVersion = "9.9" val jmhVersion = "1.37" From b5972b6c36b04bb0f23924e65e4e4e8f5ee04fbf Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 12 Nov 2025 20:27:26 +0200 Subject: [PATCH 2/6] fix some warnings --- .../otel.errorprone-conventions.gradle.kts | 1 + .../DeclarativeConfigPropertiesBridge.java | 16 ++++-- .../support/AnnotationReflectionHelper.java | 24 +++------ .../support/AttributeBindingFactory.java | 4 +- .../api/instrumenter/Instrumenter.java | 1 + .../api/instrumenter/UnsafeAttributes.java | 2 +- .../api/internal/Experimental.java | 4 +- .../api/internal/InstrumenterContext.java | 17 +++--- .../internal/RuntimeVirtualFieldSupplier.java | 1 + .../api/internal/ServiceLoaderUtil.java | 1 + .../cache/weaklockfree/WeakConcurrentMap.java | 3 +- .../api/semconv/http/HttpServerRoute.java | 16 ++---- .../docs/auditors/SuppressionListAuditor.java | 2 +- .../SupportedLibrariesAuditorTest.java | 2 +- .../auditors/SuppressionListAuditorTest.java | 2 +- .../apachedubbo/v2_7/DubboHeadersGetter.java | 2 +- .../v2_2/TracingRequestWrapperBase.java | 2 +- .../v3_11/TracingRequestWrapperBase.java | 2 +- .../v2_2/internal/SerializationUtil.java | 10 ++-- .../AwsJsonProtocolFactoryAccess.java | 11 ++-- .../awssdk/v2_2/internal/FieldMapping.java | 2 +- .../rest/v7_0/RestClientWrapper.java | 2 +- .../OpenTelemetryInstrumentationHelper.java | 4 +- .../grpc/v1_6/TracingClientInterceptor.java | 4 +- .../grpc/v1_6/TracingServerInterceptor.java | 4 +- .../influxdb/v2_4/InfluxDbObjetWrapper.java | 2 +- .../jedis/JedisRequestContext.java | 2 +- .../jms/v1_1/JavaxMessageAdapter.java | 2 +- .../jms/v3_0/JakartaMessageAdapter.java | 2 +- .../instrumentation/jmx/yaml/RuleParser.java | 8 +-- .../OpenTelemetryConsumerInterceptor.java | 3 +- .../OpenTelemetryProducerInterceptor.java | 3 +- .../OpenTelemetryMetricsReporter.java | 3 +- .../core/protocol/OtelCommandArgsUtil.java | 6 +-- .../ConnectionRequestInstrumentation.java | 2 +- .../netty/v3_8/util/HttpSchemeUtil.java | 7 ++- .../v4/common/FutureListenerWrappers.java | 2 +- .../v4/common/NettyFutureInstrumentation.java | 4 +- .../common/v4_0/internal/HttpSchemeUtil.java | 7 ++- .../v1_1/ChatCompletionEventsHelper.java | 2 +- .../v1_1/DelegatingInvocationHandler.java | 3 +- .../context/ContextKeyBridge.java | 6 +-- .../trace/ApplicationSpan.java | 2 +- .../trace/ApplicationSpanBuilder.java | 2 +- .../opentelemetryapi/trace/Bridging.java | 4 +- .../metrics/ObservableMeasurementWrapper.java | 3 +- .../v1_15/metrics/ApplicationMeter115.java | 5 +- .../logs/ApplicationLogRecordBuilder.java | 2 +- .../logs/ApplicationLogRecordBuilder142.java | 3 +- ...plicationLogRecordBuilder150Incubator.java | 10 ++-- .../play/v2_6/Play26Singletons.java | 2 +- .../v1_0/internal/R2dbcSqlCommenterUtil.java | 2 +- .../v3_1/ContextPropagationOperator.java | 2 +- .../kafka/v1_0/InstrumentedKafkaFlux.java | 2 +- .../resources/AttributeResourceProvider.java | 2 +- .../internal/MessageAttributesAccessor.java | 2 +- .../v2_0/internal/RestletHeadersGetter.java | 2 +- .../rmi/context/ContextPayload.java | 4 +- .../v5_0/ReceiveSpanFinishingCallback.java | 10 ++-- .../RxJava2AsyncOperationEndStrategy.java | 4 +- .../rxjava/v2_0/TracingAssembly.java | 1 + .../rxjava/v2_0/TracingObserver.java | 2 +- .../rxjava/v2_0/TracingParallelFlowable.java | 3 +- .../RxJava3AsyncOperationEndStrategy.java | 4 +- .../rxjava/v3_0/TracingAssembly.java | 1 + .../rxjava/v3_0/TracingParallelFlowable.java | 3 +- .../rxjava/v3_1_1/TracingAssembly.java | 1 + .../v3_1_1/TracingParallelFlowable.java | 3 +- .../servlet/ServletHelper.java | 2 +- .../servlet/javax/JavaxServletAccessor.java | 4 +- ...ListenerContainerFactoryPostProcessor.java | 2 +- .../properties/SpringConfigProperties.java | 4 +- .../SpringBootServiceNameDetector.java | 2 +- .../v4_1/MessageHeadersGetter.java | 16 +++--- .../v4_1/MessageHeadersSetter.java | 4 +- .../v4_1/TracingChannelInterceptor.java | 2 +- .../undertow/UndertowHelper.java | 4 +- .../zio/v2_0/TracingSupervisor.java | 4 +- ...ntimeFieldBasedImplementationSupplier.java | 2 +- .../tooling/util/ClassLoaderMap.java | 2 +- .../tooling/util/ClassLoaderValue.java | 4 +- .../javaagent/tooling/util/TrieImpl.java | 2 +- .../agent/builder/AgentBuilderUtil.java | 6 +-- ...bstractJvmKafkaSpringStarterSmokeTest.java | 2 +- .../smoketest/TelemetryRetriever.java | 4 +- .../test/utils/ExceptionUtils.java | 1 - .../testing/recording/RecordingExtension.java | 1 + .../testing/util/ContextStorageCloser.java | 4 +- .../common/AgentTestingExporterAccess.java | 54 +++++++++---------- .../common/TestAgentListenerAccess.java | 2 +- 90 files changed, 201 insertions(+), 211 deletions(-) diff --git a/conventions/src/main/kotlin/otel.errorprone-conventions.gradle.kts b/conventions/src/main/kotlin/otel.errorprone-conventions.gradle.kts index 4e5b220a693b..0bf8401c1bef 100644 --- a/conventions/src/main/kotlin/otel.errorprone-conventions.gradle.kts +++ b/conventions/src/main/kotlin/otel.errorprone-conventions.gradle.kts @@ -140,6 +140,7 @@ tasks { // This check causes too many failures, ignore the ones in tests disable("OtelCanIgnoreReturnValueSuggester") disable("OtelInternalJavadoc") + disable("SuppressWarningsWithoutExplanation") } } } diff --git a/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java index 928a17f5bd0e..0421148323e6 100644 --- a/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java +++ b/declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/DeclarativeConfigPropertiesBridge.java @@ -16,6 +16,7 @@ import java.util.Map; import java.util.Objects; import java.util.function.BiFunction; +import java.util.function.Function; import javax.annotation.Nullable; /** @@ -106,18 +107,17 @@ public Duration getDuration(String propertyName) { return Duration.ofMillis(millis); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we expect to have only lists of strings in override values @Override public List getList(String propertyName) { List propertyValue = getPropertyValue( propertyName, - List.class, + o -> (List) o, (properties, lastPart) -> properties.getScalarList(lastPart, String.class)); return propertyValue == null ? Collections.emptyList() : propertyValue; } - @SuppressWarnings("unchecked") @Override public Map getMap(String propertyName) { DeclarativeConfigProperties propertyValue = @@ -147,7 +147,15 @@ private T getPropertyValue( String property, Class clazz, BiFunction extractor) { - T override = clazz.cast(overrideValues.get(property)); + return getPropertyValue(property, clazz::cast, extractor); + } + + @Nullable + private T getPropertyValue( + String property, + Function converter, + BiFunction extractor) { + T override = converter.apply(overrideValues.get(property)); if (override != null) { return override; } diff --git a/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AnnotationReflectionHelper.java b/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AnnotationReflectionHelper.java index 5bbe2a77a801..1b5e217296b8 100644 --- a/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AnnotationReflectionHelper.java +++ b/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AnnotationReflectionHelper.java @@ -6,8 +6,6 @@ package io.opentelemetry.instrumentation.api.annotation.support; import java.lang.annotation.Annotation; -import java.lang.invoke.CallSite; -import java.lang.invoke.LambdaMetafactory; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -65,6 +63,7 @@ public static Class forNameOrNull( * @throws NoSuchMethodException the annotation element method was not found * @throws Throwable on failing to bind to the */ + @SuppressWarnings("unchecked") // need to cast the return value for MethodHandle.invoke public static Function bindAnnotationElementMethod( MethodHandles.Lookup lookup, Class annotationClass, @@ -75,19 +74,12 @@ public static Function bindAnnotationElementMeth MethodHandle valueHandle = lookup.findVirtual(annotationClass, methodName, MethodType.methodType(returnClass)); - CallSite callSite = - LambdaMetafactory.metafactory( - lookup, - "apply", - MethodType.methodType(Function.class), - MethodType.methodType(Object.class, Object.class), - valueHandle, - MethodType.methodType(returnClass, annotationClass)); - - MethodHandle factory = callSite.getTarget(); - - @SuppressWarnings("unchecked") - Function function = (Function) factory.invoke(); - return function; + return a -> { + try { + return (T) valueHandle.invoke(a); + } catch (Throwable e) { + throw new IllegalStateException(e); + } + }; } } diff --git a/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AttributeBindingFactory.java b/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AttributeBindingFactory.java index a959394ae5e8..0fb69c920006 100644 --- a/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AttributeBindingFactory.java +++ b/instrumentation-annotations-support/src/main/java/io/opentelemetry/instrumentation/api/annotation/support/AttributeBindingFactory.java @@ -114,7 +114,7 @@ private static AttributeBinding arrayBinding(String name, Type type) { return defaultArrayBinding(name); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // safe because type is checked before casting private static AttributeBinding listBinding(String name, Type componentType) { if (componentType == String.class) { AttributeKey> key = AttributeKey.stringArrayKey(name); @@ -310,7 +310,7 @@ public int size() { private static AttributeBinding mappedListBinding( AttributeKey> key, Function mapping) { return (setter, arg) -> { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // safe because we only call this method for lists List list = (List) arg; List wrapper = new AbstractList() { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java index db6963a30904..a93ad09a8dd5 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/Instrumenter.java @@ -85,6 +85,7 @@ public static InstrumenterBuilder builder private final boolean enabled; private final SpanSuppressor spanSuppressor; + // to allow converting generic lists to arrays with toArray @SuppressWarnings({"rawtypes", "unchecked"}) Instrumenter(InstrumenterBuilder builder) { this.instrumentationName = builder.instrumentationName; diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/UnsafeAttributes.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/UnsafeAttributes.java index 08a009c6b1f0..00ca3b2eff01 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/UnsafeAttributes.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/UnsafeAttributes.java @@ -28,7 +28,7 @@ final class UnsafeAttributes extends HashMap, Object> // Attributes - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // safe because of the AttributeKey typing @Override @Nullable public T get(AttributeKey key) { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java index 597cbd5996fe..2b79f39b6b96 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java @@ -55,7 +55,7 @@ public static void setUrlTemplateExtractor( } } - @SuppressWarnings({"rawtypes", "unchecked"}) + @SuppressWarnings({"rawtypes", "unchecked"}) // we loose the generic type information public static void internalSetUrlTemplateExtractor( BiConsumer, Function> urlTemplateExtractorSetter) { @@ -76,7 +76,7 @@ public static void addOperationListenerAttributesExtractor( } } - @SuppressWarnings({"rawtypes", "unchecked"}) + @SuppressWarnings({"rawtypes", "unchecked"}) // we loose the generic type information public static void internalAddOperationListenerAttributesExtractor( BiConsumer< InstrumenterBuilder, diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InstrumenterContext.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InstrumenterContext.java index 06c3f84b60a3..8bbf10bb83bd 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InstrumenterContext.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InstrumenterContext.java @@ -20,26 +20,25 @@ * at any time. */ public final class InstrumenterContext { - private static final ThreadLocal instrumenterContext = - new ThreadLocal() { - @Override - protected InstrumenterContext initialValue() { - return new InstrumenterContext(); - } - }; + private static final ThreadLocal instrumenterContext = new ThreadLocal<>(); private final Map map = new HashMap<>(); private InstrumenterContext() {} - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we expect the caller to use the same type for a given key public static T computeIfAbsent(String key, Function function) { return (T) get().computeIfAbsent(key, function); } // visible for testing static Map get() { - return instrumenterContext.get().map; + InstrumenterContext context = instrumenterContext.get(); + if (context == null) { + context = new InstrumenterContext(); + instrumenterContext.set(context); + } + return context.map; } public static void reset() { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java index e596e1429663..53c95cf2be39 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java @@ -51,6 +51,7 @@ private static final class CacheBasedVirtualFieldSupplier implements VirtualFiel ownerToFieldToImplementationMap = Cache.weak(); @Override + // storing VirtualField instances in a map looses the generic types @SuppressWarnings("unchecked") public VirtualField find( Class type, Class fieldType) { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java index 2ed6155adb88..00d62dd7272b 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java @@ -18,6 +18,7 @@ public final class ServiceLoaderUtil { private ServiceLoaderUtil() {} + // we loose the generic type information because of using the loader function @SuppressWarnings("unchecked") public static Iterable load(Class clazz) { return (Iterable) loadFunction.apply(clazz); diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/cache/weaklockfree/WeakConcurrentMap.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/cache/weaklockfree/WeakConcurrentMap.java index 21f6a08bff5f..b60ab99cd10f 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/cache/weaklockfree/WeakConcurrentMap.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/cache/weaklockfree/WeakConcurrentMap.java @@ -49,7 +49,8 @@ "HashCodeToString", "MissingSummary", "UngroupedOverloads", - "FieldMissingNullable" + "FieldMissingNullable", + "SuppressWarningsWithoutExplanation" }) public class WeakConcurrentMap extends AbstractWeakConcurrentMap> { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/http/HttpServerRoute.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/http/HttpServerRoute.java index 1ce61e0d81a4..01227b5c5ff7 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/http/HttpServerRoute.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/http/HttpServerRoute.java @@ -76,7 +76,7 @@ public static void update( HttpServerRouteSource source, HttpServerRouteGetter httpRouteGetter, T arg1) { - update(context, source, OneArgAdapter.getInstance(), arg1, httpRouteGetter); + update(context, source, OneArgAdapter::get, arg1, httpRouteGetter); } /** @@ -149,19 +149,11 @@ static String get(Context context) { return httpRouteState == null ? null : httpRouteState.getRoute(); } - private static final class OneArgAdapter - implements HttpServerRouteBiGetter> { + private static final class OneArgAdapter { - private static final OneArgAdapter INSTANCE = new OneArgAdapter<>(); - - @SuppressWarnings("unchecked") - static OneArgAdapter getInstance() { - return (OneArgAdapter) INSTANCE; - } - - @Override @Nullable - public String get(Context context, @Nullable T arg, HttpServerRouteGetter httpRouteGetter) { + static String get( + Context context, @Nullable T arg, HttpServerRouteGetter httpRouteGetter) { return httpRouteGetter.get(context, arg); } } diff --git a/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditor.java b/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditor.java index bf7054c3c5e8..5ff25ddee701 100644 --- a/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditor.java +++ b/instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditor.java @@ -99,7 +99,7 @@ private static String getDocumentationDisableList(HttpClient client) throw new IOException("Failed to fetch disable list: " + response); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // for casting yaml parsed objects public static List parseInstrumentationList(String fileContent) { List instrumentationList = new ArrayList<>(); Yaml yaml = new Yaml(); diff --git a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java index d9800ced64d9..5135a0c2567e 100644 --- a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java +++ b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java @@ -24,7 +24,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -@SuppressWarnings("unchecked") +@SuppressWarnings("unchecked") // to allow mocking of generic HttpResponse class SupportedLibrariesAuditorTest { @Test diff --git a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java index 1f8c999d352f..2cfc54904281 100644 --- a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java +++ b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java @@ -25,7 +25,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -@SuppressWarnings("unchecked") +@SuppressWarnings("unchecked") // to allow mocking of generic HttpResponse class SuppressionListAuditorTest { @Test diff --git a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboHeadersGetter.java b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboHeadersGetter.java index ff3c3c76e8fa..7a6320a2cc10 100644 --- a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboHeadersGetter.java +++ b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboHeadersGetter.java @@ -31,7 +31,7 @@ enum DubboHeadersGetter implements TextMapGetter { } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting MethodHandle.invoke result public Iterable keys(DubboRequest request) { RpcInvocation invocation = request.invocation(); try { diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/TracingRequestWrapperBase.java b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/TracingRequestWrapperBase.java index 239cf076201a..a34faa73f4eb 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/TracingRequestWrapperBase.java +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v2_2/TracingRequestWrapperBase.java @@ -56,7 +56,7 @@ protected TracingRequestWrapperBase(BiFunction, Object> parameterMap } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result protected O doHandleRequest(I input, Context context) { Object[] parameters = LambdaParameters.toArray(targetMethod, input, context, parameterMapper); O result; diff --git a/instrumentation/aws-lambda/aws-lambda-events-3.11/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v3_11/TracingRequestWrapperBase.java b/instrumentation/aws-lambda/aws-lambda-events-3.11/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v3_11/TracingRequestWrapperBase.java index df6e6a650434..5b72ded55821 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-3.11/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v3_11/TracingRequestWrapperBase.java +++ b/instrumentation/aws-lambda/aws-lambda-events-3.11/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/v3_11/TracingRequestWrapperBase.java @@ -56,7 +56,7 @@ protected TracingRequestWrapperBase(BiFunction, Object> parameterMap } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result protected O doHandleRequest(I input, Context context) { Object[] parameters = LambdaParameters.toArray(targetMethod, input, context, parameterMapper); O result; diff --git a/instrumentation/aws-lambda/aws-lambda-events-common-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/common/v2_2/internal/SerializationUtil.java b/instrumentation/aws-lambda/aws-lambda-events-common-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/common/v2_2/internal/SerializationUtil.java index e8c1e88fb7a0..268e20b9ba5b 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-common-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/common/v2_2/internal/SerializationUtil.java +++ b/instrumentation/aws-lambda/aws-lambda-events-common-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/common/v2_2/internal/SerializationUtil.java @@ -46,8 +46,8 @@ private static PojoSerializer createSerializer(Class clazz) { } } - @SuppressWarnings("unchecked") - public static PojoSerializer getSerializer(Class clazz) { + @SuppressWarnings("unchecked") // we expect the caller to provide the correct class + private static PojoSerializer getSerializer(Class clazz) { return (PojoSerializer) serializerCache.get(clazz); } @@ -61,20 +61,18 @@ public static T fromJson(InputStream inputStream, Class clazz) { return serializer.fromJson(inputStream); } - @SuppressWarnings("unchecked") public static void toJson(OutputStream outputStream, T obj) { if (obj != null) { - PojoSerializer serializer = getSerializer((Class) obj.getClass()); + PojoSerializer serializer = getSerializer(obj.getClass()); serializer.toJson(obj, outputStream); } } - @SuppressWarnings("unchecked") public static String toJson(T obj) { if (obj == null) { return null; } - PojoSerializer serializer = getSerializer((Class) obj.getClass()); + PojoSerializer serializer = getSerializer(obj.getClass()); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(DEFAULT_BUFFER_SIZE); serializer.toJson(obj, outputStream); return new String(outputStream.toByteArray(), StandardCharsets.UTF_8); diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsJsonProtocolFactoryAccess.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsJsonProtocolFactoryAccess.java index d1ee5b9e823b..001bbc8819cf 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsJsonProtocolFactoryAccess.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsJsonProtocolFactoryAccess.java @@ -40,10 +40,11 @@ final class AwsJsonProtocolFactoryAccess { // AwsJsonProtocolFactory requires any URI to be present .option(SdkClientOption.ENDPOINT, URI.create("http://empty")) .build()); - @SuppressWarnings("rawtypes") - Class awsJsonProtocolClass = - Class.forName("software.amazon.awssdk.protocols.json.AwsJsonProtocol"); - @SuppressWarnings("unchecked") + @SuppressWarnings("rawtypes") // fine + Class awsJsonProtocolClass = + Class.forName("software.amazon.awssdk.protocols.json.AwsJsonProtocol") + .asSubclass(Enum.class); + @SuppressWarnings("unchecked") // fine Object awsJsonProtocol = Enum.valueOf(awsJsonProtocolClass, "AWS_JSON"); awsJsonProtocolFactoryBuilder .getClass() @@ -69,7 +70,7 @@ final class AwsJsonProtocolFactoryAccess { INVOKE_CREATE_PROTOCOL_MARSHALLER = invokeCreateProtocolMarshaller; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result @Nullable static ProtocolMarshaller createMarshaller() { if (INVOKE_CREATE_PROTOCOL_MARSHALLER == null) { diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/FieldMapping.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/FieldMapping.java index f2040c73ac71..d4ed46000135 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/FieldMapping.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/FieldMapping.java @@ -76,7 +76,7 @@ AttributeType getAttributeType() { return attributeKey.getType(); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we expect the caller to check the attribute type AttributeKey getAttributeKey() { return (AttributeKey) attributeKey; } diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/RestClientWrapper.java b/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/RestClientWrapper.java index db15873e195b..54e0631a1a2b 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/RestClientWrapper.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/v7_0/RestClientWrapper.java @@ -130,7 +130,7 @@ private static Field getProxyField(Class clazz, String fieldName) { } } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result private static Instrumenter getInstrumenter(Object proxy) throws IllegalAccessException { Supplier> supplier = diff --git a/instrumentation/graphql-java/graphql-java-common/library/src/main/java/io/opentelemetry/instrumentation/graphql/internal/OpenTelemetryInstrumentationHelper.java b/instrumentation/graphql-java/graphql-java-common/library/src/main/java/io/opentelemetry/instrumentation/graphql/internal/OpenTelemetryInstrumentationHelper.java index d0ef6097473a..8d7f8231a058 100644 --- a/instrumentation/graphql-java/graphql-java-common/library/src/main/java/io/opentelemetry/instrumentation/graphql/internal/OpenTelemetryInstrumentationHelper.java +++ b/instrumentation/graphql-java/graphql-java-common/library/src/main/java/io/opentelemetry/instrumentation/graphql/internal/OpenTelemetryInstrumentationHelper.java @@ -148,7 +148,7 @@ public DataFetcher instrumentDataFetcher( return (DataFetcher) environment -> { - try (Scope scope = context.makeCurrent()) { + try (Scope ignore = context.makeCurrent()) { return dataFetcher.get(environment); } }; @@ -158,7 +158,7 @@ private static Node sanitize(Node node) { return astTransformer.transform(node, sanitizingVisitor); } - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") // super class uses Node without type parameter private static class SanitizingVisitor extends NodeVisitorStub { @Override diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java index b2a0deb22c62..ca8f7e75672d 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java @@ -37,11 +37,11 @@ final class TracingClientInterceptor implements ClientInterceptor { private static final String SENT = "SENT"; private static final String RECEIVED = "RECEIVED"; - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type private static final AtomicLongFieldUpdater SENT_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingClientCall.class, "sentMessageId"); - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type private static final AtomicLongFieldUpdater RECEIVED_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingClientCall.class, "receivedMessageId"); diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java index 688099084146..3a13a673ef05 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java @@ -37,11 +37,11 @@ final class TracingServerInterceptor implements ServerInterceptor { private static final String SENT = "SENT"; private static final String RECEIVED = "RECEIVED"; - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type private static final AtomicLongFieldUpdater SENT_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingServerCall.class, "sentMessageId"); - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type private static final AtomicLongFieldUpdater RECEIVED_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingServerCall.class, "receivedMessageId"); diff --git a/instrumentation/influxdb-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbObjetWrapper.java b/instrumentation/influxdb-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbObjetWrapper.java index 7be6efe42aed..5d1c28a96aab 100644 --- a/instrumentation/influxdb-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbObjetWrapper.java +++ b/instrumentation/influxdb-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/influxdb/v2_4/InfluxDbObjetWrapper.java @@ -12,7 +12,7 @@ public final class InfluxDbObjetWrapper { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we check types before casting public static Object wrap(Object object, Context parentContext) { if (object instanceof Consumer) { return (Consumer) diff --git a/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java b/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java index ae05a2aef048..5692381aa007 100644 --- a/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java +++ b/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java @@ -53,7 +53,7 @@ public static void endIfNotAttached( } } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we loose the generic type in ThreadLocal private static JedisRequestContext current() { return (JedisRequestContext) contextThreadLocal.get(); } diff --git a/instrumentation/jms/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/JavaxMessageAdapter.java b/instrumentation/jms/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/JavaxMessageAdapter.java index 818a2c33a654..73f0d913a7e8 100644 --- a/instrumentation/jms/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/JavaxMessageAdapter.java +++ b/instrumentation/jms/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v1_1/JavaxMessageAdapter.java @@ -37,7 +37,7 @@ public DestinationAdapter getJmsDestination() throws JMSException { } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // jms api returns a raw enumeration public List getPropertyNames() throws JMSException { return Collections.list(message.getPropertyNames()); } diff --git a/instrumentation/jms/jms-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/JakartaMessageAdapter.java b/instrumentation/jms/jms-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/JakartaMessageAdapter.java index 7484304dde4b..e592729bb7fe 100644 --- a/instrumentation/jms/jms-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/JakartaMessageAdapter.java +++ b/instrumentation/jms/jms-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/v3_0/JakartaMessageAdapter.java @@ -37,7 +37,7 @@ public DestinationAdapter getJmsDestination() throws JMSException { } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // jms api returns a raw enumeration public List getPropertyNames() throws JMSException { return Collections.list(message.getPropertyNames()); } diff --git a/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/yaml/RuleParser.java b/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/yaml/RuleParser.java index 993fc0238211..f9df0bf9c608 100644 --- a/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/yaml/RuleParser.java +++ b/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/yaml/RuleParser.java @@ -46,7 +46,7 @@ public static RuleParser get() { private RuleParser() {} - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // for casting yaml parsed objects public JmxConfig loadConfig(InputStream is) { LoadSettings settings = LoadSettings.builder().build(); Load yaml = new Load(settings); @@ -69,7 +69,7 @@ public JmxConfig loadConfig(InputStream is) { .collect(Collectors.toList())); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // for casting yaml parsed objects private static JmxRule parseJmxRule(Map ruleYaml) { JmxRule jmxRule = new JmxRule(); @@ -92,7 +92,7 @@ private static JmxRule parseJmxRule(Map ruleYaml) { return jmxRule; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // for casting yaml parsed objects private static Map parseMappings(@Nullable Map mappingYaml) { Map mappings = new LinkedHashMap<>(); if (mappingYaml != null) { @@ -125,7 +125,7 @@ private static Metric parseMetric(Map metricYaml) { return metric; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // for casting yaml parsed objects private static void parseMetricStructure( Map metricStructureYaml, MetricStructure out) { diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryConsumerInterceptor.java b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryConsumerInterceptor.java index 21b5d3ef8999..5557a62915ef 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryConsumerInterceptor.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryConsumerInterceptor.java @@ -71,7 +71,6 @@ public void configure(Map configs) { this.consumerTelemetry = supplier.get(); } - @SuppressWarnings("unchecked") private static T getProperty(Map configs, String key, Class requiredType) { Object value = configs.get(key); if (value == null) { @@ -81,6 +80,6 @@ private static T getProperty(Map configs, String key, Class re throw new IllegalStateException( "Configuration property " + key + " is not instance of " + requiredType.getSimpleName()); } - return (T) value; + return requiredType.cast(value); } } diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryProducerInterceptor.java b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryProducerInterceptor.java index 4cb65adf70a3..0e8fa05cad5a 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryProducerInterceptor.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryProducerInterceptor.java @@ -55,7 +55,6 @@ public void configure(Map configs) { this.producerTelemetry = supplier.get(); } - @SuppressWarnings("unchecked") private static T getProperty(Map configs, String key, Class requiredType) { Object value = configs.get(key); if (value == null) { @@ -65,6 +64,6 @@ private static T getProperty(Map configs, String key, Class re throw new IllegalStateException( "Configuration property " + key + " is not instance of " + requiredType.getSimpleName()); } - return (T) value; + return requiredType.cast(value); } } diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-common-0.11/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/common/v0_11/internal/OpenTelemetryMetricsReporter.java b/instrumentation/kafka/kafka-clients/kafka-clients-common-0.11/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/common/v0_11/internal/OpenTelemetryMetricsReporter.java index f94b3b3f9a97..0591cf83e7fe 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-common-0.11/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/common/v0_11/internal/OpenTelemetryMetricsReporter.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-common-0.11/library/src/main/java/io/opentelemetry/instrumentation/kafkaclients/common/v0_11/internal/OpenTelemetryMetricsReporter.java @@ -172,7 +172,6 @@ public void configure(Map configs) { meter = meterBuilder.build(); } - @SuppressWarnings("unchecked") private static T getProperty(Map configs, String key, Class requiredType) { Object value = configs.get(key); if (value == null) { @@ -182,7 +181,7 @@ private static T getProperty(Map configs, String key, Class re throw new IllegalStateException( "Configuration property " + key + " is not instance of " + requiredType.getSimpleName()); } - return (T) value; + return requiredType.cast(value); } // Visible for test diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/lettuce/core/protocol/OtelCommandArgsUtil.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/lettuce/core/protocol/OtelCommandArgsUtil.java index 571a19c8821f..f886a9e643ee 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/lettuce/core/protocol/OtelCommandArgsUtil.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/lettuce/core/protocol/OtelCommandArgsUtil.java @@ -32,14 +32,14 @@ public static List getCommandArgs(CommandArgs commandArgs) { return result; } - @SuppressWarnings({"rawtypes", "unchecked"}) + @SuppressWarnings("unchecked") // type is checked before casting private static String getArgValue(StringCodec stringCodec, SingularArgument argument) { if (argument instanceof KeyArgument) { - KeyArgument keyArg = (KeyArgument) argument; + KeyArgument keyArg = (KeyArgument) argument; return stringCodec.decodeKey(keyArg.codec.encodeKey(keyArg.key)); } if (argument instanceof ValueArgument) { - ValueArgument valueArg = (ValueArgument) argument; + ValueArgument valueArg = (ValueArgument) argument; return stringCodec.decodeValue(valueArg.codec.encodeValue(valueArg.val)); } return argument.toString(); diff --git a/instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/ConnectionRequestInstrumentation.java b/instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/ConnectionRequestInstrumentation.java index 360c9267b778..c99ad3b50421 100644 --- a/instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/ConnectionRequestInstrumentation.java +++ b/instrumentation/nats/nats-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/nats/v2_17/ConnectionRequestInstrumentation.java @@ -428,7 +428,7 @@ public static CompletableFuture onExit( @Advice.Return CompletableFuture originalResult, @Advice.Enter Object[] enterResult) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // fine CompletableFuture future = (CompletableFuture) enterResult[0]; return future != null ? future : originalResult; } diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/util/HttpSchemeUtil.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/util/HttpSchemeUtil.java index 81b3ca90cef9..1e70027f8d8c 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/util/HttpSchemeUtil.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/util/HttpSchemeUtil.java @@ -12,14 +12,13 @@ public final class HttpSchemeUtil { private static final Class sslHandlerClass = getSslHandlerClass(); - @SuppressWarnings("unchecked") private static Class getSslHandlerClass() { try { - return (Class) - Class.forName( + return Class.forName( "org.jboss.netty.handler.ssl.SslHandler", false, - HttpSchemeUtil.class.getClassLoader()); + HttpSchemeUtil.class.getClassLoader()) + .asSubclass(ChannelHandler.class); } catch (ClassNotFoundException exception) { return null; } diff --git a/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/FutureListenerWrappers.java b/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/FutureListenerWrappers.java index b1a7e6eb24c4..67872a80dcd3 100644 --- a/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/FutureListenerWrappers.java +++ b/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/FutureListenerWrappers.java @@ -46,7 +46,7 @@ public static boolean shouldWrap(GenericFutureListener> list return listener != null && shouldWrap.get(listener.getClass()); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // fine public static GenericFutureListener wrap( Context context, GenericFutureListener> delegate) { diff --git a/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/NettyFutureInstrumentation.java b/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/NettyFutureInstrumentation.java index 6fa5638a1830..3dac1405b3ca 100644 --- a/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/NettyFutureInstrumentation.java +++ b/instrumentation/netty/netty-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/NettyFutureInstrumentation.java @@ -88,7 +88,7 @@ public static GenericFutureListener[] wrapListener( @Advice.Argument(value = 0) GenericFutureListener>[] listeners) { Context context = Java8BytecodeBridge.currentContext(); - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"}) // creating array of generic type GenericFutureListener>[] wrappedListeners = new GenericFutureListener[listeners.length]; for (int i = 0; i < listeners.length; ++i) { @@ -125,7 +125,7 @@ public static class RemoveListenersAdvice { public static GenericFutureListener[] wrapListener( @Advice.Argument(value = 0) GenericFutureListener>[] listeners) { - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"}) // creating array of generic type GenericFutureListener>[] wrappedListeners = new GenericFutureListener[listeners.length]; for (int i = 0; i < listeners.length; ++i) { diff --git a/instrumentation/netty/netty-common-4.0/library/src/main/java/io/opentelemetry/instrumentation/netty/common/v4_0/internal/HttpSchemeUtil.java b/instrumentation/netty/netty-common-4.0/library/src/main/java/io/opentelemetry/instrumentation/netty/common/v4_0/internal/HttpSchemeUtil.java index 7be9cb22d37b..16229c47394a 100644 --- a/instrumentation/netty/netty-common-4.0/library/src/main/java/io/opentelemetry/instrumentation/netty/common/v4_0/internal/HttpSchemeUtil.java +++ b/instrumentation/netty/netty-common-4.0/library/src/main/java/io/opentelemetry/instrumentation/netty/common/v4_0/internal/HttpSchemeUtil.java @@ -16,12 +16,11 @@ public final class HttpSchemeUtil { private static final Class sslHandlerClass = getSslHandlerClass(); - @SuppressWarnings("unchecked") private static Class getSslHandlerClass() { try { - return (Class) - Class.forName( - "io.netty.handler.ssl.SslHandler", false, HttpSchemeUtil.class.getClassLoader()); + return Class.forName( + "io.netty.handler.ssl.SslHandler", false, HttpSchemeUtil.class.getClassLoader()) + .asSubclass(ChannelHandler.class); } catch (ClassNotFoundException exception) { return null; } diff --git a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java index 5aa2551c2d20..e1ecd9bb5536 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java +++ b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java @@ -409,13 +409,13 @@ static class V3FunctionAccess implements FunctionAccess { } @Nullable - @SuppressWarnings("unchecked") static FunctionAccess create(ChatCompletionMessageToolCall toolCall) { if (functionToolCallHandle == null || functionHandle == null) { return null; } try { + @SuppressWarnings("unchecked") // casting MethodHandle.invoke result Optional optional = (Optional) functionToolCallHandle.invoke(toolCall); if (!optional.isPresent()) { return null; diff --git a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/DelegatingInvocationHandler.java b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/DelegatingInvocationHandler.java index 315ef38eee53..4f548e1777c2 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/DelegatingInvocationHandler.java +++ b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/DelegatingInvocationHandler.java @@ -33,10 +33,9 @@ public Object invoke(Object proxy, Method method, Object[] args) throws Throwabl protected abstract Class getProxyType(); - @SuppressWarnings("rawtypes") public T createProxy() { Class proxyType = getProxyType(); - Object proxy = Proxy.newProxyInstance(CLASS_LOADER, new Class[] {proxyType}, this); + Object proxy = Proxy.newProxyInstance(CLASS_LOADER, new Class[] {proxyType}, this); return proxyType.cast(proxy); } } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/ContextKeyBridge.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/ContextKeyBridge.java index 802c31ac5c94..742e254b6196 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/ContextKeyBridge.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/ContextKeyBridge.java @@ -61,7 +61,7 @@ final class ContextKeyBridge { toAgent); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection results ContextKeyBridge( Class applicationKeyHolderClass, Class agentKeyHolderClass, @@ -93,7 +93,7 @@ V get(AgentContextWrapper contextWrapper, ContextKey requestedKey) { return null; } APPLICATION applicationValue = toApplication.apply(agentValue); - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // fine V castValue = (V) applicationValue; return castValue; } @@ -103,7 +103,7 @@ V get(AgentContextWrapper contextWrapper, ContextKey requestedKey) { @Nullable Context with(AgentContextWrapper contextWrapper, ContextKey requestedKey, V value) { if (requestedKey == applicationContextKey) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // fine APPLICATION applicationValue = (APPLICATION) value; AGENT agentValue = toAgent.apply(applicationValue); if (agentValue == null) { diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java index 8b3b2fc500b8..cd4931186d16 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpan.java @@ -57,7 +57,7 @@ public Span setAttribute(String key, boolean value) { @Override @CanIgnoreReturnValue public Span setAttribute(AttributeKey applicationKey, T value) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // toAgent uses raw AttributeKey io.opentelemetry.api.common.AttributeKey agentKey = Bridging.toAgent(applicationKey); if (agentKey != null) { agentSpan.setAttribute(agentKey, value); diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java index 2650883ac706..c46657328aea 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/ApplicationSpanBuilder.java @@ -86,7 +86,7 @@ public SpanBuilder setAttribute(String key, boolean value) { @Override @CanIgnoreReturnValue public SpanBuilder setAttribute(AttributeKey applicationKey, T value) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // toAgent uses raw AttributeKey io.opentelemetry.api.common.AttributeKey agentKey = Bridging.toAgent(applicationKey); if (agentKey != null) { agentBuilder.setAttribute(agentKey, value); diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java index 636b1e6bbfe7..48266a7c76f7 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/trace/Bridging.java @@ -105,7 +105,7 @@ public static io.opentelemetry.api.trace.SpanContext toAgent(SpanContext applica } } - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"}) // toAgent conversion uses raw AttributeKey public static io.opentelemetry.api.common.Attributes toAgent(Attributes applicationAttributes) { io.opentelemetry.api.common.AttributesBuilder agentAttributes = io.opentelemetry.api.common.Attributes.builder(); @@ -121,7 +121,7 @@ public static io.opentelemetry.api.common.Attributes toAgent(Attributes applicat // TODO optimize this by storing shaded AttributeKey inside of application AttributeKey instead of // creating every time - @SuppressWarnings({"rawtypes"}) + @SuppressWarnings({"rawtypes"}) // conversion uses raw AttributeKey public static io.opentelemetry.api.common.AttributeKey toAgent(AttributeKey applicationKey) { switch (applicationKey.getType()) { case STRING: diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ObservableMeasurementWrapper.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ObservableMeasurementWrapper.java index 3b5290aebbcb..ddb3ff981e7f 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ObservableMeasurementWrapper.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/metrics/ObservableMeasurementWrapper.java @@ -5,7 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics; -public interface ObservableMeasurementWrapper { +public interface ObservableMeasurementWrapper< + T extends io.opentelemetry.api.metrics.ObservableMeasurement> { T unwrap(); } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.15/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_15/metrics/ApplicationMeter115.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.15/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_15/metrics/ApplicationMeter115.java index 2e28e9f068fb..052545427b11 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.15/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_15/metrics/ApplicationMeter115.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.15/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_15/metrics/ApplicationMeter115.java @@ -29,7 +29,6 @@ public BatchCallback batchCallback( callback, unwrap(observableMeasurement), unwrap(additionalMeasurements))); } - @SuppressWarnings("unchecked") private static io.opentelemetry.api.metrics.ObservableMeasurement unwrap( ObservableMeasurement observableMeasurement) { if (observableMeasurement == null) { @@ -40,9 +39,7 @@ private static io.opentelemetry.api.metrics.ObservableMeasurement unwrap( // sdk ignores instruments that it didn't create return new io.opentelemetry.api.metrics.ObservableMeasurement() {}; } - return ((ObservableMeasurementWrapper) - observableMeasurement) - .unwrap(); + return ((ObservableMeasurementWrapper) observableMeasurement).unwrap(); } private static io.opentelemetry.api.metrics.ObservableMeasurement[] unwrap( diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/logs/ApplicationLogRecordBuilder.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/logs/ApplicationLogRecordBuilder.java index 006927fdc605..b5071bf6e557 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/logs/ApplicationLogRecordBuilder.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/logs/ApplicationLogRecordBuilder.java @@ -81,7 +81,7 @@ public LogRecordBuilder setBody(String s) { @Override @CanIgnoreReturnValue public LogRecordBuilder setAttribute(AttributeKey attributeKey, T t) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // toAgent uses raw AttributeKey io.opentelemetry.api.common.AttributeKey agentKey = Bridging.toAgent(attributeKey); if (agentKey != null) { agentLogRecordBuilder.setAttribute(agentKey, t); diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLogRecordBuilder142.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLogRecordBuilder142.java index c22fdc043dbc..cbdcb0f98e79 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLogRecordBuilder142.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.42/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_42/logs/ApplicationLogRecordBuilder142.java @@ -30,7 +30,6 @@ public LogRecordBuilder setBody(Value body) { return this; } - @SuppressWarnings("unchecked") protected static io.opentelemetry.api.common.Value convertValue(Value value) { if (value == null) { return null; @@ -46,6 +45,7 @@ protected static io.opentelemetry.api.common.Value convertValue(Value valu case DOUBLE: return io.opentelemetry.api.common.Value.of((Double) value.getValue()); case ARRAY: + @SuppressWarnings("unchecked") // type is checked before casting List> values = (List>) value.getValue(); List> convertedValues = new ArrayList<>(); for (Value source : values) { @@ -53,6 +53,7 @@ protected static io.opentelemetry.api.common.Value convertValue(Value valu } return io.opentelemetry.api.common.Value.of(convertedValues); case KEY_VALUE_LIST: + @SuppressWarnings("unchecked") // type is checked before casting List keyValueList = (List) value.getValue(); io.opentelemetry.api.common.KeyValue[] convertedKeyValueList = new io.opentelemetry.api.common.KeyValue[keyValueList.size()]; diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java index 95c7d2558c7f..50dfafade67a 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java @@ -117,12 +117,13 @@ public ExtendedLogRecordBuilder setAttribute(AttributeKey key, @Nullable } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // converting ExtendedAttributeKey looses generic type public ExtendedLogRecordBuilder setAttribute(ExtendedAttributeKey key, T value) { io.opentelemetry.api.incubator.common.ExtendedAttributeKey agentKey = convertExtendedAttributeKey(key); if (agentKey != null) { if (key.getType() == EXTENDED_ATTRIBUTES) { + // this cast is safe because T is ExtendedAttributes in this case value = (T) convertExtendedAttributes((ExtendedAttributes) value); } agentLogRecordBuilder.setAttribute(agentKey, value); @@ -136,7 +137,10 @@ public ExtendedLogRecordBuilder setException(Throwable throwable) { return this; } - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({ + "unchecked", + "rawtypes" + }) // converting ExtendedAttributeKey looses generic type private static io.opentelemetry.api.incubator.common.ExtendedAttributes convertExtendedAttributes( ExtendedAttributes applicationAttributes) { io.opentelemetry.api.incubator.common.ExtendedAttributesBuilder agentAttributes = @@ -155,7 +159,7 @@ private static io.opentelemetry.api.incubator.common.ExtendedAttributes convertE return agentAttributes.build(); } - @SuppressWarnings({"rawtypes"}) + @SuppressWarnings("rawtypes") // converting ExtendedAttributeKey looses generic type private static io.opentelemetry.api.incubator.common.ExtendedAttributeKey convertExtendedAttributeKey(ExtendedAttributeKey applicationKey) { switch (applicationKey.getType()) { diff --git a/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java b/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java index 716019ca599c..dddadb4a6c7a 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java +++ b/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java @@ -70,7 +70,7 @@ private static String getRoute(Request request) { Option defOption = null; if (typedKeyGetUnderlying != null) { // Should always be non-null but just to make sure try { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result play.api.libs.typedmap.TypedKey handlerDef = (play.api.libs.typedmap.TypedKey) typedKeyGetUnderlying.invoke(Router.Attrs.HANDLER_DEF); diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlCommenterUtil.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlCommenterUtil.java index a90c8ed5e5ff..73b21a3bac61 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlCommenterUtil.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlCommenterUtil.java @@ -38,7 +38,7 @@ public String onCreateStatement(String query, StatementInfo info) { }); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting to same type as used in storeQuery private static Map getOriginalQueryMap(ValueStore valueStore) { return valueStore.get(KEY_ORIGINAL_QUERY_MAP, Map.class); } diff --git a/instrumentation/reactor/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/v3_1/ContextPropagationOperator.java b/instrumentation/reactor/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/v3_1/ContextPropagationOperator.java index ba2afc32978f..ad098a7268cc 100644 --- a/instrumentation/reactor/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/v3_1/ContextPropagationOperator.java +++ b/instrumentation/reactor/reactor-3.1/library/src/main/java/io/opentelemetry/instrumentation/reactor/v3_1/ContextPropagationOperator.java @@ -246,7 +246,7 @@ public static Flux runWithContext(Flux publisher, Context tracingConte } } - @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"}) + @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"}) // fine private static T sneakyThrow(Throwable t) throws T { throw (T) t; } diff --git a/instrumentation/reactor/reactor-kafka-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/InstrumentedKafkaFlux.java b/instrumentation/reactor/reactor-kafka-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/InstrumentedKafkaFlux.java index 4a54ec5d3456..97958e3a853f 100644 --- a/instrumentation/reactor/reactor-kafka-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/InstrumentedKafkaFlux.java +++ b/instrumentation/reactor/reactor-kafka-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/kafka/v1_0/InstrumentedKafkaFlux.java @@ -28,7 +28,7 @@ final class InstrumentedKafkaFlux> extends FluxOp } @Override - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // fine public void subscribe(CoreSubscriber actual) { source.subscribe(new InstrumentedSubscriber((CoreSubscriber>) actual)); } diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java index 31f4d18c2ec5..18fa6e673f8a 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java @@ -37,7 +37,7 @@ private AttributeBuilder() {} @CanIgnoreReturnValue @Override - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"}) // we loose generic types when storing in map public AttributeBuilder add(AttributeKey key, Function> getter) { attributeGetters.put((AttributeKey) key, Objects.requireNonNull((Function) getter)); return this; diff --git a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/MessageAttributesAccessor.java b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/MessageAttributesAccessor.java index 083ed731f4eb..4d3986cd1c55 100644 --- a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/MessageAttributesAccessor.java +++ b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/MessageAttributesAccessor.java @@ -93,7 +93,7 @@ public final class MessageAttributesAccessor { NEW_SERIES = newSeries; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting result of MethodHandle.invoke @Nullable public static Map getAttributes(Message message) { if (GET_ATTRIBUTES == null) { diff --git a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHeadersGetter.java b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHeadersGetter.java index c67fc3f220f1..dc2f65816d03 100644 --- a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHeadersGetter.java +++ b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHeadersGetter.java @@ -66,13 +66,13 @@ public Iterator getAll(Request carrier, String key) { : Arrays.asList(headers.getValuesArray(key, /* ignoreCase= */ true)).iterator(); } - @SuppressWarnings("unchecked") @Nullable static Series getHeaders(Message carrier) { if (GET_ATTRIBUTES == null) { return null; } try { + @SuppressWarnings("unchecked") // casting MethodHandle.invoke result Map attributes = (Map) GET_ATTRIBUTES.invoke(carrier); return (Series) attributes.get("org.restlet.http.headers"); } catch (Throwable e) { diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java index 67a10ebfb13f..52a3fde71ef7 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java @@ -41,12 +41,12 @@ public static ContextPayload from(Context context) { return payload; } - @SuppressWarnings("BanSerializableRead") + @SuppressWarnings("BanSerializableRead") // fine public static ContextPayload read(ObjectInput oi) throws IOException { try { Object object = oi.readObject(); if (object instanceof Map) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // convert it back to the expected type Map map = (Map) object; return new ContextPayload(map); } diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java index 37d50ca66e89..733da234b4b9 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rocketmqclient/v5_0/ReceiveSpanFinishingCallback.java @@ -13,7 +13,6 @@ import java.util.List; import org.apache.rocketmq.client.apis.message.MessageView; import org.apache.rocketmq.client.java.impl.consumer.ReceiveMessageResult; -import org.apache.rocketmq.client.java.message.MessageViewImpl; import org.apache.rocketmq.shaded.com.google.common.util.concurrent.FutureCallback; public final class ReceiveSpanFinishingCallback implements FutureCallback { @@ -27,15 +26,14 @@ public ReceiveSpanFinishingCallback(ReceiveMessageRequest request, Timer timer) } @Override - @SuppressWarnings("unchecked") public void onSuccess(ReceiveMessageResult receiveMessageResult) { - List messageViews = receiveMessageResult.getMessageViewImpls(); + List messageViews = receiveMessageResult.getMessageViews(); // Don't create spans when no messages were received. if (messageViews.isEmpty()) { return; } String consumerGroup = request.getGroup().getName(); - for (MessageViewImpl messageView : messageViews) { + for (MessageView messageView : messageViews) { VirtualFieldStore.setConsumerGroupByMessage(messageView, consumerGroup); } Instrumenter> receiveInstrumenter = @@ -47,11 +45,11 @@ public void onSuccess(ReceiveMessageResult receiveMessageResult) { receiveInstrumenter, parentContext, request, - (List) (List) messageViews, + messageViews, null, timer.startTime(), timer.now()); - for (MessageViewImpl messageView : messageViews) { + for (MessageView messageView : messageViews) { VirtualFieldStore.setContextByMessage(messageView, context); } } diff --git a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/RxJava2AsyncOperationEndStrategy.java b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/RxJava2AsyncOperationEndStrategy.java index caf78662f71b..ce0fa2f32f0c 100644 --- a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/RxJava2AsyncOperationEndStrategy.java +++ b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/RxJava2AsyncOperationEndStrategy.java @@ -92,7 +92,7 @@ private static Completable endWhenComplete( private static Maybe endWhenMaybeComplete( Maybe maybe, EndOnFirstNotificationConsumer notificationConsumer) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // notificationConsumer doesn't depend on T EndOnFirstNotificationConsumer typedConsumer = (EndOnFirstNotificationConsumer) notificationConsumer; return maybe.doOnEvent(typedConsumer).doOnDispose(notificationConsumer::onCancelOrDispose); @@ -100,7 +100,7 @@ private static Maybe endWhenMaybeComplete( private static Single endWhenSingleComplete( Single single, EndOnFirstNotificationConsumer notificationConsumer) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // notificationConsumer doesn't depend on T EndOnFirstNotificationConsumer typedConsumer = (EndOnFirstNotificationConsumer) notificationConsumer; return single.doOnEvent(typedConsumer).doOnDispose(notificationConsumer::onCancelOrDispose); diff --git a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingAssembly.java b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingAssembly.java index 71596414b08d..112a928e5135 100644 --- a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingAssembly.java +++ b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingAssembly.java @@ -54,6 +54,7 @@ * *

Instrumentation can be disabled by calling the {@link TracingAssembly#disable()} method. */ +@SuppressWarnings("SuppressWarningsWithoutExplanation") // RxJavaPlugins uses raw types public final class TracingAssembly { @SuppressWarnings("rawtypes") diff --git a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingObserver.java b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingObserver.java index cf06d0370094..bbd0d89048cc 100644 --- a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingObserver.java +++ b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingObserver.java @@ -80,7 +80,7 @@ public T poll() throws Exception { return getQueueDisposable().poll(); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result private QueueDisposable getQueueDisposable() { try { return (QueueDisposable) queueDisposableField.get(this); diff --git a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingParallelFlowable.java b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingParallelFlowable.java index b0384e49fd44..9b49b25d5b1c 100644 --- a/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingParallelFlowable.java +++ b/instrumentation/rxjava/rxjava-2.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v2_0/TracingParallelFlowable.java @@ -38,14 +38,13 @@ class TracingParallelFlowable extends ParallelFlowable { this.context = context; } - @SuppressWarnings("unchecked") @Override public void subscribe(Subscriber[] subscribers) { if (!validate(subscribers)) { return; } int n = subscribers.length; - @SuppressWarnings("rawtypes") + @SuppressWarnings({"unchecked", "rawtypes"}) // creating array with generic component type Subscriber[] parents = new Subscriber[n]; for (int i = 0; i < n; i++) { Subscriber z = subscribers[i]; diff --git a/instrumentation/rxjava/rxjava-3-common/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3/common/RxJava3AsyncOperationEndStrategy.java b/instrumentation/rxjava/rxjava-3-common/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3/common/RxJava3AsyncOperationEndStrategy.java index a6dc8fa69f1b..8df0cca73243 100644 --- a/instrumentation/rxjava/rxjava-3-common/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3/common/RxJava3AsyncOperationEndStrategy.java +++ b/instrumentation/rxjava/rxjava-3-common/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3/common/RxJava3AsyncOperationEndStrategy.java @@ -92,7 +92,7 @@ private static Completable endWhenComplete( private static Maybe endWhenMaybeComplete( Maybe maybe, EndOnFirstNotificationConsumer notificationConsumer) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // notificationConsumer doesn't depend on T EndOnFirstNotificationConsumer typedConsumer = (EndOnFirstNotificationConsumer) notificationConsumer; return maybe.doOnEvent(typedConsumer).doOnDispose(notificationConsumer::onCancelOrDispose); @@ -100,7 +100,7 @@ private static Maybe endWhenMaybeComplete( private static Single endWhenSingleComplete( Single single, EndOnFirstNotificationConsumer notificationConsumer) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // notificationConsumer doesn't depend on T EndOnFirstNotificationConsumer typedConsumer = (EndOnFirstNotificationConsumer) notificationConsumer; return single.doOnEvent(typedConsumer).doOnDispose(notificationConsumer::onCancelOrDispose); diff --git a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingAssembly.java b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingAssembly.java index b9c056a2c3b9..bb4437a76c80 100644 --- a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingAssembly.java +++ b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingAssembly.java @@ -58,6 +58,7 @@ * *

Instrumentation can be disabled by calling the {@link TracingAssembly#disable()} method. */ +@SuppressWarnings("SuppressWarningsWithoutExplanation") // RxJavaPlugins uses raw types public final class TracingAssembly { @SuppressWarnings("rawtypes") diff --git a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingParallelFlowable.java b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingParallelFlowable.java index 50fd7480cbdd..bdea3c7a13d4 100644 --- a/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingParallelFlowable.java +++ b/instrumentation/rxjava/rxjava-3.0/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_0/TracingParallelFlowable.java @@ -38,14 +38,13 @@ class TracingParallelFlowable extends ParallelFlowable { this.context = context; } - @SuppressWarnings("unchecked") @Override public void subscribe(Subscriber[] subscribers) { if (!validate(subscribers)) { return; } int n = subscribers.length; - @SuppressWarnings("rawtypes") + @SuppressWarnings({"unchecked", "rawtypes"}) // creating array with generic component type Subscriber[] parents = new Subscriber[n]; for (int i = 0; i < n; i++) { Subscriber z = subscribers[i]; diff --git a/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingAssembly.java b/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingAssembly.java index 0b4c60938213..96fb9c3c89c3 100644 --- a/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingAssembly.java +++ b/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingAssembly.java @@ -58,6 +58,7 @@ * *

Instrumentation can be disabled by calling the {@link TracingAssembly#disable()} method. */ +@SuppressWarnings("SuppressWarningsWithoutExplanation") // RxJavaPlugins uses raw types public final class TracingAssembly { @SuppressWarnings("rawtypes") diff --git a/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingParallelFlowable.java b/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingParallelFlowable.java index 4100a12e77ef..e31b7d45aed2 100644 --- a/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingParallelFlowable.java +++ b/instrumentation/rxjava/rxjava-3.1.1/library/src/main/java/io/opentelemetry/instrumentation/rxjava/v3_1_1/TracingParallelFlowable.java @@ -38,14 +38,13 @@ class TracingParallelFlowable extends ParallelFlowable { this.context = context; } - @SuppressWarnings("unchecked") @Override public void subscribe(Subscriber[] subscribers) { if (!validate(subscribers)) { return; } int n = subscribers.length; - @SuppressWarnings("rawtypes") + @SuppressWarnings({"unchecked", "rawtypes"}) // creating array with generic component type Subscriber[] parents = new Subscriber[n]; for (int i = 0; i < n; i++) { Subscriber z = subscribers[i]; diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHelper.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHelper.java index 389d88dea2f2..6d25dad23a08 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHelper.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHelper.java @@ -85,7 +85,7 @@ public void setAsyncListenerResponse(Context context, RESPONSE response) { ServletAsyncContext.setAsyncListenerResponse(context, response); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we set the response in setAsyncListenerResponse public RESPONSE getAsyncListenerResponse(Context context) { return (RESPONSE) ServletAsyncContext.getAsyncListenerResponse(context); } diff --git a/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java b/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java index db1a6198092a..e77a596fc0a5 100644 --- a/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java +++ b/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java @@ -67,14 +67,14 @@ public String getRequestHeader(HttpServletRequest request, String name) { @Override public List getRequestHeaderValues(HttpServletRequest request, String name) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // servlet api uses Enumeration without generic type Enumeration values = request.getHeaders(name); return values == null ? Collections.emptyList() : Collections.list(values); } @Override public Iterable getRequestHeaderNames(HttpServletRequest httpServletRequest) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // servlet api uses Enumeration without generic type Enumeration names = httpServletRequest.getHeaderNames(); return Collections.list(names); } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/kafka/ConcurrentKafkaListenerContainerFactoryPostProcessor.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/kafka/ConcurrentKafkaListenerContainerFactoryPostProcessor.java index d26c2d684526..c27b37dc9630 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/kafka/ConcurrentKafkaListenerContainerFactoryPostProcessor.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/kafka/ConcurrentKafkaListenerContainerFactoryPostProcessor.java @@ -23,7 +23,7 @@ class ConcurrentKafkaListenerContainerFactoryPostProcessor implements BeanPostPr this.springKafkaTelemetry = springKafkaTelemetry; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we check the bean type before casting @Override public Object postProcessAfterInitialization(Object bean, String beanName) { if (!(bean instanceof ConcurrentKafkaListenerContainerFactory)) { diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java index aae84c2f7240..a411e1b38aaa 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java @@ -193,7 +193,7 @@ public Double getDouble(String name) { otelSdkProperties.getDouble(name)); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // reading list form environment looses generic type @Override public List getList(String name) { String normalizedName = ConfigUtil.normalizeEnvironmentVariableKey(name); @@ -224,7 +224,7 @@ public Duration getDuration(String name) { .getDuration(name); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // reading map looses generic type @Override public Map getMap(String name) { Map otelSdkMap = otelSdkProperties.getMap(name); diff --git a/instrumentation/spring/spring-boot-resources/javaagent/src/main/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetector.java b/instrumentation/spring/spring-boot-resources/javaagent/src/main/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetector.java index c54542fdf9f7..e3768574aec3 100644 --- a/instrumentation/spring/spring-boot-resources/javaagent/src/main/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetector.java +++ b/instrumentation/spring/spring-boot-resources/javaagent/src/main/java/io/opentelemetry/instrumentation/spring/resources/SpringBootServiceNameDetector.java @@ -218,7 +218,7 @@ private String findByCurrentDirectoryYamlFile(String fileName) { } @Nullable - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // for casting yaml parsed objects private static String parseNameFromYaml(InputStream in) { try { LoadSettings settings = LoadSettings.builder().build(); diff --git a/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersGetter.java b/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersGetter.java index 8c0ca08c65a6..5ccd62b0a918 100644 --- a/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersGetter.java +++ b/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersGetter.java @@ -23,10 +23,7 @@ enum MessageHeadersGetter implements TextMapGetter { @Override public Iterable keys(MessageWithChannel carrier) { MessageHeaders headers = carrier.getMessage().getHeaders(); - @SuppressWarnings("unchecked") - Map> nativeHeaders = - (Map>) - headers.get(NativeMessageHeaderAccessor.NATIVE_HEADERS, Map.class); + Map> nativeHeaders = getNativeHeaders(headers); if (nativeHeaders != null) { return nativeHeaders.keySet(); } @@ -52,10 +49,7 @@ public String get(MessageWithChannel carrier, String key) { @Nullable private static String getNativeHeader(MessageHeaders carrier, String key) { - @SuppressWarnings("unchecked") - Map> nativeMap = - (Map>) - carrier.get(NativeMessageHeaderAccessor.NATIVE_HEADERS, Map.class); + Map> nativeMap = getNativeHeaders(carrier); if (nativeMap == null) { return null; } @@ -65,4 +59,10 @@ private static String getNativeHeader(MessageHeaders carrier, String key) { } return values.get(0); } + + @SuppressWarnings("unchecked") // casting headers map + private static Map> getNativeHeaders(MessageHeaders carrier) { + return (Map>) + carrier.get(NativeMessageHeaderAccessor.NATIVE_HEADERS, Map.class); + } } diff --git a/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersSetter.java b/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersSetter.java index 45542e0b0a90..58c60ca6739d 100644 --- a/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersSetter.java +++ b/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/MessageHeadersSetter.java @@ -29,8 +29,8 @@ public void set(MessageHeaderAccessor carrier, String key, String value) { private static void setNativeHeader(MessageHeaderAccessor carrier, String key, String value) { Object nativeMap = carrier.getHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS); if (nativeMap instanceof Map) { - @SuppressWarnings("unchecked") - Map> map = ((Map>) nativeMap); + @SuppressWarnings("unchecked") // casting to same type as used in NativeMessageHeaderAccessor + Map> map = (Map>) nativeMap; map.put(key, singletonList(value)); } } diff --git a/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/TracingChannelInterceptor.java b/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/TracingChannelInterceptor.java index 6a2cc582f0ae..76828cce49f5 100644 --- a/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/TracingChannelInterceptor.java +++ b/instrumentation/spring/spring-integration-4.1/library/src/main/java/io/opentelemetry/instrumentation/spring/integration/v4_1/TracingChannelInterceptor.java @@ -188,7 +188,7 @@ private static MessageHeaderAccessor createMutableHeaderAccessor(Message mess private static void ensureNativeHeadersAreMutable(MessageHeaderAccessor headerAccessor) { Object nativeMap = headerAccessor.getHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS); if (nativeMap != null && !(nativeMap instanceof LinkedMultiValueMap)) { - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // cast to actual type Map> map = (Map>) nativeMap; headerAccessor.setHeader( NativeMessageHeaderAccessor.NATIVE_HEADERS, new LinkedMultiValueMap<>(map)); diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java index f156267a47d0..86959cc6b3c1 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java @@ -67,7 +67,7 @@ public void exchangeCompleted(Context context, HttpServerExchange exchange) { } } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we loose type info with attachments @Nullable public Context getServerContext(HttpServerExchange exchange) { AttachmentKey contextKey = @@ -78,7 +78,7 @@ public Context getServerContext(HttpServerExchange exchange) { return exchange.getAttachment(contextKey); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we loose type info with attachments private static void attachServerContext(Context context, HttpServerExchange exchange) { AttachmentKey contextKey = (AttachmentKey) diff --git a/instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/TracingSupervisor.java b/instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/TracingSupervisor.java index 7eee31a0a7ac..434a6af66fb4 100644 --- a/instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/TracingSupervisor.java +++ b/instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/TracingSupervisor.java @@ -15,7 +15,7 @@ import zio.ZIO; import zio.ZIO$; -@SuppressWarnings("unchecked") +@SuppressWarnings("unchecked") // fine public final class TracingSupervisor extends Supervisor { public static final TracingSupervisor INSTANCE = new TracingSupervisor(); @@ -25,7 +25,7 @@ public final class TracingSupervisor extends Supervisor { private TracingSupervisor() {} @Override - @SuppressWarnings("rawtypes") + @SuppressWarnings("rawtypes") // fine public ZIO value(Object trace) { return ZIO$.MODULE$.unit(); } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/RuntimeFieldBasedImplementationSupplier.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/RuntimeFieldBasedImplementationSupplier.java index 47cc9e4f1543..57d62cab1be8 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/RuntimeFieldBasedImplementationSupplier.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/field/RuntimeFieldBasedImplementationSupplier.java @@ -33,7 +33,7 @@ private static VirtualField findInternal( getVirtualFieldImplementationClassName(type.getTypeName(), fieldType.getTypeName()); Class contextStoreClass = Class.forName(virtualFieldImplClassName, false, null); Method method = contextStoreClass.getMethod("getVirtualField", Class.class, Class.class); - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result VirtualField field = (VirtualField) method.invoke(null, type, fieldType); return field; } catch (ClassNotFoundException exception) { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderMap.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderMap.java index 2a6fe77f8d86..74ca2db65a0a 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderMap.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderMap.java @@ -64,7 +64,7 @@ private static Map getClassLoaderData( return map; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result private static Map createMap(ClassLoader classLoader, Injector classInjector) { String className = "io.opentelemetry.javaagent.ClassLoaderData$$" diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java index d0aa48f5e9b2..e523cc7a6b74 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java @@ -27,7 +27,7 @@ public ClassLoaderValue() { this.classInjector = classInjector; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we loose generic type when storing it in ClassLoaderMap public T get(ClassLoader classLoader) { return (T) ClassLoaderMap.get(classLoader, classInjector, this); } @@ -36,7 +36,7 @@ public void put(ClassLoader classLoader, T value) { ClassLoaderMap.put(classLoader, classInjector, this, value); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we loose generic type when storing it in ClassLoaderMap public T computeIfAbsent(ClassLoader classLoader, Supplier value) { return (T) ClassLoaderMap.computeIfAbsent(classLoader, classInjector, this, value); } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/TrieImpl.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/TrieImpl.java index 56f1e996563a..97ed4768db96 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/TrieImpl.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/TrieImpl.java @@ -94,7 +94,7 @@ static final class NodeBuilder { Node build() { int size = children.size(); char[] chars = new char[size]; - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"}) // generic array creation Node[] nodes = new Node[size]; int i = 0; diff --git a/javaagent-tooling/src/main/java/net/bytebuddy/agent/builder/AgentBuilderUtil.java b/javaagent-tooling/src/main/java/net/bytebuddy/agent/builder/AgentBuilderUtil.java index 38f69bc50131..1f723acad284 100644 --- a/javaagent-tooling/src/main/java/net/bytebuddy/agent/builder/AgentBuilderUtil.java +++ b/javaagent-tooling/src/main/java/net/bytebuddy/agent/builder/AgentBuilderUtil.java @@ -272,13 +272,13 @@ private static ElementMatcher getDelegateMatcher(ErasureMatcher matcher) t return (ElementMatcher) erasureMatcherField.get(matcher); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result private static List getDelegateMatchers(AgentBuilder.RawMatcher matcher) throws Exception { return (List) rawConjunctionMatchersField.get(matcher); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result private static List> getDelegateMatchers( ElementMatcher.Junction.Conjunction matcher) throws Exception { return (List>) conjunctionMatchersField.get(matcher); @@ -295,7 +295,7 @@ private static String getStringMatcherValue(StringMatcher matcher) throws Except return mode == StringMatcher.Mode.EQUALS_FULLY ? value : null; } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result private static Set getStringSetMatcherValue(StringSetMatcher matcher) throws Exception { return (Set) stringSetMatcherValuesField.get(matcher); } diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java index 7052b6eef4a8..17cc34bdf7be 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java @@ -65,7 +65,7 @@ void setUpContext() { "spring.kafka.producer.transaction-id-prefix=test-"); } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // we loose parameter types for the KafkaTemplate @Override @Test void shouldInstrumentProducerAndConsumer() { diff --git a/smoke-tests/src/main/java/io/opentelemetry/smoketest/TelemetryRetriever.java b/smoke-tests/src/main/java/io/opentelemetry/smoketest/TelemetryRetriever.java index 2b0268c9bf5d..c6da8976818a 100644 --- a/smoke-tests/src/main/java/io/opentelemetry/smoketest/TelemetryRetriever.java +++ b/smoke-tests/src/main/java/io/opentelemetry/smoketest/TelemetryRetriever.java @@ -74,7 +74,7 @@ private static List convert(Collection items, Function> .collect(Collectors.toList()); } - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"}) // fine private Collection waitForTelemetry(String path, Supplier builderConstructor) { if (closed) { @@ -102,7 +102,7 @@ Collection waitForTelemetry(String path, Supplier builderConstructor) { } } - @SuppressWarnings("SystemOut") + @SuppressWarnings("SystemOut") // used only in tests private String waitForContent(String path) throws InterruptedException { long previousSize = 0; long deadline = System.currentTimeMillis() + telemetryTimeout.toMillis(); diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java index 49661028f986..2d19fe7ee343 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/utils/ExceptionUtils.java @@ -7,7 +7,6 @@ public final class ExceptionUtils { - @SuppressWarnings("unchecked") static RuntimeException sneakyThrow(Throwable t) { if (t == null) { throw new NullPointerException("t"); diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/recording/RecordingExtension.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/recording/RecordingExtension.java index 3c1db2b9f78f..3571d79bdeb8 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/recording/RecordingExtension.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/recording/RecordingExtension.java @@ -25,6 +25,7 @@ public final class RecordingExtension extends WireMockExtension private final String apiUrl; + // calling varargs extensions method creates generic array @SuppressWarnings({"unchecked", "varargs"}) public RecordingExtension(String apiUrl) { super( diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/util/ContextStorageCloser.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/util/ContextStorageCloser.java index 8674fd4078f1..1005c26a43a4 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/util/ContextStorageCloser.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/util/ContextStorageCloser.java @@ -52,7 +52,7 @@ private static void cleanup(AutoCloseable storage) throws Exception { private abstract static class ContextRestorer { abstract void restore(); - @SuppressWarnings("SystemOut") + @SuppressWarnings("SystemOut") // only used for debugging tests boolean runWithRestore(AutoCloseable target) { try { target.close(); @@ -85,7 +85,7 @@ static ContextRestorer create(ContextStorage storage) Object pendingScopes = getStrictContextStoragePendingScopes(strictContextStorage); Field mapField = pendingScopes.getClass().getDeclaredField("map"); mapField.setAccessible(true); - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting reflection result ConcurrentHashMap map = (ConcurrentHashMap) mapField.get(pendingScopes); Map copy = new HashMap<>(map); diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java index 54ea74035cb5..64514629751d 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java @@ -79,9 +79,9 @@ public static boolean forceFlushCalled() { } } - @SuppressWarnings("unchecked") public static List getExportedSpans() { try { + @SuppressWarnings("unchecked") // casting MethodHandle.invokeExact result List bytes = (List) getSpanExportRequests.invokeExact(); List allResourceSpans = bytes.stream() @@ -102,43 +102,43 @@ public static List getExportedSpans() { } } - @SuppressWarnings("unchecked") public static List getExportedMetrics() { try { + @SuppressWarnings("unchecked") // casting MethodHandle.invokeExact result + List bytes = (List) getMetricExportRequests.invokeExact(); return TelemetryConverter.getMetricsData( - ((List) getMetricExportRequests.invokeExact()) - .stream() - .map( - serialized -> { - try { - return ExportMetricsServiceRequest.parseFrom(serialized); - } catch (InvalidProtocolBufferException e) { - throw new AssertionError(e); - } - }) - .flatMap(request -> request.getResourceMetricsList().stream()) - .collect(toList())); + bytes.stream() + .map( + serialized -> { + try { + return ExportMetricsServiceRequest.parseFrom(serialized); + } catch (InvalidProtocolBufferException e) { + throw new AssertionError(e); + } + }) + .flatMap(request -> request.getResourceMetricsList().stream()) + .collect(toList())); } catch (Throwable t) { throw new AssertionError("Could not invoke getSpanExportRequests", t); } } - @SuppressWarnings("unchecked") public static List getExportedLogRecords() { try { + @SuppressWarnings("unchecked") // casting MethodHandle.invokeExact result + List bytes = (List) getLogExportRequests.invokeExact(); return TelemetryConverter.getLogRecordData( - ((List) getLogExportRequests.invokeExact()) - .stream() - .map( - serialized -> { - try { - return ExportLogsServiceRequest.parseFrom(serialized); - } catch (InvalidProtocolBufferException e) { - throw new AssertionError(e); - } - }) - .flatMap(request -> request.getResourceLogsList().stream()) - .collect(toList())); + bytes.stream() + .map( + serialized -> { + try { + return ExportLogsServiceRequest.parseFrom(serialized); + } catch (InvalidProtocolBufferException e) { + throw new AssertionError(e); + } + }) + .flatMap(request -> request.getResourceLogsList().stream()) + .collect(toList())); } catch (Throwable t) { throw new AssertionError("Could not invoke getLogExportRequests", t); } diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java index 39624e0c7ed7..553f41a07fc3 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/TestAgentListenerAccess.java @@ -79,7 +79,7 @@ public static int getAndResetMuzzleFailureCount() { } } - @SuppressWarnings("unchecked") + @SuppressWarnings("unchecked") // casting MethodHandle.invokeExact result public static List getIgnoredButTransformedClassNames() { try { return (List) getIgnoredButTransformedClassNames.invokeExact(); From 3b58688648dbf81641e341acc6f29ce32f1e2d45 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Sun, 16 Nov 2025 09:28:03 +0200 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Trask Stalnaker --- .../instrumentation/api/internal/Experimental.java | 4 ++-- .../api/internal/RuntimeVirtualFieldSupplier.java | 2 +- .../instrumentation/api/internal/ServiceLoaderUtil.java | 2 +- .../instrumentation/grpc/v1_6/TracingClientInterceptor.java | 4 ++-- .../instrumentation/grpc/v1_6/TracingServerInterceptor.java | 4 ++-- .../instrumentation/jedis/JedisRequestContext.java | 2 +- .../logs/ApplicationLogRecordBuilder150Incubator.java | 6 +++--- .../resources/AttributeResourceProvider.java | 2 +- .../internal/properties/SpringConfigProperties.java | 4 ++-- .../javaagent/instrumentation/undertow/UndertowHelper.java | 4 ++-- .../javaagent/tooling/util/ClassLoaderValue.java | 4 ++-- .../smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java | 2 +- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java index 2b79f39b6b96..59408b8d2657 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/Experimental.java @@ -55,7 +55,7 @@ public static void setUrlTemplateExtractor( } } - @SuppressWarnings({"rawtypes", "unchecked"}) // we loose the generic type information + @SuppressWarnings({"rawtypes", "unchecked"}) // we lose the generic type information public static void internalSetUrlTemplateExtractor( BiConsumer, Function> urlTemplateExtractorSetter) { @@ -76,7 +76,7 @@ public static void addOperationListenerAttributesExtractor( } } - @SuppressWarnings({"rawtypes", "unchecked"}) // we loose the generic type information + @SuppressWarnings({"rawtypes", "unchecked"}) // we lose the generic type information public static void internalAddOperationListenerAttributesExtractor( BiConsumer< InstrumenterBuilder, diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java index 53c95cf2be39..bee0e9c5f827 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier.java @@ -51,7 +51,7 @@ private static final class CacheBasedVirtualFieldSupplier implements VirtualFiel ownerToFieldToImplementationMap = Cache.weak(); @Override - // storing VirtualField instances in a map looses the generic types + // storing VirtualField instances in a map loses the generic types @SuppressWarnings("unchecked") public VirtualField find( Class type, Class fieldType) { diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java index 00d62dd7272b..a94c8cba3277 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ServiceLoaderUtil.java @@ -18,7 +18,7 @@ public final class ServiceLoaderUtil { private ServiceLoaderUtil() {} - // we loose the generic type information because of using the loader function + // we lose the generic type information because of using the loader function @SuppressWarnings("unchecked") public static Iterable load(Class clazz) { return (Iterable) loadFunction.apply(clazz); diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java index ca8f7e75672d..ca796505aa74 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java @@ -37,11 +37,11 @@ final class TracingClientInterceptor implements ClientInterceptor { private static final String SENT = "SENT"; private static final String RECEIVED = "RECEIVED"; - @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate loses generic type private static final AtomicLongFieldUpdater SENT_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingClientCall.class, "sentMessageId"); - @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate loses generic type private static final AtomicLongFieldUpdater RECEIVED_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingClientCall.class, "receivedMessageId"); diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java index 3a13a673ef05..5440d9ba34db 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java @@ -37,11 +37,11 @@ final class TracingServerInterceptor implements ServerInterceptor { private static final String SENT = "SENT"; private static final String RECEIVED = "RECEIVED"; - @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate loses generic type private static final AtomicLongFieldUpdater SENT_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingServerCall.class, "sentMessageId"); - @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate looses generic type + @SuppressWarnings("rawtypes") // AtomicLongFieldUpdater.newUpdate loses generic type private static final AtomicLongFieldUpdater RECEIVED_MESSAGE_ID_UPDATER = AtomicLongFieldUpdater.newUpdater(TracingServerCall.class, "receivedMessageId"); diff --git a/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java b/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java index 5692381aa007..a04350702429 100644 --- a/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java +++ b/instrumentation/jedis/jedis-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/JedisRequestContext.java @@ -53,7 +53,7 @@ public static void endIfNotAttached( } } - @SuppressWarnings("unchecked") // we loose the generic type in ThreadLocal + @SuppressWarnings("unchecked") // we lose the generic type in ThreadLocal private static JedisRequestContext current() { return (JedisRequestContext) contextThreadLocal.get(); } diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java index 50dfafade67a..22da6a889c09 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java @@ -117,7 +117,7 @@ public ExtendedLogRecordBuilder setAttribute(AttributeKey key, @Nullable } @Override - @SuppressWarnings("unchecked") // converting ExtendedAttributeKey looses generic type + @SuppressWarnings("unchecked") // converting ExtendedAttributeKey loses generic type public ExtendedLogRecordBuilder setAttribute(ExtendedAttributeKey key, T value) { io.opentelemetry.api.incubator.common.ExtendedAttributeKey agentKey = convertExtendedAttributeKey(key); @@ -140,7 +140,7 @@ public ExtendedLogRecordBuilder setException(Throwable throwable) { @SuppressWarnings({ "unchecked", "rawtypes" - }) // converting ExtendedAttributeKey looses generic type + }) // converting ExtendedAttributeKey loses generic type private static io.opentelemetry.api.incubator.common.ExtendedAttributes convertExtendedAttributes( ExtendedAttributes applicationAttributes) { io.opentelemetry.api.incubator.common.ExtendedAttributesBuilder agentAttributes = @@ -159,7 +159,7 @@ private static io.opentelemetry.api.incubator.common.ExtendedAttributes convertE return agentAttributes.build(); } - @SuppressWarnings("rawtypes") // converting ExtendedAttributeKey looses generic type + @SuppressWarnings("rawtypes") // converting ExtendedAttributeKey loses generic type private static io.opentelemetry.api.incubator.common.ExtendedAttributeKey convertExtendedAttributeKey(ExtendedAttributeKey applicationKey) { switch (applicationKey.getType()) { diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java index 18fa6e673f8a..9bb3a82b5113 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/AttributeResourceProvider.java @@ -37,7 +37,7 @@ private AttributeBuilder() {} @CanIgnoreReturnValue @Override - @SuppressWarnings({"unchecked", "rawtypes"}) // we loose generic types when storing in map + @SuppressWarnings({"unchecked", "rawtypes"}) // we lose generic types when storing in map public AttributeBuilder add(AttributeKey key, Function> getter) { attributeGetters.put((AttributeKey) key, Objects.requireNonNull((Function) getter)); return this; diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java index a411e1b38aaa..c82f1132ce32 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java @@ -193,7 +193,7 @@ public Double getDouble(String name) { otelSdkProperties.getDouble(name)); } - @SuppressWarnings("unchecked") // reading list form environment looses generic type + @SuppressWarnings("unchecked") // reading list form environment loses generic type @Override public List getList(String name) { String normalizedName = ConfigUtil.normalizeEnvironmentVariableKey(name); @@ -224,7 +224,7 @@ public Duration getDuration(String name) { .getDuration(name); } - @SuppressWarnings("unchecked") // reading map looses generic type + @SuppressWarnings("unchecked") // reading map loses generic type @Override public Map getMap(String name) { Map otelSdkMap = otelSdkProperties.getMap(name); diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java index 86959cc6b3c1..f14b522d23ff 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHelper.java @@ -67,7 +67,7 @@ public void exchangeCompleted(Context context, HttpServerExchange exchange) { } } - @SuppressWarnings("unchecked") // we loose type info with attachments + @SuppressWarnings("unchecked") // we lose type info with attachments @Nullable public Context getServerContext(HttpServerExchange exchange) { AttachmentKey contextKey = @@ -78,7 +78,7 @@ public Context getServerContext(HttpServerExchange exchange) { return exchange.getAttachment(contextKey); } - @SuppressWarnings("unchecked") // we loose type info with attachments + @SuppressWarnings("unchecked") // we lose type info with attachments private static void attachServerContext(Context context, HttpServerExchange exchange) { AttachmentKey contextKey = (AttachmentKey) diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java index e523cc7a6b74..288f311548e7 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/util/ClassLoaderValue.java @@ -27,7 +27,7 @@ public ClassLoaderValue() { this.classInjector = classInjector; } - @SuppressWarnings("unchecked") // we loose generic type when storing it in ClassLoaderMap + @SuppressWarnings("unchecked") // we lose generic type when storing it in ClassLoaderMap public T get(ClassLoader classLoader) { return (T) ClassLoaderMap.get(classLoader, classInjector, this); } @@ -36,7 +36,7 @@ public void put(ClassLoader classLoader, T value) { ClassLoaderMap.put(classLoader, classInjector, this, value); } - @SuppressWarnings("unchecked") // we loose generic type when storing it in ClassLoaderMap + @SuppressWarnings("unchecked") // we lose generic type when storing it in ClassLoaderMap public T computeIfAbsent(ClassLoader classLoader, Supplier value) { return (T) ClassLoaderMap.computeIfAbsent(classLoader, classInjector, this, value); } diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java index 17cc34bdf7be..f57a7c1738ab 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractJvmKafkaSpringStarterSmokeTest.java @@ -65,7 +65,7 @@ void setUpContext() { "spring.kafka.producer.transaction-id-prefix=test-"); } - @SuppressWarnings("unchecked") // we loose parameter types for the KafkaTemplate + @SuppressWarnings("unchecked") // we lose parameter types for the KafkaTemplate @Override @Test void shouldInstrumentProducerAndConsumer() { From dfcf91c33440b3e85ddb7d0affe30f218324a962 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Sun, 16 Nov 2025 12:17:33 +0200 Subject: [PATCH 4/6] spotless --- .../logs/ApplicationLogRecordBuilder150Incubator.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java index 22da6a889c09..1eda068025aa 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.50/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_50/incubator/logs/ApplicationLogRecordBuilder150Incubator.java @@ -137,10 +137,7 @@ public ExtendedLogRecordBuilder setException(Throwable throwable) { return this; } - @SuppressWarnings({ - "unchecked", - "rawtypes" - }) // converting ExtendedAttributeKey loses generic type + @SuppressWarnings({"unchecked", "rawtypes"}) // converting ExtendedAttributeKey loses generic type private static io.opentelemetry.api.incubator.common.ExtendedAttributes convertExtendedAttributes( ExtendedAttributes applicationAttributes) { io.opentelemetry.api.incubator.common.ExtendedAttributesBuilder agentAttributes = From 7139c3317e65771c299c448b13ee632c77b69a05 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Sun, 16 Nov 2025 12:17:53 +0200 Subject: [PATCH 5/6] remove comment --- .../docs/auditors/SupportedLibrariesAuditorTest.java | 2 +- .../docs/auditors/SuppressionListAuditorTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java index 5135a0c2567e..d9800ced64d9 100644 --- a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java +++ b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SupportedLibrariesAuditorTest.java @@ -24,7 +24,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -@SuppressWarnings("unchecked") // to allow mocking of generic HttpResponse +@SuppressWarnings("unchecked") class SupportedLibrariesAuditorTest { @Test diff --git a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java index 2cfc54904281..1f8c999d352f 100644 --- a/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java +++ b/instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/auditors/SuppressionListAuditorTest.java @@ -25,7 +25,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -@SuppressWarnings("unchecked") // to allow mocking of generic HttpResponse +@SuppressWarnings("unchecked") class SuppressionListAuditorTest { @Test From 852aea279d062145faab3d078bf628c9e7b539ea Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Sun, 16 Nov 2025 17:36:57 +0200 Subject: [PATCH 6/6] fix unsafe cast --- .../SpringDeclarativeConfigProperties.java | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java index a48d81946f78..26b2e462c99f 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/SpringDeclarativeConfigProperties.java @@ -188,7 +188,6 @@ public Double getDouble(String name) { @Nullable @Override - @SuppressWarnings("unchecked") public List getScalarList(String name, Class scalarType) { if (!SUPPORTED_SCALAR_TYPES.contains(scalarType)) { throw new DeclarativeConfigException( @@ -201,28 +200,28 @@ public List getScalarList(String name, Class scalarType) { } Object value = simpleEntries.get(name); if (value instanceof List) { - List objectList = ((List) value); + List objectList = ((List) value); if (objectList.isEmpty()) { return Collections.emptyList(); } List result = - (List) - objectList.stream() - .map( - entry -> { - if (scalarType == String.class) { - return stringOrNull(entry); - } else if (scalarType == Boolean.class) { - return booleanOrNull(entry); - } else if (scalarType == Long.class) { - return longOrNull(entry); - } else if (scalarType == Double.class) { - return doubleOrNull(entry); - } - return null; - }) - .filter(Objects::nonNull) - .collect(toList()); + objectList.stream() + .map( + entry -> { + if (scalarType == String.class) { + return stringOrNull(entry); + } else if (scalarType == Boolean.class) { + return booleanOrNull(entry); + } else if (scalarType == Long.class) { + return longOrNull(entry); + } else if (scalarType == Double.class) { + return doubleOrNull(entry); + } + return null; + }) + .filter(Objects::nonNull) + .map(scalarType::cast) + .collect(toList()); if (result.isEmpty()) { return null; }