Play ws: replace common singleton with factory (#5958)

* Play ws: replace common singleton with factory

* Apply suggestions from code review

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
This commit is contained in:
Lauri Tulmin 2022-04-30 13:27:02 +03:00 committed by GitHub
parent dc829b59d3
commit 998c85571a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 88 additions and 27 deletions

View File

@ -5,7 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.playws.v1_0;
import static io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientSingletons.instrumenter;
import static io.opentelemetry.javaagent.instrumentation.playws.v1_0.PlayWs10Singletons.instrumenter;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;

View File

@ -0,0 +1,23 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.playws.v1_0;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientInstrumenterFactory;
import play.shaded.ahc.org.asynchttpclient.Request;
import play.shaded.ahc.org.asynchttpclient.Response;
public final class PlayWs10Singletons {
private static final Instrumenter<Request, Response> INSTANCE =
PlayWsClientInstrumenterFactory.createInstrumenter("io.opentelemetry.play-ws-1.0");
public static Instrumenter<Request, Response> instrumenter() {
return INSTANCE;
}
private PlayWs10Singletons() {}
}

View File

@ -6,7 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.playws.v1_0;
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
import static io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientSingletons.instrumenter;
import static io.opentelemetry.javaagent.instrumentation.playws.v1_0.PlayWs10Singletons.instrumenter;
import static java.util.Arrays.asList;
import com.google.auto.service.AutoService;

View File

@ -5,7 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.playws.v2_0;
import static io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientSingletons.instrumenter;
import static io.opentelemetry.javaagent.instrumentation.playws.v2_0.PlayWs20Singletons.instrumenter;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;

View File

@ -0,0 +1,23 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.playws.v2_0;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientInstrumenterFactory;
import play.shaded.ahc.org.asynchttpclient.Request;
import play.shaded.ahc.org.asynchttpclient.Response;
public final class PlayWs20Singletons {
private static final Instrumenter<Request, Response> INSTANCE =
PlayWsClientInstrumenterFactory.createInstrumenter("io.opentelemetry.play-ws-2.0");
public static Instrumenter<Request, Response> instrumenter() {
return INSTANCE;
}
private PlayWs20Singletons() {}
}

View File

@ -6,7 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.playws.v2_0;
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
import static io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientSingletons.instrumenter;
import static io.opentelemetry.javaagent.instrumentation.playws.v2_0.PlayWs20Singletons.instrumenter;
import static java.util.Arrays.asList;
import com.google.auto.service.AutoService;

View File

@ -5,7 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.playws.v2_1;
import static io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientSingletons.instrumenter;
import static io.opentelemetry.javaagent.instrumentation.playws.v2_1.PlayWs21Singletons.instrumenter;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;

View File

@ -0,0 +1,23 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.playws.v2_1;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientInstrumenterFactory;
import play.shaded.ahc.org.asynchttpclient.Request;
import play.shaded.ahc.org.asynchttpclient.Response;
public final class PlayWs21Singletons {
private static final Instrumenter<Request, Response> INSTANCE =
PlayWsClientInstrumenterFactory.createInstrumenter("io.opentelemetry.play-ws-2.1");
public static Instrumenter<Request, Response> instrumenter() {
return INSTANCE;
}
private PlayWs21Singletons() {}
}

View File

@ -6,7 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.playws.v2_1;
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
import static io.opentelemetry.javaagent.instrumentation.playws.PlayWsClientSingletons.instrumenter;
import static io.opentelemetry.javaagent.instrumentation.playws.v2_1.PlayWs21Singletons.instrumenter;
import static java.util.Arrays.asList;
import com.google.auto.service.AutoService;

View File

@ -16,31 +16,23 @@ import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributes
import play.shaded.ahc.org.asynchttpclient.Request;
import play.shaded.ahc.org.asynchttpclient.Response;
public class PlayWsClientSingletons {
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.play-ws-common";
public final class PlayWsClientInstrumenterFactory {
private static final Instrumenter<Request, Response> INSTRUMENTER;
static {
public static Instrumenter<Request, Response> createInstrumenter(String instrumentationName) {
PlayWsClientHttpAttributesGetter httpAttributesGetter = new PlayWsClientHttpAttributesGetter();
PlayWsClientNetAttributesGetter netAttributesGetter = new PlayWsClientNetAttributesGetter();
INSTRUMENTER =
Instrumenter.<Request, Response>builder(
GlobalOpenTelemetry.get(),
INSTRUMENTATION_NAME,
HttpSpanNameExtractor.create(httpAttributesGetter))
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
.addAttributesExtractor(HttpClientAttributesExtractor.create(httpAttributesGetter))
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
.addAttributesExtractor(PeerServiceAttributesExtractor.create(netAttributesGetter))
.addRequestMetrics(HttpClientMetrics.get())
.newClientInstrumenter(HttpHeaderSetter.INSTANCE);
return Instrumenter.<Request, Response>builder(
GlobalOpenTelemetry.get(),
instrumentationName,
HttpSpanNameExtractor.create(httpAttributesGetter))
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
.addAttributesExtractor(HttpClientAttributesExtractor.create(httpAttributesGetter))
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
.addAttributesExtractor(PeerServiceAttributesExtractor.create(netAttributesGetter))
.addRequestMetrics(HttpClientMetrics.get())
.newClientInstrumenter(HttpHeaderSetter.INSTANCE);
}
public static Instrumenter<Request, Response> instrumenter() {
return INSTRUMENTER;
}
private PlayWsClientSingletons() {}
private PlayWsClientInstrumenterFactory() {}
}