Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ public static OpenTelemetry get() {
* OpenTelemetrySdk.builder().buildAndRegisterGlobal()} instead of calling this method directly.
*/
public static void set(OpenTelemetry openTelemetry) {
Objects.requireNonNull(openTelemetry, "openTelemetry");
synchronized (mutex) {
if (globalOpenTelemetry != null) {
throw new IllegalStateException(
Expand All @@ -192,6 +193,7 @@ public static void set(OpenTelemetry openTelemetry) {
* @since 1.52.0
*/
public static void set(Supplier<OpenTelemetry> supplier) {
Objects.requireNonNull(supplier, "supplier");
synchronized (mutex) {
OpenTelemetry openTelemetry = supplier.get();
set(openTelemetry);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import io.opentelemetry.api.trace.TracerBuilder;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import java.util.Objects;

/**
* The entrypoint to telemetry functionality for tracing, metrics and baggage.
Expand All @@ -37,6 +38,7 @@ static OpenTelemetry noop() {
* otherwise.
*/
static OpenTelemetry propagating(ContextPropagators propagators) {
Objects.requireNonNull(propagators, "propagators");
return DefaultOpenTelemetry.getPropagating(propagators);
}

Expand Down
17 changes: 17 additions & 0 deletions api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand All @@ -62,11 +67,19 @@ 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);
}

@Override
default Context storeInContext(Context context) {
if (context == null) {
ApiUsageLogger.logNullParam(Baggage.class, "storeInContext", "context");
return Context.root();
}
return context.with(BaggageContextKey.KEY, this);
}

Expand Down Expand Up @@ -109,6 +122,10 @@ default boolean isEmpty() {
*/
@Nullable
default BaggageEntry getEntry(String entryKey) {
if (entryKey == null) {
ApiUsageLogger.logNullParam(Baggage.class, "getEntry", "entryKey");
return null;
}
BaggageEntry[] result = new BaggageEntry[] {null};
forEach(
(key, entry) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package io.opentelemetry.api.baggage;

import io.opentelemetry.api.internal.ImmutableKeyValuePairs;
import io.opentelemetry.common.impl.ApiUsageLogger;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
Expand Down Expand Up @@ -33,6 +34,10 @@ static BaggageBuilder builder() {
@Nullable
@Override
public String getEntryValue(String entryKey) {
if (entryKey == null) {
ApiUsageLogger.logNullParam(Baggage.class, "getEntryValue", "entryKey");
return null;
}
BaggageEntry entry = get(entryKey);
return entry != null ? entry.getValue() : null;
}
Expand All @@ -41,6 +46,10 @@ public String getEntryValue(String entryKey) {
@Nullable
@Override
public BaggageEntry getEntry(String entryKey) {
if (entryKey == null) {
ApiUsageLogger.logNullParam(Baggage.class, "getEntry", "entryKey");
return null;
}
return get(entryKey);
}

Expand Down Expand Up @@ -69,7 +78,16 @@ static class Builder implements BaggageBuilder {

@Override
public BaggageBuilder put(String key, String value, BaggageEntryMetadata entryMetadata) {
if ((key == null) || (value == null) || (entryMetadata == null)) {
if (key == null) {
ApiUsageLogger.logNullParam(BaggageBuilder.class, "put", "key");
return this;
}
if (value == null) {
ApiUsageLogger.logNullParam(BaggageBuilder.class, "put", "value");
return this;
}
if (entryMetadata == null) {
ApiUsageLogger.logNullParam(BaggageBuilder.class, "put", "entryMetadata");
return this;
}
data.add(key);
Expand All @@ -81,6 +99,7 @@ public BaggageBuilder put(String key, String value, BaggageEntryMetadata entryMe
@Override
public BaggageBuilder remove(String key) {
if (key == null) {
ApiUsageLogger.logNullParam(BaggageBuilder.class, "remove", "key");
return this;
}
data.add(key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import io.opentelemetry.api.baggage.BaggageEntry;
import io.opentelemetry.api.internal.PercentEscaper;
import io.opentelemetry.api.internal.StringUtils;
import io.opentelemetry.common.impl.ApiUsageLogger;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapGetter;
import io.opentelemetry.context.propagation.TextMapPropagator;
Expand Down Expand Up @@ -51,7 +52,12 @@ public Collection<String> fields() {

@Override
public <C> void inject(Context context, @Nullable C carrier, TextMapSetter<C> setter) {
if (context == null || setter == null) {
if (context == null) {
ApiUsageLogger.logNullParam(TextMapPropagator.class, "inject", "context");
return;
}
if (setter == null) {
ApiUsageLogger.logNullParam(TextMapPropagator.class, "inject", "setter");
return;
}
Baggage baggage = Baggage.fromContext(context);
Expand Down Expand Up @@ -128,9 +134,11 @@ private static int encodedEntryLength(
@Override
public <C> Context extract(Context context, @Nullable C carrier, TextMapGetter<C> getter) {
if (context == null) {
ApiUsageLogger.logNullParam(TextMapPropagator.class, "extract", "context");
return Context.root();
}
if (getter == null) {
ApiUsageLogger.logNullParam(TextMapPropagator.class, "extract", "getter");
return context;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package io.opentelemetry.api.common;

import io.opentelemetry.api.internal.ImmutableKeyValuePairs;
import io.opentelemetry.common.impl.ApiUsageLogger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
Expand Down Expand Up @@ -48,6 +49,7 @@ public AttributesBuilder toBuilder() {
@Nullable
public <T> T get(AttributeKey<T> key) {
if (key == null) {
ApiUsageLogger.logNullParam(Attributes.class, "get", "key");
return null;
}
if (key.getType() == AttributeType.VALUE) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import static io.opentelemetry.api.common.AttributeKey.stringArrayKey;
import static io.opentelemetry.api.common.AttributeKey.stringKey;

import io.opentelemetry.common.impl.ApiUsageLogger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Expand Down Expand Up @@ -48,7 +49,11 @@ public <T> AttributesBuilder put(AttributeKey<Long> key, int value) {

@Override
public <T> AttributesBuilder put(AttributeKey<T> key, @Nullable T value) {
if (key == null || key.getKey().isEmpty() || value == null) {
if (key == null) {
ApiUsageLogger.logNullParam(AttributesBuilder.class, "put", "key");
return this;
}
if (key.getKey().isEmpty() || value == null) {
return this;
}
if (key.getType() == AttributeType.VALUE && value instanceof Value) {
Expand Down Expand Up @@ -164,6 +169,7 @@ private static AttributeType attributeType(List<Value<?>> arrayValues) {
// Safe: Attributes guarantees iteration over matching AttributeKey<T> / value pairs.
public AttributesBuilder putAll(Attributes attributes) {
if (attributes == null) {
ApiUsageLogger.logNullParam(AttributesBuilder.class, "putAll", "attributes");
return this;
}
attributes.forEach((key, value) -> put((AttributeKey) key, value));
Expand All @@ -172,7 +178,11 @@ public AttributesBuilder putAll(Attributes attributes) {

@Override
public <T> AttributesBuilder remove(AttributeKey<T> key) {
if (key == null || key.getKey().isEmpty()) {
if (key == null) {
ApiUsageLogger.logNullParam(AttributesBuilder.class, "remove", "key");
return this;
}
if (key.getKey().isEmpty()) {
return this;
}
return removeIf(
Expand All @@ -183,6 +193,7 @@ public <T> AttributesBuilder remove(AttributeKey<T> key) {
@Override
public AttributesBuilder removeIf(Predicate<AttributeKey<?>> predicate) {
if (predicate == null) {
ApiUsageLogger.logNullParam(AttributesBuilder.class, "removeIf", "predicate");
return this;
}
for (int i = 0; i < data.size() - 1; i += 2) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Value;
import io.opentelemetry.common.impl.ApiUsageLogger;
import io.opentelemetry.context.Context;
import java.time.Instant;
import java.util.concurrent.TimeUnit;
Expand All @@ -25,6 +26,12 @@ static Logger getInstance() {

@Override
public boolean isEnabled(Severity severity, Context context) {
if (severity == null) {
ApiUsageLogger.logNullParam(Logger.class, "isEnabled", "severity");
}
if (context == null) {
ApiUsageLogger.logNullParam(Logger.class, "isEnabled", "context");
}
return false;
}

Expand All @@ -39,51 +46,81 @@ private NoopLogRecordBuilder() {}

@Override
public LogRecordBuilder setTimestamp(long timestamp, TimeUnit unit) {
if (unit == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setTimestamp", "unit");
}
return this;
}

@Override
public LogRecordBuilder setTimestamp(Instant instant) {
if (instant == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setTimestamp", "instant");
}
return this;
}

@Override
public LogRecordBuilder setObservedTimestamp(long timestamp, TimeUnit unit) {
if (unit == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setObservedTimestamp", "unit");
}
return this;
}

@Override
public LogRecordBuilder setObservedTimestamp(Instant instant) {
if (instant == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setObservedTimestamp", "instant");
}
return this;
}

@Override
public LogRecordBuilder setContext(Context context) {
if (context == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setContext", "context");
}
return this;
}

@Override
public LogRecordBuilder setSeverity(Severity severity) {
if (severity == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setSeverity", "severity");
}
return this;
}

@Override
public LogRecordBuilder setSeverityText(String severityText) {
if (severityText == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setSeverityText", "severityText");
}
return this;
}

@Override
public LogRecordBuilder setBody(String body) {
if (body == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setBody", "body");
}
return this;
}

@Override
public LogRecordBuilder setBody(Value<?> body) {
if (body == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setBody", "body");
}
return this;
}

@Override
public <T> LogRecordBuilder setAttribute(AttributeKey<T> key, @Nullable T value) {
if (key == null) {
ApiUsageLogger.logNullParam(LogRecordBuilder.class, "setAttribute", "key");
}
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

package io.opentelemetry.api.logs;

import io.opentelemetry.common.impl.ApiUsageLogger;

class DefaultLoggerProvider implements LoggerProvider {

private static final LoggerProvider INSTANCE = new DefaultLoggerProvider();
Expand All @@ -18,18 +20,29 @@ static LoggerProvider getInstance() {

@Override
public LoggerBuilder loggerBuilder(String instrumentationScopeName) {
if (instrumentationScopeName == null) {
ApiUsageLogger.logNullParam(
LoggerProvider.class, "loggerBuilder", "instrumentationScopeName");
}
return NOOP_BUILDER;
}

private static class NoopLoggerBuilder implements LoggerBuilder {

@Override
public LoggerBuilder setSchemaUrl(String schemaUrl) {
if (schemaUrl == null) {
ApiUsageLogger.logNullParam(LoggerBuilder.class, "setSchemaUrl", "schemaUrl");
}
return this;
}

@Override
public LoggerBuilder setInstrumentationVersion(String instrumentationVersion) {
if (instrumentationVersion == null) {
ApiUsageLogger.logNullParam(
LoggerBuilder.class, "setInstrumentationVersion", "instrumentationVersion");
}
return this;
}

Expand Down
Loading
Loading