package com.github.kristofa.brave.jaxrs2; import com.github.kristofa.brave.Brave; import com.github.kristofa.brave.http.DefaultSpanNameProvider; import com.github.kristofa.brave.http.SpanNameProvider; import javax.inject.Inject; import javax.ws.rs.core.Feature; import javax.ws.rs.core.FeatureContext; import javax.ws.rs.ext.Provider; import static com.github.kristofa.brave.internal.Util.checkNotNull; /** * @deprecated Replaced by {@code TracingFeature} from brave-instrumentation-jaxrs2 */ @Deprecated @Provider public final class BraveTracingFeature implements Feature { /** Creates a tracing feature with defaults. Use {@link #builder(Brave)} to customize. */ public static BraveTracingFeature create(Brave brave) { return new Builder(brave).build(); } public static Builder builder(Brave brave) { return new Builder(brave); } public static final class Builder { final Brave brave; SpanNameProvider spanNameProvider = new DefaultSpanNameProvider(); Builder(Brave brave) { // intentionally hidden this.brave = checkNotNull(brave, "brave"); } public Builder spanNameProvider(SpanNameProvider spanNameProvider) { this.spanNameProvider = checkNotNull(spanNameProvider, "spanNameProvider"); return this; } public BraveTracingFeature build() { return new BraveTracingFeature(this); } } final Brave brave; final SpanNameProvider spanNameProvider; BraveTracingFeature(Builder b) { // intentionally hidden this.brave = b.brave; this.spanNameProvider = b.spanNameProvider; } @Inject // internal dependency-injection constructor BraveTracingFeature(Brave brave, SpanNameProvider spanNameProvider) { this(builder(brave).spanNameProvider(spanNameProvider)); } @Override public boolean configure(FeatureContext context) { context.register( BraveClientRequestFilter.builder(brave).spanNameProvider(spanNameProvider).build()); context.register(BraveClientResponseFilter.create(brave)); context.register( BraveContainerRequestFilter.builder(brave).spanNameProvider(spanNameProvider).build()); context.register(BraveContainerResponseFilter.create(brave)); return true; } }