diff --git a/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java b/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java index 12b81d7b033..243ce157b0a 100644 --- a/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java +++ b/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java @@ -5,6 +5,7 @@ package io.opentelemetry.api.baggage; +import io.opentelemetry.common.impl.ApiUsageLogger; import io.opentelemetry.context.Context; import io.opentelemetry.context.ImplicitContextKeyed; import java.util.Map; @@ -52,6 +53,10 @@ static Baggage current() { * Baggage} if there is no baggage in the context. */ static Baggage fromContext(Context context) { + if (context == null) { + ApiUsageLogger.logNullParam(Baggage.class, "fromContext", "context"); + return empty(); + } Baggage baggage = context.get(BaggageContextKey.KEY); return baggage != null ? baggage : empty(); } @@ -62,6 +67,10 @@ static Baggage fromContext(Context context) { */ @Nullable static Baggage fromContextOrNull(Context context) { + if (context == null) { + ApiUsageLogger.logNullParam(Baggage.class, "fromContextOrNull", "context"); + return null; + } return context.get(BaggageContextKey.KEY); } diff --git a/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java b/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java index b8dfd63e168..b2c6232ee94 100644 --- a/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java @@ -54,4 +54,14 @@ void testGetBaggageWithoutDefault_ExplicitContext() { Context context = Context.root().with(baggage); assertThat(Baggage.fromContextOrNull(context)).isSameAs(baggage); } + + @Test + void fromContext_null() { + assertThat(Baggage.fromContext(null)).isSameAs(Baggage.empty()); + } + + @Test + void fromContextOrNull_null() { + assertThat(Baggage.fromContextOrNull(null)).isNull(); + } }