Skip to content

Commit

Permalink
UNDERTOW-369 Allow a default multipart config to be set that applies …
Browse files Browse the repository at this point in the history
…to all servlets that have not explicitly set one
  • Loading branch information
stuartwdouglas committed Jan 23, 2015
1 parent 2fc2699 commit 650b060
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
14 changes: 14 additions & 0 deletions servlet/src/main/java/io/undertow/servlet/api/DeploymentInfo.java
Expand Up @@ -33,6 +33,7 @@
import java.util.concurrent.Executor;

import javax.servlet.DispatcherType;
import javax.servlet.MultipartConfigElement;
import javax.servlet.descriptor.JspConfigDescriptor;

import io.undertow.security.api.AuthenticationMechanism;
Expand Down Expand Up @@ -147,6 +148,10 @@ public class DeploymentInfo implements Cloneable {
*/
private final List<HandlerWrapper> innerHandlerChainWrappers = new ArrayList<>();

/**
* Multipart config that will be applied to all servlets that do not have an explicit config
*/
private MultipartConfigElement defaultMultipartConfig;

public void validate() {
if (deploymentName == null) {
Expand Down Expand Up @@ -1087,6 +1092,14 @@ public DeploymentInfo setAuthenticationMode(AuthenticationMode authenticationMod
return this;
}

public MultipartConfigElement getDefaultMultipartConfig() {
return defaultMultipartConfig;
}

public void setDefaultMultipartConfig(MultipartConfigElement defaultMultipartConfig) {
this.defaultMultipartConfig = defaultMultipartConfig;
}

@Override
public DeploymentInfo clone() {
final DeploymentInfo info = new DeploymentInfo()
Expand Down Expand Up @@ -1163,6 +1176,7 @@ public DeploymentInfo clone() {
info.sessionListeners.addAll(sessionListeners);
info.lifecycleInterceptors.addAll(lifecycleInterceptors);
info.authenticationMode = authenticationMode;
info.defaultMultipartConfig = defaultMultipartConfig;
return info;
}

Expand Down
14 changes: 12 additions & 2 deletions servlet/src/main/java/io/undertow/servlet/core/ManagedServlet.java
Expand Up @@ -57,6 +57,7 @@ public class ManagedServlet implements Lifecycle {

private long maxRequestSize;
private FormParserFactory formParserFactory;
private MultipartConfigElement multipartConfig;

public ManagedServlet(final ServletInfo servletInfo, final ServletContextImpl servletContext) {
this.servletInfo = servletInfo;
Expand All @@ -72,9 +73,14 @@ public ManagedServlet(final ServletInfo servletInfo, final ServletContextImpl se
public void setupMultipart(ServletContextImpl servletContext) {
FormEncodedDataDefinition formDataParser = new FormEncodedDataDefinition()
.setDefaultEncoding(servletContext.getDeployment().getDeploymentInfo().getDefaultEncoding());
if (servletInfo.getMultipartConfig() != null) {
MultipartConfigElement multipartConfig = servletInfo.getMultipartConfig();
if(multipartConfig == null) {
multipartConfig = servletContext.getDeployment().getDeploymentInfo().getDefaultMultipartConfig();
}
this.multipartConfig = multipartConfig;
if (multipartConfig != null) {
//todo: fileSizeThreshold
MultipartConfigElement config = servletInfo.getMultipartConfig();
MultipartConfigElement config = multipartConfig;
if (config.getMaxRequestSize() != -1) {
maxRequestSize = config.getMaxRequestSize();
} else {
Expand Down Expand Up @@ -180,6 +186,10 @@ public FormParserFactory getFormParserFactory() {
return formParserFactory;
}

public MultipartConfigElement getMultipartConfig() {
return multipartConfig;
}

/**
* interface used to abstract the difference between single thread model servlets and normal servlets
*/
Expand Down
Expand Up @@ -498,7 +498,7 @@ private void loadParts() throws IOException, ServletException {
if(formData != null) {
for (final String namedPart : formData) {
for (FormData.FormValue part : formData.get(namedPart)) {
parts.add(new PartImpl(namedPart, part, requestContext.getOriginalServletPathMatch().getServletChain().getManagedServlet().getServletInfo().getMultipartConfig(), servletContext));
parts.add(new PartImpl(namedPart, part, requestContext.getOriginalServletPathMatch().getServletChain().getManagedServlet().getMultipartConfig(), servletContext));
}
}
}
Expand Down

0 comments on commit 650b060

Please sign in to comment.