Skip to content

Commit 8536218

Browse files
committed
fix failed testss
1 parent 7972e68 commit 8536218

File tree

2 files changed

+54
-52
lines changed

2 files changed

+54
-52
lines changed

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

+1-52
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,15 @@
66
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

88
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
9-
import static io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3.JsonRpcSingletons.CLIENT_INSTRUMENTER;
9+
import static io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3.JsonRpcSingletons.instrumentCreateClientProxy;
1010
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
1111
import static net.bytebuddy.matcher.ElementMatchers.isPrivate;
1212
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
1313
import static net.bytebuddy.matcher.ElementMatchers.named;
1414

1515
import com.googlecode.jsonrpc4j.IJsonRpcClient;
16-
import io.opentelemetry.context.Context;
17-
import io.opentelemetry.context.Scope;
1816
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1917
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
20-
import java.lang.reflect.InvocationHandler;
21-
import java.lang.reflect.InvocationTargetException;
22-
import java.lang.reflect.Method;
23-
import java.lang.reflect.Proxy;
2418
import java.util.Map;
2519
import net.bytebuddy.asm.Advice;
2620
import net.bytebuddy.description.type.TypeDescription;
@@ -58,50 +52,5 @@ public static <T> void onExit(
5852

5953
proxy = instrumentCreateClientProxy(classLoader, proxyInterface, client, extraHeaders, proxy);
6054
}
61-
62-
@SuppressWarnings({"unchecked"})
63-
public static <T> T instrumentCreateClientProxy(
64-
ClassLoader classLoader,
65-
Class<T> proxyInterface,
66-
IJsonRpcClient client,
67-
Map<String, String> extraHeaders,
68-
Object proxy) {
69-
70-
return (T)
71-
Proxy.newProxyInstance(
72-
classLoader,
73-
new Class<?>[] {proxyInterface},
74-
new InvocationHandler() {
75-
@Override
76-
public Object invoke(Object proxy1, Method method, Object[] args) throws Throwable {
77-
// before invoke
78-
Context parentContext = Context.current();
79-
JsonRpcClientRequest request = new JsonRpcClientRequest(method, args);
80-
if (!CLIENT_INSTRUMENTER.shouldStart(parentContext, request)) {
81-
try {
82-
return method.invoke(proxy, args);
83-
} catch (InvocationTargetException exception) {
84-
throw exception.getCause();
85-
}
86-
}
87-
88-
Context context = CLIENT_INSTRUMENTER.start(parentContext, request);
89-
Object result;
90-
try (Scope scope = context.makeCurrent()) {
91-
result = method.invoke(proxy, args);
92-
} catch (Throwable t) {
93-
// after invoke
94-
CLIENT_INSTRUMENTER.end(context, request, null, t);
95-
throw t;
96-
}
97-
CLIENT_INSTRUMENTER.end(
98-
context,
99-
new JsonRpcClientRequest(method, args),
100-
new JsonRpcClientResponse(result),
101-
null);
102-
return result;
103-
}
104-
});
105-
}
10655
}
10756
}

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

+53
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,18 @@
55

66
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_3;
77

8+
import com.googlecode.jsonrpc4j.IJsonRpcClient;
89
import com.googlecode.jsonrpc4j.InvocationListener;
910
import io.opentelemetry.api.GlobalOpenTelemetry;
11+
import io.opentelemetry.context.Context;
12+
import io.opentelemetry.context.Scope;
1013
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1114
import io.opentelemetry.instrumentation.jsonrpc4j.v1_3.JsonRpcServerTelemetry;
15+
import java.lang.reflect.InvocationHandler;
16+
import java.lang.reflect.InvocationTargetException;
17+
import java.lang.reflect.Method;
18+
import java.lang.reflect.Proxy;
19+
import java.util.Map;
1220

1321
public final class JsonRpcSingletons {
1422

@@ -26,5 +34,50 @@ public final class JsonRpcSingletons {
2634
CLIENT_INSTRUMENTER = clientTelemetry.getClientInstrumenter();
2735
}
2836

37+
@SuppressWarnings({"unchecked"})
38+
public static <T> T instrumentCreateClientProxy(
39+
ClassLoader classLoader,
40+
Class<T> proxyInterface,
41+
IJsonRpcClient client,
42+
Map<String, String> extraHeaders,
43+
Object proxy) {
44+
45+
return (T)
46+
Proxy.newProxyInstance(
47+
classLoader,
48+
new Class<?>[] {proxyInterface},
49+
new InvocationHandler() {
50+
@Override
51+
public Object invoke(Object proxy1, Method method, Object[] args) throws Throwable {
52+
// before invoke
53+
Context parentContext = Context.current();
54+
JsonRpcClientRequest request = new JsonRpcClientRequest(method, args);
55+
if (!CLIENT_INSTRUMENTER.shouldStart(parentContext, request)) {
56+
try {
57+
return method.invoke(proxy, args);
58+
} catch (InvocationTargetException exception) {
59+
throw exception.getCause();
60+
}
61+
}
62+
63+
Context context = CLIENT_INSTRUMENTER.start(parentContext, request);
64+
Object result;
65+
try (Scope scope = context.makeCurrent()) {
66+
result = method.invoke(proxy, args);
67+
} catch (Throwable t) {
68+
// after invoke
69+
CLIENT_INSTRUMENTER.end(context, request, null, t);
70+
throw t;
71+
}
72+
CLIENT_INSTRUMENTER.end(
73+
context,
74+
new JsonRpcClientRequest(method, args),
75+
new JsonRpcClientResponse(result),
76+
null);
77+
return result;
78+
}
79+
});
80+
}
81+
2982
private JsonRpcSingletons() {}
3083
}

0 commit comments

Comments
 (0)