Revert "Consider only current context in WebFlux setup"
This reverts commit da4624a882.
			
			
This commit is contained in:
		
							parent
							
								
									03d6cd9f0b
								
							
						
					
					
						commit
						0881b7c390
					
				|  | @ -1,56 +0,0 @@ | |||
| /* | ||||
|  * Copyright 2012-2018 the original author or authors. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package org.springframework.boot.autoconfigure.web.reactive; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import org.springframework.context.ApplicationContext; | ||||
| import org.springframework.core.annotation.AnnotationAwareOrderComparator; | ||||
| import org.springframework.web.reactive.DispatcherHandler; | ||||
| import org.springframework.web.reactive.HandlerAdapter; | ||||
| import org.springframework.web.reactive.HandlerMapping; | ||||
| import org.springframework.web.reactive.HandlerResultHandler; | ||||
| 
 | ||||
| /** | ||||
|  * {@link DispatcherHandler} implementation that only checks for infrastructure beans in | ||||
|  * the current application context (i.e. does not consider the parent context). | ||||
|  * | ||||
|  * @author Brian Clozel | ||||
|  * @since 2.1.0 | ||||
|  */ | ||||
| public class SingleContextDispatcherHandler extends DispatcherHandler { | ||||
| 
 | ||||
| 	@Override | ||||
| 	protected void initStrategies(ApplicationContext context) { | ||||
| 		Map<String, HandlerMapping> mappingBeans = context | ||||
| 				.getBeansOfType(HandlerMapping.class, true, false); | ||||
| 		ArrayList<HandlerMapping> mappings = new ArrayList<>(mappingBeans.values()); | ||||
| 		AnnotationAwareOrderComparator.sort(mappings); | ||||
| 		this.handlerMappings = Collections.unmodifiableList(mappings); | ||||
| 		Map<String, HandlerAdapter> adapterBeans = context | ||||
| 				.getBeansOfType(HandlerAdapter.class, true, false); | ||||
| 		this.handlerAdapters = new ArrayList(adapterBeans.values()); | ||||
| 		AnnotationAwareOrderComparator.sort(this.handlerAdapters); | ||||
| 		Map<String, HandlerResultHandler> beans = context | ||||
| 				.getBeansOfType(HandlerResultHandler.class, true, false); | ||||
| 		this.resultHandlers = new ArrayList<>(beans.values()); | ||||
| 		AnnotationAwareOrderComparator.sort(this.resultHandlers); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -57,7 +57,6 @@ import org.springframework.http.codec.ServerCodecConfigurer; | |||
| import org.springframework.util.ClassUtils; | ||||
| import org.springframework.validation.Validator; | ||||
| import org.springframework.web.filter.reactive.HiddenHttpMethodFilter; | ||||
| import org.springframework.web.reactive.DispatcherHandler; | ||||
| import org.springframework.web.reactive.config.DelegatingWebFluxConfiguration; | ||||
| import org.springframework.web.reactive.config.EnableWebFlux; | ||||
| import org.springframework.web.reactive.config.ResourceChainRegistration; | ||||
|  | @ -246,11 +245,6 @@ public class WebFluxAutoConfiguration { | |||
| 			return conversionService; | ||||
| 		} | ||||
| 
 | ||||
| 		@Override | ||||
| 		public DispatcherHandler webHandler() { | ||||
| 			return new SingleContextDispatcherHandler(); | ||||
| 		} | ||||
| 
 | ||||
| 		@Bean | ||||
| 		@Override | ||||
| 		public Validator webFluxValidator() { | ||||
|  |  | |||
|  | @ -28,8 +28,6 @@ import org.springframework.beans.DirectFieldAccessor; | |||
| import org.springframework.boot.autoconfigure.AutoConfigurations; | ||||
| import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; | ||||
| import org.springframework.boot.autoconfigure.validation.ValidatorAdapter; | ||||
| import org.springframework.boot.test.context.assertj.ApplicationContextAssert; | ||||
| import org.springframework.boot.test.context.runner.ApplicationContextRunner; | ||||
| import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; | ||||
| import org.springframework.boot.web.codec.CodecCustomizer; | ||||
| import org.springframework.boot.web.reactive.filter.OrderedHiddenHttpMethodFilter; | ||||
|  | @ -46,7 +44,6 @@ import org.springframework.test.util.ReflectionTestUtils; | |||
| import org.springframework.validation.Validator; | ||||
| import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; | ||||
| import org.springframework.web.filter.reactive.HiddenHttpMethodFilter; | ||||
| import org.springframework.web.reactive.DispatcherHandler; | ||||
| import org.springframework.web.reactive.HandlerMapping; | ||||
| import org.springframework.web.reactive.accept.RequestedContentTypeResolver; | ||||
| import org.springframework.web.reactive.config.WebFluxConfigurationSupport; | ||||
|  | @ -401,26 +398,6 @@ public class WebFluxAutoConfigurationTests { | |||
| 				}); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void shouldNotGetHandlerMappingsFromParentContext() { | ||||
| 		ApplicationContextRunner parentRunner = new ApplicationContextRunner() | ||||
| 				.withUserConfiguration(CustomHandlerMapping.class); | ||||
| 		parentRunner.run((parent) -> { | ||||
| 			this.contextRunner.withParent(parent).run((context) -> { | ||||
| 				assertThat(parent).hasSingleBean(HandlerMapping.class); | ||||
| 				assertThat(context).getBeans(HandlerMapping.class).hasSize(4); | ||||
| 				assertThat(context) | ||||
| 						.getBeans(HandlerMapping.class, | ||||
| 								ApplicationContextAssert.Scope.NO_ANCESTORS) | ||||
| 						.doesNotContainKey("customHandlerMapping"); | ||||
| 				assertThat(context).hasSingleBean(DispatcherHandler.class); | ||||
| 				DispatcherHandler dispatcherHandler = context | ||||
| 						.getBean(DispatcherHandler.class); | ||||
| 				assertThat(dispatcherHandler.getHandlerMappings()).hasSize(3); | ||||
| 			}); | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	@Configuration | ||||
| 	protected static class CustomArgumentResolvers { | ||||
| 
 | ||||
|  | @ -587,14 +564,4 @@ public class WebFluxAutoConfigurationTests { | |||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	@Configuration | ||||
| 	static class CustomHandlerMapping { | ||||
| 
 | ||||
| 		@Bean | ||||
| 		public HandlerMapping customHandlerMapping() { | ||||
| 			return mock(HandlerMapping.class); | ||||
| 		} | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue