From d28d603081a55a74f1e29500442bdcab521731ed Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Tue, 14 Jun 2022 09:35:17 +0100 Subject: [PATCH] Polishing See gh-28595 --- .../support/RouterFunctionMapping.java | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/support/RouterFunctionMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/support/RouterFunctionMapping.java index c6e2312930..9bce118e9e 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/support/RouterFunctionMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/support/RouterFunctionMapping.java @@ -154,35 +154,20 @@ public class RouterFunctionMapping extends AbstractHandlerMapping implements Ini * current application context. */ private void initRouterFunctions() { - List> routerFunctions = routerFunctions(); + List> routerFunctions = new ArrayList<>(); + detectRouterFunctions(obtainApplicationContext(), routerFunctions); this.routerFunction = routerFunctions.stream().reduce(RouterFunction::andOther).orElse(null); logRouterFunctions(routerFunctions); } - private List> routerFunctions() { - List> routerFunctions = new ArrayList<>(); - if (this.detectHandlerFunctionsInAncestorContexts) { - detectRouterFunctionsInAncestorContexts(obtainApplicationContext(), routerFunctions); + private void detectRouterFunctions(ApplicationContext context, List> routerFunctions) { + if (this.detectHandlerFunctionsInAncestorContexts && context.getParent() != null) { + detectRouterFunctions(context.getParent(), routerFunctions); } - obtainApplicationContext() - .getBeanProvider(RouterFunction.class) + context.getBeanProvider(RouterFunction.class) .orderedStream() .map(router -> (RouterFunction) router) .collect(Collectors.toCollection(() -> routerFunctions)); - return routerFunctions; - } - - private void detectRouterFunctionsInAncestorContexts( - ApplicationContext applicationContext, List> routerFunctions) { - - ApplicationContext parentContext = applicationContext.getParent(); - if (parentContext != null) { - detectRouterFunctionsInAncestorContexts(parentContext, routerFunctions); - parentContext.getBeanProvider(RouterFunction.class) - .orderedStream() - .map(router -> (RouterFunction) router) - .collect(Collectors.toCollection(() -> routerFunctions)); - } } private void logRouterFunctions(List> routerFunctions) {