Skip to content

Commit b40f27d

Browse files
committed
move client instrumentation from library to javaagent
1 parent c5f1862 commit b40f27d

File tree

13 files changed

+125
-69
lines changed

13 files changed

+125
-69
lines changed

instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java renamed to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.jsonrpc4j.v1_3;
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

88
import io.opentelemetry.api.common.AttributeKey;
99
import io.opentelemetry.api.common.AttributesBuilder;

instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java renamed to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientAttributesGetter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.jsonrpc4j.v1_3;
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

88
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter;
99

@@ -23,7 +23,7 @@ public String getService(JsonRpcClientRequest request) {
2323
if (request.getMethod() != null) {
2424
return request.getMethod().getDeclaringClass().getName();
2525
}
26-
return "NOT_AVAILABLE";
26+
return null;
2727
}
2828

2929
@Override

instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientInstrumentation.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
import io.opentelemetry.context.Context;
1818
import io.opentelemetry.context.Scope;
19-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientRequest;
20-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientResponse;
2119
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2220
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
2321
import java.lang.reflect.Type;

instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java renamed to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.jsonrpc4j.v1_3;
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

88
import java.lang.reflect.Method;
99

instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java renamed to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.jsonrpc4j.v1_3;
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

88
public final class JsonRpcClientResponse {
99

instrumentation/jsonrpc4j-1.3/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java renamed to instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcClientSpanNameExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.jsonrpc4j.v1_3;
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

88
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
99
import java.lang.reflect.Method;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
7+
8+
import io.opentelemetry.api.OpenTelemetry;
9+
import io.opentelemetry.context.propagation.ContextPropagators;
10+
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
11+
12+
public final class JsonRpcClientTelemetry {
13+
public static JsonRpcClientTelemetry create(OpenTelemetry openTelemetry) {
14+
return builder(openTelemetry).build();
15+
}
16+
17+
public static JsonRpcClientTelemetryBuilder builder(OpenTelemetry openTelemetry) {
18+
return new JsonRpcClientTelemetryBuilder(openTelemetry);
19+
}
20+
21+
private final Instrumenter<JsonRpcClientRequest, JsonRpcClientResponse> clientInstrumenter;
22+
23+
JsonRpcClientTelemetry(
24+
Instrumenter<JsonRpcClientRequest, JsonRpcClientResponse> clientInstrumenter,
25+
ContextPropagators propagators) {
26+
this.clientInstrumenter = clientInstrumenter;
27+
}
28+
29+
public Instrumenter<JsonRpcClientRequest, JsonRpcClientResponse> getClientInstrumenter() {
30+
return clientInstrumenter;
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
7+
8+
import com.google.errorprone.annotations.CanIgnoreReturnValue;
9+
import io.opentelemetry.api.OpenTelemetry;
10+
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientAttributesExtractor;
11+
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientMetrics;
12+
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
13+
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
14+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
15+
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
16+
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
20+
public class JsonRpcClientTelemetryBuilder {
21+
22+
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.jsonrpc4j-1.3";
23+
24+
private final OpenTelemetry openTelemetry;
25+
26+
private final List<
27+
AttributesExtractor<? super JsonRpcClientRequest, ? super JsonRpcClientResponse>>
28+
additionalClientExtractors = new ArrayList<>();
29+
30+
JsonRpcClientTelemetryBuilder(OpenTelemetry openTelemetry) {
31+
this.openTelemetry = openTelemetry;
32+
}
33+
34+
/**
35+
* Adds an extra client-only {@link AttributesExtractor} to invoke to set attributes to
36+
* instrumented items. The {@link AttributesExtractor} will be executed after all default
37+
* extractors.
38+
*/
39+
@CanIgnoreReturnValue
40+
public JsonRpcClientTelemetryBuilder addClientAttributeExtractor(
41+
AttributesExtractor<? super JsonRpcClientRequest, ? super JsonRpcClientResponse>
42+
attributesExtractor) {
43+
additionalClientExtractors.add(attributesExtractor);
44+
return this;
45+
}
46+
47+
public JsonRpcClientTelemetry build() {
48+
SpanNameExtractor<JsonRpcClientRequest> clientSpanNameExtractor =
49+
new JsonRpcClientSpanNameExtractor();
50+
51+
InstrumenterBuilder<JsonRpcClientRequest, JsonRpcClientResponse> clientInstrumenterBuilder =
52+
Instrumenter.builder(openTelemetry, INSTRUMENTATION_NAME, clientSpanNameExtractor);
53+
54+
JsonRpcClientAttributesGetter clientRpcAttributesGetter =
55+
JsonRpcClientAttributesGetter.INSTANCE;
56+
57+
clientInstrumenterBuilder
58+
.addAttributesExtractor(RpcClientAttributesExtractor.create(clientRpcAttributesGetter))
59+
.addAttributesExtractors(additionalClientExtractors)
60+
.addAttributesExtractor(new JsonRpcClientAttributesExtractor())
61+
.addOperationMetrics(RpcClientMetrics.get());
62+
63+
return new JsonRpcClientTelemetry(
64+
clientInstrumenterBuilder.buildInstrumenter(SpanKindExtractor.alwaysClient()),
65+
openTelemetry.getPropagators());
66+
}
67+
}

instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcProxyInstrumentation.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
import com.googlecode.jsonrpc4j.IJsonRpcClient;
1616
import io.opentelemetry.context.Context;
1717
import io.opentelemetry.context.Scope;
18-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientRequest;
19-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientResponse;
2018
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2119
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
2220
import java.lang.reflect.InvocationHandler;

instrumentation/jsonrpc4j-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_3/JsonRpcSingletons.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
import com.googlecode.jsonrpc4j.InvocationListener;
99
import io.opentelemetry.api.GlobalOpenTelemetry;
1010
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
11-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientRequest;
12-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcClientResponse;
13-
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcTelemetry;
11+
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcServerTelemetry;
1412

1513
public final class JsonRpcSingletons {
1614

@@ -19,10 +17,13 @@ public final class JsonRpcSingletons {
1917
public static final Instrumenter<JsonRpcClientRequest, JsonRpcClientResponse> CLIENT_INSTRUMENTER;
2018

2119
static {
22-
JsonRpcTelemetry telemetry = JsonRpcTelemetry.builder(GlobalOpenTelemetry.get()).build();
20+
JsonRpcServerTelemetry serverTelemetry =
21+
JsonRpcServerTelemetry.builder(GlobalOpenTelemetry.get()).build();
22+
JsonRpcClientTelemetry clientTelemetry =
23+
JsonRpcClientTelemetry.builder(GlobalOpenTelemetry.get()).build();
2324

24-
SERVER_INVOCATION_LISTENER = telemetry.newServerInvocationListener();
25-
CLIENT_INSTRUMENTER = telemetry.getClientInstrumenter();
25+
SERVER_INVOCATION_LISTENER = serverTelemetry.newServerInvocationListener();
26+
CLIENT_INSTRUMENTER = clientTelemetry.getClientInstrumenter();
2627
}
2728

2829
private JsonRpcSingletons() {}

0 commit comments

Comments
 (0)