Skip to content

Commit 2a14d7a

Browse files
committed
fix AppSecDispatcherServlet Instrumentations
1 parent ec98881 commit 2a14d7a

2 files changed

Lines changed: 18 additions & 10 deletions

File tree

dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/AppSecDispatcherServletInstrumentation.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import datadog.trace.agent.tooling.InstrumenterModule;
1414
import datadog.trace.api.Config;
1515
import datadog.trace.api.telemetry.EndpointCollector;
16+
import java.util.HashMap;
1617
import java.util.Map;
1718
import net.bytebuddy.asm.Advice;
1819
import net.bytebuddy.matcher.ElementMatcher;
@@ -71,13 +72,16 @@ public static class AppSecHandlerMappingAdvice {
7172

7273
@Advice.OnMethodExit(suppress = Throwable.class)
7374
public static void afterRefresh(@Advice.Argument(0) final ApplicationContext springCtx) {
74-
final RequestMappingHandlerMapping handler =
75-
springCtx.getBean(RequestMappingHandlerMapping.class);
76-
if (handler == null) {
75+
final Map<String, RequestMappingHandlerMapping> handlers =
76+
springCtx.getBeansOfType(RequestMappingHandlerMapping.class);
77+
if (handlers == null || handlers.isEmpty()) {
7778
return;
7879
}
79-
final Map<RequestMappingInfo, HandlerMethod> mappings = handler.getHandlerMethods();
80-
if (mappings == null || mappings.isEmpty()) {
80+
final Map<RequestMappingInfo, HandlerMethod> mappings = new HashMap<>();
81+
for (RequestMappingHandlerMapping mapping : handlers.values()) {
82+
mappings.putAll(mapping.getHandlerMethods());
83+
}
84+
if (mappings.isEmpty()) {
8185
return;
8286
}
8387
EndpointCollector.get().supplier(new RequestMappingInfoIterator(mappings));

dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/main/java/datadog/trace/instrumentation/springweb/AppSecDispatcherServletWithPathPatternsInstrumentation.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import datadog.trace.agent.tooling.InstrumenterModule;
1313
import datadog.trace.api.Config;
1414
import datadog.trace.api.telemetry.EndpointCollector;
15+
import java.util.HashMap;
1516
import java.util.Map;
1617
import net.bytebuddy.asm.Advice;
1718
import net.bytebuddy.matcher.ElementMatcher;
@@ -66,13 +67,16 @@ public static class AppSecHandlerMappingAdvice {
6667

6768
@Advice.OnMethodExit(suppress = Throwable.class)
6869
public static void afterRefresh(@Advice.Argument(0) final ApplicationContext springCtx) {
69-
final RequestMappingHandlerMapping handler =
70-
springCtx.getBean(RequestMappingHandlerMapping.class);
71-
if (handler == null) {
70+
final Map<String, RequestMappingHandlerMapping> handlers =
71+
springCtx.getBeansOfType(RequestMappingHandlerMapping.class);
72+
if (handlers == null || handlers.isEmpty()) {
7273
return;
7374
}
74-
final Map<RequestMappingInfo, HandlerMethod> mappings = handler.getHandlerMethods();
75-
if (mappings == null || mappings.isEmpty()) {
75+
final Map<RequestMappingInfo, HandlerMethod> mappings = new HashMap<>();
76+
for (RequestMappingHandlerMapping mapping : handlers.values()) {
77+
mappings.putAll(mapping.getHandlerMethods());
78+
}
79+
if (mappings.isEmpty()) {
7680
return;
7781
}
7882
EndpointCollector.get().supplier(new RequestMappingInfoWithPathPatternsIterator(mappings));

0 commit comments

Comments
 (0)