java.lang.Object
io.helidon.tracing.providers.opentelemetry.HelidonOpenTelemetry

public final class HelidonOpenTelemetry extends Object
Open Telemetry factory methods to create wrappers for Open Telemetry types.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    Check if OpenTelemetry is present by indirect properties.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    OpenTelemetry property for the Java agent.
    static final String
    OpenTelemetry property for indicating if the Java agent is present.
  • Method Summary

    Modifier and Type
    Method
    Description
    static <T extends io.opentelemetry.api.trace.Span & Wrapper>
    T
    Returns a Span implementation which delegates to the provided Helidon Span, thereby notifying registered SpanListener objects of span lifecycle events.
    static <T extends io.opentelemetry.api.trace.Tracer & Wrapper>
    T
    callbackEnabledFrom(Tracer helidonTracer)
    Returns an OpenTelemetry Tracer implementation which provides SpanBuilder and Span instances capable of notifying SpanListener objects registered with the supplied Helidon tracer.
    static <T extends io.opentelemetry.api.trace.Span & Wrapper>
    T
    callbackEnabledFrom(io.opentelemetry.api.trace.Span otelSpan)
    Returns an OpenTelemetry Span implementation which delegates to the Span managed by the supplied Helidon Span and which also provides Scope instances capable of notifying registered SpanListener objects.
    static <T extends io.opentelemetry.api.trace.Tracer & Wrapper>
    T
    callbackEnabledFrom(io.opentelemetry.api.trace.Tracer otelTracer)
    Returns an OpenTelemetry Tracer implementation which provides SpanBuilder and Span instances capable of notifying registered SpanListener objects.
    static io.helidon.tracing.providers.opentelemetry.OpenTelemetryTracer
    create(io.opentelemetry.api.OpenTelemetry telemetry, io.opentelemetry.api.trace.Tracer tracer, Map<String,String> tags)
    Wrap an open telemetry tracer.
    static Span
    create(io.opentelemetry.api.trace.Span span)
    Wrap an open telemetry span.
    static Span.Builder<?>
    create(io.opentelemetry.api.trace.SpanBuilder spanBuilder, Tracer helidonTracer)
    Wrap an open telemetry span builder.
    static Span
    create(io.opentelemetry.api.trace.Span span, io.opentelemetry.api.baggage.Baggage baggage)
    Wrap an open telemetry span.
    create(io.opentelemetry.context.Context context)
    Wrap an Open Telemetry context.
    static void
    invokeListeners(Span helidonSpan, System.Logger logger, Consumer<SpanListener> operation)
    Invokes listeners known to the specified Helidon span using the provided operation; intended for Helidon internal use only.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • OTEL_AGENT_PRESENT_PROPERTY

      public static final String OTEL_AGENT_PRESENT_PROPERTY
      OpenTelemetry property for indicating if the Java agent is present.
      See Also:
    • IO_OPENTELEMETRY_JAVAAGENT

      public static final String IO_OPENTELEMETRY_JAVAAGENT
      OpenTelemetry property for the Java agent.
      See Also:
  • Method Details

    • create

      public static io.helidon.tracing.providers.opentelemetry.OpenTelemetryTracer create(io.opentelemetry.api.OpenTelemetry telemetry, io.opentelemetry.api.trace.Tracer tracer, Map<String,String> tags)
      Wrap an open telemetry tracer.
      Parameters:
      telemetry - open telemetry instance
      tracer - tracer
      tags - tracer tags
      Returns:
      Helidon Tracer
    • create

      public static Span create(io.opentelemetry.api.trace.Span span)
      Wrap an open telemetry span.
      Parameters:
      span - open telemetry span
      Returns:
      Helidon Span
    • create

      public static Span create(io.opentelemetry.api.trace.Span span, io.opentelemetry.api.baggage.Baggage baggage)
      Wrap an open telemetry span.
      Parameters:
      span - open telemetry span
      baggage - open telemetry baggage
      Returns:
      Helidon (@link io.helidon.tracing.Span}
    • create

      public static Span.Builder<?> create(io.opentelemetry.api.trace.SpanBuilder spanBuilder, Tracer helidonTracer)
      Wrap an open telemetry span builder.
      Parameters:
      spanBuilder - open telemetry span builder
      helidonTracer - Helidon Tracer to use in creating the wrapping span builder
      Returns:
      Helidon Span.Builder
    • create

      public static SpanContext create(io.opentelemetry.context.Context context)
      Wrap an Open Telemetry context.
      Parameters:
      context - Open Telemetry context
      Returns:
      Helidon SpanContext
    • callbackEnabledFrom

      public static <T extends io.opentelemetry.api.trace.Tracer & Wrapper> T callbackEnabledFrom(io.opentelemetry.api.trace.Tracer otelTracer)
      Returns an OpenTelemetry Tracer implementation which provides SpanBuilder and Span instances capable of notifying registered SpanListener objects.

      The returned callback-enabled tracer is prepared with any service-loaded SpanListener objects. If the calling code wants Helidon to notify other listeners it must register them explicitly as shown in the example (which shows fully-qualified types for clarity).

      
       io.opentelemetry.api.trace.Tracer nativeOtelTracer; // previously-assigned
       io.helidon.tracing.api.SpanListener mySpanListener; // previously-assigned
      
       io.opentelemetry.api.trace.Tracer callbackEnabledOtelTracer = HelidonOpenTelemetry.callbackEnabledFrom(nativeOtelTracer);
       callbackEnabledOtelTracer.unwrap(io.helidon.tracing.api.Tracer.class).register(mySpanListener);
      
      Code which has a Helidon Tracer should instead invoke callbackEnabledFrom(io.helidon.tracing.Tracer), passing the Helidon tracer. Then Helidon will automatically notify all listeners already registered with the Helidon tracer.
      Type Parameters:
      T - specific type of the tracer to return
      Parameters:
      otelTracer - the native OpenTelemetry Tracer to expose as a separate callback-enabled OpenTelemetry Tracer
      Returns:
      an OpenTelemetry Tracer and Wrapper able to notify span lifecycle listeners
    • callbackEnabledFrom

      public static <T extends io.opentelemetry.api.trace.Tracer & Wrapper> T callbackEnabledFrom(Tracer helidonTracer)
      Returns an OpenTelemetry Tracer implementation which provides SpanBuilder and Span instances capable of notifying SpanListener objects registered with the supplied Helidon tracer.
      Type Parameters:
      T - specific type of the tracer to return
      Parameters:
      helidonTracer - the Helidon Tracer to expose as a callback-enabled OpenTelemetry Tracer
      Returns:
      an OpenTelemetry Tracer and Wrapper able to notify span lifecycle listeners
    • callbackEnabledFrom

      public static <T extends io.opentelemetry.api.trace.Span & Wrapper> T callbackEnabledFrom(io.opentelemetry.api.trace.Span otelSpan)
      Returns an OpenTelemetry Span implementation which delegates to the Span managed by the supplied Helidon Span and which also provides Scope instances capable of notifying registered SpanListener objects.

      This method internally creates a new Helidon Span to perform the notifications. Code which already has a Helidon Span from which it unwrapped the OpenTelemetry span should instead invoke callbackEnabledFrom(io.helidon.tracing.Span), passing the Helidon tracer.

      Type Parameters:
      T - specific type of the Span to return
      Parameters:
      otelSpan - the native OpenTelemetry Span to expose as a callback-enabled OpenTelemetry Span
      Returns:
      an OpenTelemetry Span and Wrapper which also performs lifecycle callbacks
    • callbackEnabledFrom

      public static <T extends io.opentelemetry.api.trace.Span & Wrapper> T callbackEnabledFrom(Span helidonSpan)
      Returns a Span implementation which delegates to the provided Helidon Span, thereby notifying registered SpanListener objects of span lifecycle events.
      Type Parameters:
      T - specific type of the Span to return
      Parameters:
      helidonSpan - the Helidon Span to expose as a callback-enabled OpenTelemetry Span
      Returns:
      an OpenTelemetry Span and Wrapper which also performs lifecycle callbacks
    • invokeListeners

      public static void invokeListeners(Span helidonSpan, System.Logger logger, Consumer<SpanListener> operation)
      Invokes listeners known to the specified Helidon span using the provided operation; intended for Helidon internal use only.
      Parameters:
      helidonSpan - Helidon Span whose listeners are to be invoked
      logger - logger for reporting exceptions during listener invocations
      operation - operation to invoke on each listener