diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/AttributesExtractor.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/AttributesExtractor.java index cd6fb1fbb5..501ae159ff 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/AttributesExtractor.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/AttributesExtractor.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.api.instrumenter; +import static java.util.Objects.requireNonNull; + import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; @@ -44,6 +46,8 @@ public interface AttributesExtractor { */ static AttributesExtractor constant( AttributeKey attributeKey, T attributeValue) { - return new ConstantAttributesExtractor<>(attributeKey, attributeValue); + return new ConstantAttributesExtractor<>( + requireNonNull(attributeKey, "attributeKey"), + requireNonNull(attributeValue, "attributeValue")); } } diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java index 5bdff5a5de..83b4c9482c 100644 --- a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.api.instrumenter; +import static java.util.Objects.requireNonNull; + import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.MeterBuilder; @@ -79,7 +81,7 @@ public final class InstrumenterBuilder { */ public InstrumenterBuilder setInstrumentationVersion( String instrumentationVersion) { - this.instrumentationVersion = instrumentationVersion; + this.instrumentationVersion = requireNonNull(instrumentationVersion, "instrumentationVersion"); return this; } @@ -88,7 +90,7 @@ public final class InstrumenterBuilder { * {@link Instrumenter}. */ public InstrumenterBuilder setSchemaUrl(String schemaUrl) { - this.schemaUrl = schemaUrl; + this.schemaUrl = requireNonNull(schemaUrl, "schemaUrl"); return this; } @@ -97,7 +99,7 @@ public final class InstrumenterBuilder { */ public InstrumenterBuilder setSpanStatusExtractor( SpanStatusExtractor spanStatusExtractor) { - this.spanStatusExtractor = spanStatusExtractor; + this.spanStatusExtractor = requireNonNull(spanStatusExtractor, "spanStatusExtractor"); return this; } @@ -106,7 +108,7 @@ public final class InstrumenterBuilder { */ public InstrumenterBuilder addAttributesExtractor( AttributesExtractor attributesExtractor) { - this.attributesExtractors.add(attributesExtractor); + this.attributesExtractors.add(requireNonNull(attributesExtractor, "attributesExtractor")); return this; } @@ -114,7 +116,7 @@ public final class InstrumenterBuilder { public InstrumenterBuilder addAttributesExtractors( Iterable> attributesExtractors) { - attributesExtractors.forEach(this.attributesExtractors::add); + attributesExtractors.forEach(this::addAttributesExtractor); return this; } @@ -129,7 +131,7 @@ public final class InstrumenterBuilder { /** Adds a {@link SpanLinksExtractor} that will extract span links from requests. */ public InstrumenterBuilder addSpanLinksExtractor( SpanLinksExtractor spanLinksExtractor) { - spanLinksExtractors.add(spanLinksExtractor); + spanLinksExtractors.add(requireNonNull(spanLinksExtractor, "spanLinksExtractor")); return this; } @@ -139,7 +141,7 @@ public final class InstrumenterBuilder { */ public InstrumenterBuilder addContextCustomizer( ContextCustomizer contextCustomizer) { - contextCustomizers.add(contextCustomizer); + contextCustomizers.add(requireNonNull(contextCustomizer, "contextCustomizer")); return this; } @@ -148,7 +150,7 @@ public final class InstrumenterBuilder { * ends. */ public InstrumenterBuilder addOperationListener(OperationListener listener) { - operationListeners.add(listener); + operationListeners.add(requireNonNull(listener, "operationListener")); return this; } @@ -157,7 +159,7 @@ public final class InstrumenterBuilder { * requests processing metrics. */ public InstrumenterBuilder addOperationMetrics(OperationMetrics factory) { - operationMetrics.add(factory); + operationMetrics.add(requireNonNull(factory, "operationMetrics")); return this; } @@ -167,7 +169,7 @@ public final class InstrumenterBuilder { */ public InstrumenterBuilder setErrorCauseExtractor( ErrorCauseExtractor errorCauseExtractor) { - this.errorCauseExtractor = errorCauseExtractor; + this.errorCauseExtractor = requireNonNull(errorCauseExtractor, "errorCauseExtractor"); return this; } @@ -189,7 +191,8 @@ public final class InstrumenterBuilder { @Deprecated public Instrumenter newClientInstrumenter(TextMapSetter setter) { return buildInstrumenter( - InstrumenterConstructor.propagatingToDownstream(setter), SpanKindExtractor.alwaysClient()); + InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")), + SpanKindExtractor.alwaysClient()); } /** @@ -201,7 +204,8 @@ public final class InstrumenterBuilder { @Deprecated public Instrumenter newServerInstrumenter(TextMapGetter getter) { return buildInstrumenter( - InstrumenterConstructor.propagatingFromUpstream(getter), SpanKindExtractor.alwaysServer()); + InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")), + SpanKindExtractor.alwaysServer()); } /** @@ -213,7 +217,7 @@ public final class InstrumenterBuilder { @Deprecated public Instrumenter newProducerInstrumenter(TextMapSetter setter) { return buildInstrumenter( - InstrumenterConstructor.propagatingToDownstream(setter), + InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")), SpanKindExtractor.alwaysProducer()); } @@ -226,7 +230,7 @@ public final class InstrumenterBuilder { @Deprecated public Instrumenter newConsumerInstrumenter(TextMapGetter getter) { return buildInstrumenter( - InstrumenterConstructor.propagatingFromUpstream(getter), + InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")), SpanKindExtractor.alwaysConsumer()); } @@ -251,7 +255,8 @@ public final class InstrumenterBuilder { @Deprecated public Instrumenter newInstrumenter( SpanKindExtractor spanKindExtractor) { - return buildInstrumenter(InstrumenterConstructor.internal(), spanKindExtractor); + return buildInstrumenter( + InstrumenterConstructor.internal(), requireNonNull(spanKindExtractor, "spanKindExtractor")); } /** @@ -260,7 +265,8 @@ public final class InstrumenterBuilder { */ public Instrumenter buildClientInstrumenter(TextMapSetter setter) { return buildInstrumenter( - InstrumenterConstructor.propagatingToDownstream(setter), SpanKindExtractor.alwaysClient()); + InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")), + SpanKindExtractor.alwaysClient()); } /** @@ -269,7 +275,8 @@ public final class InstrumenterBuilder { */ public Instrumenter buildServerInstrumenter(TextMapGetter getter) { return buildInstrumenter( - InstrumenterConstructor.propagatingFromUpstream(getter), SpanKindExtractor.alwaysServer()); + InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")), + SpanKindExtractor.alwaysServer()); } /** @@ -278,7 +285,7 @@ public final class InstrumenterBuilder { */ public Instrumenter buildProducerInstrumenter(TextMapSetter setter) { return buildInstrumenter( - InstrumenterConstructor.propagatingToDownstream(setter), + InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")), SpanKindExtractor.alwaysProducer()); } @@ -288,7 +295,7 @@ public final class InstrumenterBuilder { */ public Instrumenter buildConsumerInstrumenter(TextMapGetter getter) { return buildInstrumenter( - InstrumenterConstructor.propagatingFromUpstream(getter), + InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")), SpanKindExtractor.alwaysConsumer()); } @@ -307,7 +314,8 @@ public final class InstrumenterBuilder { */ public Instrumenter buildInstrumenter( SpanKindExtractor spanKindExtractor) { - return buildInstrumenter(InstrumenterConstructor.internal(), spanKindExtractor); + return buildInstrumenter( + InstrumenterConstructor.internal(), requireNonNull(spanKindExtractor, "spanKindExtractor")); } private Instrumenter buildInstrumenter( diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/package-info.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/package-info.java new file mode 100644 index 0000000000..45783eb040 --- /dev/null +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/package-info.java @@ -0,0 +1,4 @@ +@ParametersAreNonnullByDefault +package io.opentelemetry.instrumentation.api.instrumenter; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/package-info.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/package-info.java new file mode 100644 index 0000000000..82a7738fa0 --- /dev/null +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/package-info.java @@ -0,0 +1,4 @@ +@ParametersAreNonnullByDefault +package io.opentelemetry.instrumentation.api.internal; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/util/package-info.java b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/util/package-info.java new file mode 100644 index 0000000000..cbf14508ad --- /dev/null +++ b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/util/package-info.java @@ -0,0 +1,4 @@ +@ParametersAreNonnullByDefault +package io.opentelemetry.instrumentation.api.util; + +import javax.annotation.ParametersAreNonnullByDefault;