All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opentelemetry.opencensusshim.DelegatingSpan Maven / Gradle / Ivy

The newest version!
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package io.opentelemetry.opencensusshim;

import com.google.errorprone.annotations.MustBeClosed;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanContext;
import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import java.time.Instant;
import java.util.concurrent.TimeUnit;

/**
 * Delegates all {@link Span} methods to some underlying Span via {@link
 * DelegatingSpan#getDelegate()}.
 *
 * 

If not all calls are proxied, some, such as and in particular {@link * Span#storeInContext(Context)} and {@link Span#makeCurrent()}, will use {@code this} instead of * the proxied {@link Span} which betrays the expectation of instance fidelity imposed by the * underlying otel mechanisms which minted the original {@link Span}, such as the otel javaagent. * *

This proxy class simplification allows the shim to perform its duties as minimally invasively * as possible and itself never expose its own classes and objects to callers or recipients of calls * from the shim. * *

This addresses the inconsistency where not all methods are appropriately delegated by exposing * a single method, {@link DelegatingSpan#getDelegate()}, to simplify and better ensure delegation * and meeting expectations. */ interface DelegatingSpan extends Span { Span getDelegate(); @Override default Span updateName(String name) { return getDelegate().updateName(name); } @Override default SpanContext getSpanContext() { return getDelegate().getSpanContext(); } @Override default boolean isRecording() { return getDelegate().isRecording(); } @Override default Span setAttribute(AttributeKey key, T value) { return getDelegate().setAttribute(key, value); } @Override default Span setAttribute(String key, String value) { return getDelegate().setAttribute(key, value); } @Override default Span setAttribute(String key, long value) { return getDelegate().setAttribute(key, value); } @Override default Span setAttribute(String key, double value) { return getDelegate().setAttribute(key, value); } @Override default Span setAttribute(String key, boolean value) { return getDelegate().setAttribute(key, value); } @Override default Span setAttribute(AttributeKey key, int value) { return getDelegate().setAttribute(key, value); } @Override default Span setAllAttributes(Attributes attributes) { return getDelegate().setAllAttributes(attributes); } @Override default Span addEvent(String name, Attributes attributes) { return getDelegate().addEvent(name, attributes); } @Override default Span addEvent(String name, Attributes attributes, long timestamp, TimeUnit unit) { return getDelegate().addEvent(name, attributes, timestamp, unit); } @Override default Span addEvent(String name) { return getDelegate().addEvent(name); } @Override default Span addEvent(String name, long timestamp, TimeUnit unit) { return getDelegate().addEvent(name, timestamp, unit); } @Override default Span addEvent(String name, Instant timestamp) { return getDelegate().addEvent(name, timestamp); } @Override default Span addEvent(String name, Attributes attributes, Instant timestamp) { return getDelegate().addEvent(name, attributes, timestamp); } @Override default Span setStatus(StatusCode statusCode, String description) { return getDelegate().setStatus(statusCode, description); } @Override default Span setStatus(StatusCode statusCode) { return getDelegate().setStatus(statusCode); } @Override default Span recordException(Throwable exception, Attributes additionalAttributes) { return getDelegate().recordException(exception, additionalAttributes); } @Override default Span recordException(Throwable exception) { return getDelegate().recordException(exception); } @Override default void end(Instant timestamp) { getDelegate().end(timestamp); } @Override default void end() { getDelegate().end(); } @Override default void end(long timestamp, TimeUnit unit) { getDelegate().end(timestamp, unit); } @Override default Context storeInContext(Context context) { return getDelegate().storeInContext(context); } @MustBeClosed @Override default Scope makeCurrent() { return getDelegate().makeCurrent(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy