package org.stagemonitor.tracing; import java.util.Collections; import java.util.Map; import io.opentracing.Span; import io.opentracing.SpanContext; public class NoopSpan implements Span { public static final Span INSTANCE = new NoopSpan(); private NoopSpan() { } @Override public SpanContext context() { return NoopSpanContext.INSTANCE; } @Override public void finish() { } @Override public void finish(long finishMicros) { } @Override public void close() { } @Override public Span setTag(String key, String value) { return this; } @Override public Span setTag(String key, boolean value) { return this; } @Override public Span setTag(String key, Number value) { return this; } @Override public Span log(Map<String, ?> fields) { return this; } @Override public Span log(long timestampMicroseconds, Map<String, ?> fields) { return this; } @Override public Span log(String event) { return this; } @Override public Span log(long timestampMicroseconds, String event) { return this; } @Override public Span setBaggageItem(String key, String value) { return this; } @Override public String getBaggageItem(String key) { return null; } @Override public Span setOperationName(String operationName) { return this; } @Override public Span log(String eventName, Object payload) { return this; } @Override public Span log(long timestampMicroseconds, String eventName, Object payload) { return this; } static final class NoopSpanContext implements SpanContext { static final SpanContext INSTANCE = new NoopSpanContext(); @Override public Iterable<Map.Entry<String, String>> baggageItems() { return Collections.emptyList(); } } }