diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java index 421fed5cb4cf..20a5b410f4bb 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 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. @@ -50,7 +50,6 @@ import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.core.convert.ConversionService; -import org.springframework.core.io.ClassPathResource; import org.springframework.format.Parser; import org.springframework.format.Printer; import org.springframework.format.support.FormattingConversionService; @@ -151,12 +150,13 @@ void shouldRegisterResourceHandlerMapping() { SimpleUrlHandlerMapping hm = context.getBean("resourceHandlerMapping", SimpleUrlHandlerMapping.class); assertThat(hm.getUrlMap().get("/**")).isInstanceOf(ResourceWebHandler.class); ResourceWebHandler staticHandler = (ResourceWebHandler) hm.getUrlMap().get("/**"); - assertThat(staticHandler.getLocations()).hasSize(4); + assertThat(staticHandler).extracting("locationValues").asList().hasSize(4); + assertThat(staticHandler.getLocations()).hasSize(1); + assertThat(staticHandler.getLocations().get(0)).hasToString("class path resource [public/]"); assertThat(hm.getUrlMap().get("/webjars/**")).isInstanceOf(ResourceWebHandler.class); ResourceWebHandler webjarsHandler = (ResourceWebHandler) hm.getUrlMap().get("/webjars/**"); - assertThat(webjarsHandler.getLocations()).hasSize(1); - assertThat(webjarsHandler.getLocations().get(0)) - .isEqualTo(new ClassPathResource("/META-INF/resources/webjars/")); + assertThat(webjarsHandler).extracting("locationValues").asList() + .containsExactly("classpath:/META-INF/resources/webjars/"); }); } @@ -166,7 +166,7 @@ void shouldMapResourcesToCustomPath() { SimpleUrlHandlerMapping hm = context.getBean("resourceHandlerMapping", SimpleUrlHandlerMapping.class); assertThat(hm.getUrlMap().get("/static/**")).isInstanceOf(ResourceWebHandler.class); ResourceWebHandler staticHandler = (ResourceWebHandler) hm.getUrlMap().get("/static/**"); - assertThat(staticHandler.getLocations()).hasSize(4); + assertThat(staticHandler).extracting("locationValues").asList().hasSize(4); }); } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java index 60a08c676158..59f80c5d900a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfigurationTests.java @@ -22,6 +22,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.LinkedHashMap; @@ -177,8 +178,10 @@ void handlerMappingsCreated() { void resourceHandlerMapping() { this.contextRunner.run((context) -> { Map> locations = getResourceMappingLocations(context); - assertThat(locations.get("/**")).hasSize(2); - assertThat(locations.get("/webjars/**")).hasSize(0); + assertThat(locations.get("/**")).hasSize(5); + assertThat(locations.get("/webjars/**")).hasSize(1); + assertThat(locations.get("/webjars/**").get(0)) + .isEqualTo(new ClassPathResource("/META-INF/resources/webjars/")); assertThat(getResourceResolvers(context, "/webjars/**")).hasSize(1); assertThat(getResourceTransformers(context, "/webjars/**")).hasSize(0); assertThat(getResourceResolvers(context, "/**")).hasSize(1); @@ -190,17 +193,17 @@ void resourceHandlerMapping() { void customResourceHandlerMapping() { this.contextRunner.withPropertyValues("spring.mvc.static-path-pattern:/static/**").run((context) -> { Map> locations = getResourceMappingLocations(context); - assertThat(locations.get("/static/**")).hasSize(2); + assertThat(locations.get("/static/**")).hasSize(5); assertThat(getResourceResolvers(context, "/static/**")).hasSize(1); }); } @Test void resourceHandlerMappingOverrideWebjars() { - this.contextRunner.withUserConfiguration(WebJarsResources.class).run((context) -> { + this.contextRunner.withUserConfiguration(WebJars.class).run((context) -> { Map> locations = getResourceMappingLocations(context); assertThat(locations.get("/webjars/**")).hasSize(1); - assertThat(locations.get("/webjars/**").get(0).getFilename()).isEqualTo("test"); + assertThat(locations.get("/webjars/**").get(0)).isEqualTo(new ClassPathResource("/foo/")); }); } @@ -209,7 +212,7 @@ void resourceHandlerMappingOverrideAll() { this.contextRunner.withUserConfiguration(AllResources.class).run((context) -> { Map> locations = getResourceMappingLocations(context); assertThat(locations.get("/**")).hasSize(1); - assertThat(locations.get("/**").get(0).getFilename()).isEqualTo("test"); + assertThat(locations.get("/**").get(0)).isEqualTo(new ClassPathResource("/foo/")); }); } @@ -1040,7 +1043,7 @@ private void assertResourceHttpRequestHandler(AssertableWebApplicationContext co protected Map> getResourceMappingLocations(ApplicationContext context) { Object bean = context.getBean("resourceHandlerMapping"); if (bean instanceof HandlerMapping) { - return getMappingLocations((HandlerMapping) bean); + return getMappingLocations(context, (HandlerMapping) bean); } assertThat(bean.toString()).isEqualTo("null"); return Collections.emptyMap(); @@ -1059,11 +1062,18 @@ protected List getResourceTransformers(ApplicationContext c } @SuppressWarnings("unchecked") - protected Map> getMappingLocations(HandlerMapping mapping) { + private Map> getMappingLocations(ApplicationContext context, HandlerMapping mapping) { Map> mappingLocations = new LinkedHashMap<>(); getHandlerMap(mapping).forEach((key, value) -> { - Object locations = ReflectionTestUtils.getField(value, "locationsToUse"); - mappingLocations.put(key, (List) locations); + List locationValues = (List) ReflectionTestUtils.getField(value, "locationValues"); + List locationResources = (List) ReflectionTestUtils.getField(value, + "locationResources"); + List resources = new ArrayList<>(); + for (String locationValue : locationValues) { + resources.add(context.getResource(locationValue)); + } + resources.addAll(locationResources); + mappingLocations.put(key, resources); }); return mappingLocations; } @@ -1094,11 +1104,11 @@ protected void renderMergedOutputModel(Map model, HttpServletReq } @Configuration(proxyBeanMethods = false) - static class WebJarsResources implements WebMvcConfigurer { + static class WebJars implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/webjars/**").addResourceLocations(new ClassPathResource("/test", getClass())); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/foo/"); } } @@ -1108,7 +1118,7 @@ static class AllResources implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/**").addResourceLocations(new ClassPathResource("/test", getClass())); + registry.addResourceHandler("/**").addResourceLocations("classpath:/foo/"); } }