Skip to content

Commit c0a8409

Browse files
Fix for issue #45001 - ServletRegistrationBean has those properties, but @ServletRegistration hasn't: initParameters, servletRegistrationBeans, multipartConfig Signed-off-by: Dmytro Danilenkov <[email protected]>
Signed-off-by: Dmytro Danilenkov <[email protected]>
1 parent 9bb90c9 commit c0a8409

File tree

3 files changed

+19
-29
lines changed

3 files changed

+19
-29
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletContextInitializerBeans.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@
3535
import jakarta.servlet.Filter;
3636
import jakarta.servlet.MultipartConfigElement;
3737
import jakarta.servlet.Servlet;
38-
import jakarta.servlet.annotation.MultipartConfig;
3938
import jakarta.servlet.annotation.WebInitParam;
40-
4139
import org.apache.commons.logging.Log;
4240
import org.apache.commons.logging.LogFactory;
4341

@@ -96,9 +94,9 @@ public ServletContextInitializerBeans(ListableBeanFactory beanFactory,
9694
addServletContextInitializerBeans(beanFactory);
9795
addAdaptableBeans(beanFactory);
9896
this.sortedList = this.initializers.values()
99-
.stream()
100-
.flatMap((value) -> value.stream().sorted(AnnotationAwareOrderComparator.INSTANCE))
101-
.toList();
97+
.stream()
98+
.flatMap((value) -> value.stream().sorted(AnnotationAwareOrderComparator.INSTANCE))
99+
.toList();
102100
logMappings(this.initializers);
103101
}
104102

@@ -327,9 +325,7 @@ private void configureFromAnnotation(ServletRegistrationBean<Servlet> bean, Serv
327325
bean.addInitParameter(param.name(), param.value());
328326
}
329327

330-
MultipartConfig multipart = registration.multipartConfig();
331-
bean.setMultipartConfig(new MultipartConfigElement(multipart.location(), multipart.maxFileSize(),
332-
multipart.maxRequestSize(), multipart.fileSizeThreshold()));
328+
bean.setMultipartConfig(new MultipartConfigElement(registration.multipartConfig()));
333329

334330
}
335331

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletRegistration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898

9999
/**
100100
* Multipart configuration.
101+
* @return multipart config {@link MultipartConfig}
101102
*/
102103
MultipartConfig multipartConfig() default @MultipartConfig;
103104

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/ServletContextInitializerBeansTests.java

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -203,19 +203,22 @@ void shouldApplyExtendedServletRegistrationAnnotation() {
203203
load(ServletConfigurationWithExtendedAttributes.class);
204204
ServletContextInitializerBeans initializerBeans = new ServletContextInitializerBeans(
205205
this.context.getBeanFactory(), TestServletContextInitializer.class);
206+
assertThatSingleServletRegistration(initializerBeans, (bean) -> {
207+
assertThat(bean.getServletName()).isEqualTo("extended");
208+
assertThat(bean.getUrlMappings()).containsExactly("/extended/*");
209+
assertThat(bean.getInitParameters()).containsEntry("hello", "world").containsEntry("flag", "true");
210+
assertThat(bean.getMultipartConfig()).isNotNull();
211+
assertThat(bean.getMultipartConfig().getLocation()).isEqualTo("/tmp");
212+
assertThat(bean.getMultipartConfig().getMaxFileSize()).isEqualTo(1024);
213+
assertThat(bean.getMultipartConfig().getMaxRequestSize()).isEqualTo(4096);
214+
assertThat(bean.getMultipartConfig().getFileSizeThreshold()).isEqualTo(128);
215+
});
206216

207-
ServletRegistrationBean<?> bean = findServletRegistrationBeanByName(initializerBeans, "extended");
208-
209-
assertThat(bean.getServletName()).isEqualTo("extended");
210-
assertThat(bean.getUrlMappings()).containsExactly("/extended/*");
211-
212-
assertThat(bean.getInitParameters()).containsEntry("hello", "world").containsEntry("flag", "true");
217+
}
213218

214-
assertThat(bean.getMultipartConfig()).isNotNull();
215-
assertThat(bean.getMultipartConfig().getLocation()).isEqualTo("/tmp");
216-
assertThat(bean.getMultipartConfig().getMaxFileSize()).isEqualTo(1024);
217-
assertThat(bean.getMultipartConfig().getMaxRequestSize()).isEqualTo(4096);
218-
assertThat(bean.getMultipartConfig().getFileSizeThreshold()).isEqualTo(128);
219+
private void assertThatSingleServletRegistration(ServletContextInitializerBeans initializerBeans,
220+
ThrowingConsumer<ServletRegistrationBean<?>> code) {
221+
assertThatSingleRegistration(initializerBeans, ServletRegistrationBean.class, code::acceptThrows);
219222
}
220223

221224
private void load(Class<?>... configuration) {
@@ -452,14 +455,4 @@ TestServlet testServletWithInitParametersAndMultipart() {
452455

453456
}
454457

455-
private ServletRegistrationBean<?> findServletRegistrationBeanByName(
456-
ServletContextInitializerBeans initializerBeans, String name) {
457-
return initializerBeans.stream()
458-
.filter(ServletRegistrationBean.class::isInstance)
459-
.map(ServletRegistrationBean.class::cast)
460-
.filter((r) -> name.equals(r.getServletName()))
461-
.findFirst()
462-
.orElse(null);
463-
}
464-
465458
}

0 commit comments

Comments
 (0)