From 464a043aa80047312cb2d9a3e2f4966496033bfe Mon Sep 17 00:00:00 2001 From: NithinU2802 Date: Mon, 20 Jul 2026 22:29:14 +0530 Subject: [PATCH 1/3] fix: handle null values in ReadOnlyArrayMap with testcase --- .../opentelemetry/api/internal/ReadOnlyArrayMap.java | 3 ++- .../api/internal/ReadOnlyArrayMapTest.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/api/all/src/main/java/io/opentelemetry/api/internal/ReadOnlyArrayMap.java b/api/all/src/main/java/io/opentelemetry/api/internal/ReadOnlyArrayMap.java index 0d178e212b0..a1befa5a5e4 100644 --- a/api/all/src/main/java/io/opentelemetry/api/internal/ReadOnlyArrayMap.java +++ b/api/all/src/main/java/io/opentelemetry/api/internal/ReadOnlyArrayMap.java @@ -72,7 +72,8 @@ public boolean containsKey(Object o) { @Override public boolean containsValue(Object o) { for (int i = 0; i < array.size(); i += 2) { - if (value(i + 1).equals(o)) { + V value = value(i + 1); + if (o == null ? value == null : o.equals(value)) { return true; } } diff --git a/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java b/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java index 54313d24bf5..a53835c5322 100644 --- a/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java @@ -5,6 +5,8 @@ package io.opentelemetry.api.internal; +import static org.assertj.core.api.Assertions.assertThat; + import com.google.common.testing.EqualsTester; import java.util.Arrays; import java.util.Collections; @@ -25,4 +27,13 @@ void equalsHashCode() { .addEqualityGroup(empty, empty) .testEquals(); } + + @Test + void containsValueNull() { + Map map = ReadOnlyArrayMap.wrap(Arrays.asList("a", null)); + + assertThat(map.containsValue(null)).isTrue(); + assertThat(map.containsValue("b")).isFalse(); + } + } From 86a04c958dd96e791c442dec0f99b80f448dff0d Mon Sep 17 00:00:00 2001 From: NithinU2802 Date: Wed, 22 Jul 2026 09:47:07 +0530 Subject: [PATCH 2/3] fix: formatting ReadOnlyArrayMapTest --- .../java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java b/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java index a53835c5322..ce76f835093 100644 --- a/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java @@ -35,5 +35,4 @@ void containsValueNull() { assertThat(map.containsValue(null)).isTrue(); assertThat(map.containsValue("b")).isFalse(); } - } From 78cf58a5545ab8973c105bc2ffc6954c0a6fd5f1 Mon Sep 17 00:00:00 2001 From: NithinU2802 Date: Wed, 22 Jul 2026 13:48:21 +0530 Subject: [PATCH 3/3] fix: to cover the missing testcase --- .../io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java b/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java index ce76f835093..4a6117f7188 100644 --- a/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/internal/ReadOnlyArrayMapTest.java @@ -31,8 +31,10 @@ void equalsHashCode() { @Test void containsValueNull() { Map map = ReadOnlyArrayMap.wrap(Arrays.asList("a", null)); + Map mapWithoutNull = ReadOnlyArrayMap.wrap(Arrays.asList("a", "b")); assertThat(map.containsValue(null)).isTrue(); assertThat(map.containsValue("b")).isFalse(); + assertThat(mapWithoutNull.containsValue(null)).isFalse(); } }