Add ParametersAreNonnullByDefault and safety null checks in builder methods (#6364)
This commit is contained in:
parent
c3c4fb7101
commit
06dfd59fcd
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
package io.opentelemetry.instrumentation.api.instrumenter;
|
package io.opentelemetry.instrumentation.api.instrumenter;
|
||||||
|
|
||||||
|
import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
import io.opentelemetry.api.common.AttributeKey;
|
import io.opentelemetry.api.common.AttributeKey;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.common.AttributesBuilder;
|
import io.opentelemetry.api.common.AttributesBuilder;
|
||||||
|
@ -44,6 +46,8 @@ public interface AttributesExtractor<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
static <REQUEST, RESPONSE, T> AttributesExtractor<REQUEST, RESPONSE> constant(
|
static <REQUEST, RESPONSE, T> AttributesExtractor<REQUEST, RESPONSE> constant(
|
||||||
AttributeKey<T> attributeKey, T attributeValue) {
|
AttributeKey<T> attributeKey, T attributeValue) {
|
||||||
return new ConstantAttributesExtractor<>(attributeKey, attributeValue);
|
return new ConstantAttributesExtractor<>(
|
||||||
|
requireNonNull(attributeKey, "attributeKey"),
|
||||||
|
requireNonNull(attributeValue, "attributeValue"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
package io.opentelemetry.instrumentation.api.instrumenter;
|
package io.opentelemetry.instrumentation.api.instrumenter;
|
||||||
|
|
||||||
|
import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
import io.opentelemetry.api.OpenTelemetry;
|
import io.opentelemetry.api.OpenTelemetry;
|
||||||
import io.opentelemetry.api.metrics.Meter;
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
import io.opentelemetry.api.metrics.MeterBuilder;
|
import io.opentelemetry.api.metrics.MeterBuilder;
|
||||||
|
@ -79,7 +81,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> setInstrumentationVersion(
|
public InstrumenterBuilder<REQUEST, RESPONSE> setInstrumentationVersion(
|
||||||
String instrumentationVersion) {
|
String instrumentationVersion) {
|
||||||
this.instrumentationVersion = instrumentationVersion;
|
this.instrumentationVersion = requireNonNull(instrumentationVersion, "instrumentationVersion");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +90,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
* {@link Instrumenter}.
|
* {@link Instrumenter}.
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> setSchemaUrl(String schemaUrl) {
|
public InstrumenterBuilder<REQUEST, RESPONSE> setSchemaUrl(String schemaUrl) {
|
||||||
this.schemaUrl = schemaUrl;
|
this.schemaUrl = requireNonNull(schemaUrl, "schemaUrl");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +99,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> setSpanStatusExtractor(
|
public InstrumenterBuilder<REQUEST, RESPONSE> setSpanStatusExtractor(
|
||||||
SpanStatusExtractor<? super REQUEST, ? super RESPONSE> spanStatusExtractor) {
|
SpanStatusExtractor<? super REQUEST, ? super RESPONSE> spanStatusExtractor) {
|
||||||
this.spanStatusExtractor = spanStatusExtractor;
|
this.spanStatusExtractor = requireNonNull(spanStatusExtractor, "spanStatusExtractor");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +108,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtractor(
|
public InstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtractor(
|
||||||
AttributesExtractor<? super REQUEST, ? super RESPONSE> attributesExtractor) {
|
AttributesExtractor<? super REQUEST, ? super RESPONSE> attributesExtractor) {
|
||||||
this.attributesExtractors.add(attributesExtractor);
|
this.attributesExtractors.add(requireNonNull(attributesExtractor, "attributesExtractor"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +116,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtractors(
|
public InstrumenterBuilder<REQUEST, RESPONSE> addAttributesExtractors(
|
||||||
Iterable<? extends AttributesExtractor<? super REQUEST, ? super RESPONSE>>
|
Iterable<? extends AttributesExtractor<? super REQUEST, ? super RESPONSE>>
|
||||||
attributesExtractors) {
|
attributesExtractors) {
|
||||||
attributesExtractors.forEach(this.attributesExtractors::add);
|
attributesExtractors.forEach(this::addAttributesExtractor);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +131,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
/** Adds a {@link SpanLinksExtractor} that will extract span links from requests. */
|
/** Adds a {@link SpanLinksExtractor} that will extract span links from requests. */
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> addSpanLinksExtractor(
|
public InstrumenterBuilder<REQUEST, RESPONSE> addSpanLinksExtractor(
|
||||||
SpanLinksExtractor<REQUEST> spanLinksExtractor) {
|
SpanLinksExtractor<REQUEST> spanLinksExtractor) {
|
||||||
spanLinksExtractors.add(spanLinksExtractor);
|
spanLinksExtractors.add(requireNonNull(spanLinksExtractor, "spanLinksExtractor"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +141,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> addContextCustomizer(
|
public InstrumenterBuilder<REQUEST, RESPONSE> addContextCustomizer(
|
||||||
ContextCustomizer<? super REQUEST> contextCustomizer) {
|
ContextCustomizer<? super REQUEST> contextCustomizer) {
|
||||||
contextCustomizers.add(contextCustomizer);
|
contextCustomizers.add(requireNonNull(contextCustomizer, "contextCustomizer"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +150,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
* ends.
|
* ends.
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> addOperationListener(OperationListener listener) {
|
public InstrumenterBuilder<REQUEST, RESPONSE> addOperationListener(OperationListener listener) {
|
||||||
operationListeners.add(listener);
|
operationListeners.add(requireNonNull(listener, "operationListener"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +159,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
* requests processing metrics.
|
* requests processing metrics.
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> addOperationMetrics(OperationMetrics factory) {
|
public InstrumenterBuilder<REQUEST, RESPONSE> addOperationMetrics(OperationMetrics factory) {
|
||||||
operationMetrics.add(factory);
|
operationMetrics.add(requireNonNull(factory, "operationMetrics"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +169,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public InstrumenterBuilder<REQUEST, RESPONSE> setErrorCauseExtractor(
|
public InstrumenterBuilder<REQUEST, RESPONSE> setErrorCauseExtractor(
|
||||||
ErrorCauseExtractor errorCauseExtractor) {
|
ErrorCauseExtractor errorCauseExtractor) {
|
||||||
this.errorCauseExtractor = errorCauseExtractor;
|
this.errorCauseExtractor = requireNonNull(errorCauseExtractor, "errorCauseExtractor");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +191,8 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Instrumenter<REQUEST, RESPONSE> newClientInstrumenter(TextMapSetter<REQUEST> setter) {
|
public Instrumenter<REQUEST, RESPONSE> newClientInstrumenter(TextMapSetter<REQUEST> setter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingToDownstream(setter), SpanKindExtractor.alwaysClient());
|
InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")),
|
||||||
|
SpanKindExtractor.alwaysClient());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -201,7 +204,8 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Instrumenter<REQUEST, RESPONSE> newServerInstrumenter(TextMapGetter<REQUEST> getter) {
|
public Instrumenter<REQUEST, RESPONSE> newServerInstrumenter(TextMapGetter<REQUEST> getter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingFromUpstream(getter), SpanKindExtractor.alwaysServer());
|
InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")),
|
||||||
|
SpanKindExtractor.alwaysServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -213,7 +217,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Instrumenter<REQUEST, RESPONSE> newProducerInstrumenter(TextMapSetter<REQUEST> setter) {
|
public Instrumenter<REQUEST, RESPONSE> newProducerInstrumenter(TextMapSetter<REQUEST> setter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingToDownstream(setter),
|
InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")),
|
||||||
SpanKindExtractor.alwaysProducer());
|
SpanKindExtractor.alwaysProducer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +230,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Instrumenter<REQUEST, RESPONSE> newConsumerInstrumenter(TextMapGetter<REQUEST> getter) {
|
public Instrumenter<REQUEST, RESPONSE> newConsumerInstrumenter(TextMapGetter<REQUEST> getter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingFromUpstream(getter),
|
InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")),
|
||||||
SpanKindExtractor.alwaysConsumer());
|
SpanKindExtractor.alwaysConsumer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -251,7 +255,8 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Instrumenter<REQUEST, RESPONSE> newInstrumenter(
|
public Instrumenter<REQUEST, RESPONSE> newInstrumenter(
|
||||||
SpanKindExtractor<? super REQUEST> spanKindExtractor) {
|
SpanKindExtractor<? super REQUEST> spanKindExtractor) {
|
||||||
return buildInstrumenter(InstrumenterConstructor.internal(), spanKindExtractor);
|
return buildInstrumenter(
|
||||||
|
InstrumenterConstructor.internal(), requireNonNull(spanKindExtractor, "spanKindExtractor"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -260,7 +265,8 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public Instrumenter<REQUEST, RESPONSE> buildClientInstrumenter(TextMapSetter<REQUEST> setter) {
|
public Instrumenter<REQUEST, RESPONSE> buildClientInstrumenter(TextMapSetter<REQUEST> setter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingToDownstream(setter), SpanKindExtractor.alwaysClient());
|
InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")),
|
||||||
|
SpanKindExtractor.alwaysClient());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -269,7 +275,8 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public Instrumenter<REQUEST, RESPONSE> buildServerInstrumenter(TextMapGetter<REQUEST> getter) {
|
public Instrumenter<REQUEST, RESPONSE> buildServerInstrumenter(TextMapGetter<REQUEST> getter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingFromUpstream(getter), SpanKindExtractor.alwaysServer());
|
InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")),
|
||||||
|
SpanKindExtractor.alwaysServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -278,7 +285,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public Instrumenter<REQUEST, RESPONSE> buildProducerInstrumenter(TextMapSetter<REQUEST> setter) {
|
public Instrumenter<REQUEST, RESPONSE> buildProducerInstrumenter(TextMapSetter<REQUEST> setter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingToDownstream(setter),
|
InstrumenterConstructor.propagatingToDownstream(requireNonNull(setter, "setter")),
|
||||||
SpanKindExtractor.alwaysProducer());
|
SpanKindExtractor.alwaysProducer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,7 +295,7 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public Instrumenter<REQUEST, RESPONSE> buildConsumerInstrumenter(TextMapGetter<REQUEST> getter) {
|
public Instrumenter<REQUEST, RESPONSE> buildConsumerInstrumenter(TextMapGetter<REQUEST> getter) {
|
||||||
return buildInstrumenter(
|
return buildInstrumenter(
|
||||||
InstrumenterConstructor.propagatingFromUpstream(getter),
|
InstrumenterConstructor.propagatingFromUpstream(requireNonNull(getter, "getter")),
|
||||||
SpanKindExtractor.alwaysConsumer());
|
SpanKindExtractor.alwaysConsumer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +314,8 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
|
||||||
*/
|
*/
|
||||||
public Instrumenter<REQUEST, RESPONSE> buildInstrumenter(
|
public Instrumenter<REQUEST, RESPONSE> buildInstrumenter(
|
||||||
SpanKindExtractor<? super REQUEST> spanKindExtractor) {
|
SpanKindExtractor<? super REQUEST> spanKindExtractor) {
|
||||||
return buildInstrumenter(InstrumenterConstructor.internal(), spanKindExtractor);
|
return buildInstrumenter(
|
||||||
|
InstrumenterConstructor.internal(), requireNonNull(spanKindExtractor, "spanKindExtractor"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Instrumenter<REQUEST, RESPONSE> buildInstrumenter(
|
private Instrumenter<REQUEST, RESPONSE> buildInstrumenter(
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
package io.opentelemetry.instrumentation.api.instrumenter;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
|
@ -0,0 +1,4 @@
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
package io.opentelemetry.instrumentation.api.internal;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
|
@ -0,0 +1,4 @@
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
package io.opentelemetry.instrumentation.api.util;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
Loading…
Reference in New Issue