Skip to content

Commit 925e44c

Browse files
committed
fix
1 parent ccf3bcf commit 925e44c

File tree

3 files changed

+61
-57
lines changed

3 files changed

+61
-57
lines changed

instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebHttpAttributesGetter.java

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ enum SpringWebHttpAttributesGetter
2323

2424
@Nullable private static final MethodHandle GET_STATUS_CODE;
2525
@Nullable private static final MethodHandle STATUS_CODE_VALUE;
26-
@Nullable private static final MethodHandle GET_HEADERS;
26+
private static final MethodHandle GET_HEADERS;
2727

2828
static {
2929
MethodHandles.Lookup lookup = MethodHandles.publicLookup();
@@ -58,15 +58,19 @@ enum SpringWebHttpAttributesGetter
5858

5959
GET_STATUS_CODE = getStatusCode;
6060
STATUS_CODE_VALUE = statusCodeValue;
61+
GET_HEADERS =
62+
isSpring7OrNewer()
63+
? findGetHeadersMethod(MethodType.methodType(List.class, String.class))
64+
: findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
65+
}
6166

62-
// since spring web 7.0
63-
MethodHandle methodHandle =
64-
findGetHeadersMethod(MethodType.methodType(List.class, String.class));
65-
if (methodHandle == null) {
66-
// up to spring web 7.0
67-
methodHandle = findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
67+
private static boolean isSpring7OrNewer() {
68+
try {
69+
Class.forName("org.springframework.core.Nullness");
70+
return true;
71+
} catch (ClassNotFoundException e) {
72+
return false;
6873
}
69-
GET_HEADERS = methodHandle;
7074
}
7175

7276
private static MethodHandle findGetHeadersMethod(MethodType methodType) {
@@ -94,19 +98,16 @@ public List<String> getHttpRequestHeader(HttpRequest httpRequest, String name) {
9498
}
9599

96100
@SuppressWarnings("unchecked") // casting MethodHandle.invoke result
97-
private static List<String> getHeader(HttpHeaders headers, String name) {
98-
if (GET_HEADERS != null) {
99-
try {
100-
List<String> result = (List<String>) GET_HEADERS.invoke(headers, name);
101-
if (result == null) {
102-
return emptyList();
103-
}
104-
return result;
105-
} catch (Throwable t) {
106-
// ignore
101+
static List<String> getHeader(HttpHeaders headers, String name) {
102+
try {
103+
List<String> result = (List<String>) GET_HEADERS.invoke(headers, name);
104+
if (result == null) {
105+
return emptyList();
107106
}
107+
return result;
108+
} catch (Throwable t) {
109+
throw new IllegalStateException(t);
108110
}
109-
return emptyList();
110111
}
111112

112113
@Override

instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/HeaderUtil.java

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,45 +11,46 @@
1111
import java.lang.invoke.MethodHandles;
1212
import java.lang.invoke.MethodType;
1313
import java.util.List;
14-
import javax.annotation.Nullable;
1514
import org.springframework.http.HttpHeaders;
1615

1716
class HeaderUtil {
18-
@Nullable private static final MethodHandle GET_HEADERS;
17+
private static final MethodHandle GET_HEADERS;
1918

2019
static {
21-
// since spring web 7.0
22-
MethodHandle methodHandle =
23-
findGetHeadersMethod(MethodType.methodType(List.class, String.class));
24-
if (methodHandle == null) {
25-
// up to spring web 7.0
26-
methodHandle = findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
20+
GET_HEADERS =
21+
isSpring7OrNewer()
22+
? findGetHeadersMethod(MethodType.methodType(List.class, String.class))
23+
: findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
24+
}
25+
26+
private static boolean isSpring7OrNewer() {
27+
try {
28+
Class.forName("org.springframework.core.Nullness");
29+
return true;
30+
} catch (ClassNotFoundException e) {
31+
return false;
2732
}
28-
GET_HEADERS = methodHandle;
2933
}
3034

3135
private static MethodHandle findGetHeadersMethod(MethodType methodType) {
3236
try {
3337
return MethodHandles.lookup().findVirtual(HttpHeaders.class, "get", methodType);
3438
} catch (Throwable t) {
35-
return null;
39+
throw new IllegalStateException(t);
3640
}
3741
}
3842

3943
@SuppressWarnings("unchecked") // casting MethodHandle.invoke result
4044
static List<String> getHeader(HttpHeaders headers, String name) {
41-
if (GET_HEADERS != null) {
42-
try {
43-
List<String> result = (List<String>) GET_HEADERS.invoke(headers, name);
44-
if (result == null) {
45-
return emptyList();
46-
}
47-
return result;
48-
} catch (Throwable t) {
49-
// ignore
45+
try {
46+
List<String> result = (List<String>) GET_HEADERS.invoke(headers, name);
47+
if (result == null) {
48+
return emptyList();
5049
}
50+
return result;
51+
} catch (Throwable t) {
52+
throw new IllegalStateException(t);
5153
}
52-
return emptyList();
5354
}
5455

5556
private HeaderUtil() {}

instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,26 @@ public enum WebClientHttpAttributesGetter
2828
private static final MethodHandle GET_HEADERS;
2929

3030
static {
31-
// since webflux 7.0
32-
MethodHandle methodHandle =
33-
findGetHeadersMethod(MethodType.methodType(List.class, String.class));
34-
if (methodHandle == null) {
35-
// up to webflux 7.0
36-
methodHandle = findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
31+
GET_HEADERS =
32+
isSpring7OrNewer()
33+
? findGetHeadersMethod(MethodType.methodType(List.class, String.class))
34+
: findGetHeadersMethod(MethodType.methodType(List.class, Object.class));
35+
}
36+
37+
private static boolean isSpring7OrNewer() {
38+
try {
39+
Class.forName("org.springframework.core.Nullness");
40+
return true;
41+
} catch (ClassNotFoundException e) {
42+
return false;
3743
}
38-
GET_HEADERS = methodHandle;
3944
}
4045

4146
private static MethodHandle findGetHeadersMethod(MethodType methodType) {
4247
try {
4348
return MethodHandles.lookup().findVirtual(HttpHeaders.class, "get", methodType);
4449
} catch (Throwable t) {
45-
return null;
50+
throw new IllegalStateException(t);
4651
}
4752
}
4853

@@ -59,18 +64,15 @@ public String getHttpRequestMethod(ClientRequest request) {
5964
@Override
6065
@SuppressWarnings("unchecked") // casting MethodHandle.invoke result
6166
public List<String> getHttpRequestHeader(ClientRequest request, String name) {
62-
if (GET_HEADERS != null) {
63-
try {
64-
List<String> result = (List<String>) GET_HEADERS.invoke(request, name);
65-
if (result == null) {
66-
return emptyList();
67-
}
68-
return result;
69-
} catch (Throwable t) {
70-
// ignore
67+
try {
68+
List<String> result = (List<String>) GET_HEADERS.invoke(request.headers(), name);
69+
if (result == null) {
70+
return emptyList();
7171
}
72+
return result;
73+
} catch (Throwable t) {
74+
throw new IllegalStateException(t);
7275
}
73-
return emptyList();
7476
}
7577

7678
@Override

0 commit comments

Comments
 (0)