parent
							
								
									52d0681ca1
								
							
						
					
					
						commit
						d28d603081
					
				| 
						 | 
					@ -154,35 +154,20 @@ public class RouterFunctionMapping extends AbstractHandlerMapping implements Ini
 | 
				
			||||||
	 * current application context.
 | 
						 * current application context.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private void initRouterFunctions() {
 | 
						private void initRouterFunctions() {
 | 
				
			||||||
		List<RouterFunction<?>> routerFunctions = routerFunctions();
 | 
							List<RouterFunction<?>> routerFunctions = new ArrayList<>();
 | 
				
			||||||
 | 
							detectRouterFunctions(obtainApplicationContext(), routerFunctions);
 | 
				
			||||||
		this.routerFunction = routerFunctions.stream().reduce(RouterFunction::andOther).orElse(null);
 | 
							this.routerFunction = routerFunctions.stream().reduce(RouterFunction::andOther).orElse(null);
 | 
				
			||||||
		logRouterFunctions(routerFunctions);
 | 
							logRouterFunctions(routerFunctions);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private List<RouterFunction<?>> routerFunctions() {
 | 
						private void detectRouterFunctions(ApplicationContext context, List<RouterFunction<?>> routerFunctions) {
 | 
				
			||||||
		List<RouterFunction<?>> routerFunctions = new ArrayList<>();
 | 
							if (this.detectHandlerFunctionsInAncestorContexts && context.getParent() != null) {
 | 
				
			||||||
		if (this.detectHandlerFunctionsInAncestorContexts) {
 | 
								detectRouterFunctions(context.getParent(), routerFunctions);
 | 
				
			||||||
			detectRouterFunctionsInAncestorContexts(obtainApplicationContext(), routerFunctions);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		obtainApplicationContext()
 | 
							context.getBeanProvider(RouterFunction.class)
 | 
				
			||||||
				.getBeanProvider(RouterFunction.class)
 | 
					 | 
				
			||||||
				.orderedStream()
 | 
									.orderedStream()
 | 
				
			||||||
				.map(router -> (RouterFunction<?>) router)
 | 
									.map(router -> (RouterFunction<?>) router)
 | 
				
			||||||
				.collect(Collectors.toCollection(() -> routerFunctions));
 | 
									.collect(Collectors.toCollection(() -> routerFunctions));
 | 
				
			||||||
		return routerFunctions;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private void detectRouterFunctionsInAncestorContexts(
 | 
					 | 
				
			||||||
			ApplicationContext applicationContext, List<RouterFunction<?>> 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<RouterFunction<?>> routerFunctions) {
 | 
						private void logRouterFunctions(List<RouterFunction<?>> routerFunctions) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue