From 0388f954af8dbcf41e0192efae9fd7bc70b9fb7f Mon Sep 17 00:00:00 2001 From: Andy Chen Date: Sun, 4 Aug 2019 15:37:24 +0800 Subject: [PATCH 1/2] Configure a temporary directory with Undertow See gh-17778 --- .../web/embedded/undertow/UndertowServletWebServerFactory.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java index 39f043d7443..abfcf415950 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java @@ -259,6 +259,7 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac deployment.setClassLoader(getServletClassLoader()); deployment.setContextPath(getContextPath()); deployment.setDisplayName(getDisplayName()); + deployment.setTempDir(new File(System.getProperty("java.io.tmpdir"))); deployment.setDeploymentName("spring-boot"); if (isRegisterDefaultServlet()) { deployment.addServlet(Servlets.servlet("default", DefaultServlet.class)); From 1b3a6d16164525e99136272ee967d19723d6fb3f Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 8 Aug 2019 16:19:57 +0200 Subject: [PATCH 2/2] Polish "Configure a temporary directory with Undertow" See gh-17778 --- .../MultipartAutoConfigurationTests.java | 31 +++++++++++++++++++ .../UndertowServletWebServerFactory.java | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfigurationTests.java index c0f4cb7cef8..690ac7b9477 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfigurationTests.java @@ -148,6 +148,16 @@ public class MultipartAutoConfigurationTests { .isSameAs(this.context.getBean(DispatcherServlet.class).getMultipartResolver()); } + @Test + public void webServerWithNonAbsoluteMultipartLocationUndertowConfiguration() { + this.context = new AnnotationConfigServletWebServerApplicationContext( + WebServerWithNonAbsolutePathUndertow.class, BaseConfiguration.class); + this.context.getBean(MultipartConfigElement.class); + verifyServletWorks(); + assertThat(this.context.getBean(StandardServletMultipartResolver.class)) + .isSameAs(this.context.getBean(DispatcherServlet.class).getMultipartResolver()); + } + @Test public void webServerWithMultipartConfigDisabled() { testWebServerWithCustomMultipartConfigEnabledSetting("false", 0); @@ -365,6 +375,27 @@ public class MultipartAutoConfigurationTests { } + @Configuration + @EnableWebMvc + public static class WebServerWithNonAbsolutePathUndertow { + + @Bean + MultipartConfigElement multipartConfigElement() { + return new MultipartConfigElement("test/not-absolute"); + } + + @Bean + UndertowServletWebServerFactory webServerFactory() { + return new UndertowServletWebServerFactory(); + } + + @Bean + WebController webController() { + return new WebController(); + } + + } + @Configuration public static class WebServerWithCustomMultipartResolver { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java index abfcf415950..3bf1bbabf11 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/undertow/UndertowServletWebServerFactory.java @@ -259,7 +259,6 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac deployment.setClassLoader(getServletClassLoader()); deployment.setContextPath(getContextPath()); deployment.setDisplayName(getDisplayName()); - deployment.setTempDir(new File(System.getProperty("java.io.tmpdir"))); deployment.setDeploymentName("spring-boot"); if (isRegisterDefaultServlet()) { deployment.addServlet(Servlets.servlet("default", DefaultServlet.class)); @@ -267,6 +266,7 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac configureErrorPages(deployment); deployment.setServletStackTraces(ServletStackTraces.NONE); deployment.setResourceManager(getDocumentRootResourceManager()); + deployment.setTempDir(createTempDir("undertow")); deployment.setEagerFilterInit(this.eagerInitFilters); configureMimeMappings(deployment); for (UndertowDeploymentInfoCustomizer customizer : this.deploymentInfoCustomizers) {