diff --git a/org.springframework.web.portlet/src/main/java/org/springframework/web/portlet/context/PortletWebRequest.java b/org.springframework.web.portlet/src/main/java/org/springframework/web/portlet/context/PortletWebRequest.java index fc349bf4703..05dc086616e 100644 --- a/org.springframework.web.portlet/src/main/java/org/springframework/web/portlet/context/PortletWebRequest.java +++ b/org.springframework.web.portlet/src/main/java/org/springframework/web/portlet/context/PortletWebRequest.java @@ -17,9 +17,7 @@ package org.springframework.web.portlet.context; import java.security.Principal; -import java.util.Collections; import java.util.Iterator; -import java.util.List; import java.util.Locale; import java.util.Map; import javax.portlet.PortletRequest; @@ -27,13 +25,9 @@ import javax.portlet.PortletResponse; import javax.portlet.PortletSession; import org.springframework.util.CollectionUtils; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartRequest; /** * {@link org.springframework.web.context.request.WebRequest} adapter @@ -44,8 +38,6 @@ import org.springframework.web.multipart.MultipartRequest; */ public class PortletWebRequest extends PortletRequestAttributes implements NativeWebRequest { - private MultipartRequest multipartRequest; - private PortletResponse response; @@ -55,9 +47,6 @@ public class PortletWebRequest extends PortletRequestAttributes implements Nativ */ public PortletWebRequest(PortletRequest request) { super(request); - if (request instanceof MultipartRequest) { - this.multipartRequest = (MultipartRequest) request; - } } /** @@ -166,43 +155,6 @@ public class PortletWebRequest extends PortletRequestAttributes implements Nativ } - @SuppressWarnings("unchecked") - public Iterator getFileNames() { - if (this.multipartRequest == null) { - return (Iterator) Collections.EMPTY_SET.iterator(); - } - return this.multipartRequest.getFileNames(); - } - - public MultipartFile getFile(String name) { - if (this.multipartRequest == null) { - return null; - } - return this.multipartRequest.getFile(name); - } - - public List getFiles(String name) { - if (this.multipartRequest == null) { - return null; - } - return this.multipartRequest.getFiles(name); - } - - public Map getFileMap() { - if (this.multipartRequest == null) { - return Collections.emptyMap(); - } - return this.multipartRequest.getFileMap(); - } - - public MultiValueMap getMultiFileMap() { - if (this.multipartRequest == null) { - return new LinkedMultiValueMap(); - } - return this.multipartRequest.getMultiFileMap(); - } - - @Override public String toString() { return "PortletWebRequest: " + getDescription(true); diff --git a/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodInvoker.java b/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodInvoker.java index d7d2b247537..f2c97699c98 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodInvoker.java +++ b/org.springframework.web/src/main/java/org/springframework/web/bind/annotation/support/HandlerMethodInvoker.java @@ -72,6 +72,7 @@ import org.springframework.web.bind.support.WebBindingInitializer; import org.springframework.web.bind.support.WebRequestDataBinder; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.WebRequest; +import org.springframework.web.multipart.MultipartRequest; /** * Support class for invoking an annotated handler method. Operates on the introspection results of a {@link @@ -415,7 +416,10 @@ public class HandlerMethodInvoker { if (paramName.length() == 0) { paramName = getRequiredParameterName(methodParam); } - Object paramValue = webRequest.getFile(paramName); + Object paramValue = null; + if (webRequest.getNativeRequest() instanceof MultipartRequest) { + paramValue = ((MultipartRequest) webRequest.getNativeRequest()).getFile(paramName); + } if (paramValue == null) { String[] paramValues = webRequest.getParameterValues(paramName); if (paramValues != null && !paramType.isArray()) { diff --git a/org.springframework.web/src/main/java/org/springframework/web/bind/support/WebRequestDataBinder.java b/org.springframework.web/src/main/java/org/springframework/web/bind/support/WebRequestDataBinder.java index 4c3c0258860..9ccc349db20 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/bind/support/WebRequestDataBinder.java +++ b/org.springframework.web/src/main/java/org/springframework/web/bind/support/WebRequestDataBinder.java @@ -19,6 +19,7 @@ package org.springframework.web.bind.support; import org.springframework.beans.MutablePropertyValues; import org.springframework.validation.BindException; import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.WebRequest; import org.springframework.web.multipart.MultipartRequest; @@ -99,8 +100,11 @@ public class WebRequestDataBinder extends WebDataBinder { */ public void bind(WebRequest request) { MutablePropertyValues mpvs = new MutablePropertyValues(request.getParameterMap()); - if (request instanceof MultipartRequest) { - bindMultipartFiles(((MultipartRequest) request).getFileMap(), mpvs); + if (request instanceof NativeWebRequest) { + Object nativeRequest = ((NativeWebRequest) request).getNativeRequest(); + if (nativeRequest instanceof MultipartRequest) { + bindMultipartFiles(((MultipartRequest) nativeRequest).getFileMap(), mpvs); + } } doBind(mpvs); } diff --git a/org.springframework.web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java b/org.springframework.web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java index 1534ae8f098..49b68695d1d 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java +++ b/org.springframework.web/src/main/java/org/springframework/web/context/request/FacesWebRequest.java @@ -17,19 +17,13 @@ package org.springframework.web.context.request; import java.security.Principal; -import java.util.Collections; import java.util.Iterator; -import java.util.List; import java.util.Locale; import java.util.Map; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartRequest; /** * {@link WebRequest} adapter for a JSF {@link javax.faces.context.FacesContext}. @@ -39,9 +33,6 @@ import org.springframework.web.multipart.MultipartRequest; */ public class FacesWebRequest extends FacesRequestAttributes implements NativeWebRequest { - private MultipartRequest multipartRequest; - - /** * Create a new FacesWebRequest adapter for the given FacesContext. * @param facesContext the current FacesContext @@ -49,9 +40,6 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb */ public FacesWebRequest(FacesContext facesContext) { super(facesContext); - if (facesContext.getExternalContext().getRequest() instanceof MultipartRequest) { - this.multipartRequest = (MultipartRequest) facesContext.getExternalContext().getRequest(); - } } @@ -138,43 +126,6 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb } - @SuppressWarnings("unchecked") - public Iterator getFileNames() { - if (this.multipartRequest == null) { - return (Iterator) Collections.EMPTY_SET.iterator(); - } - return this.multipartRequest.getFileNames(); - } - - public MultipartFile getFile(String name) { - if (this.multipartRequest == null) { - return null; - } - return this.multipartRequest.getFile(name); - } - - public List getFiles(String name) { - if (this.multipartRequest == null) { - return null; - } - return this.multipartRequest.getFiles(name); - } - - public Map getFileMap() { - if (this.multipartRequest == null) { - return Collections.emptyMap(); - } - return this.multipartRequest.getFileMap(); - } - - public MultiValueMap getMultiFileMap() { - if (this.multipartRequest == null) { - return new LinkedMultiValueMap(); - } - return this.multipartRequest.getMultiFileMap(); - } - - @Override public String toString() { return "FacesWebRequest: " + getDescription(true); diff --git a/org.springframework.web/src/main/java/org/springframework/web/context/request/NativeWebRequest.java b/org.springframework.web/src/main/java/org/springframework/web/context/request/NativeWebRequest.java index c66a54f27ad..f4663e04af6 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/context/request/NativeWebRequest.java +++ b/org.springframework.web/src/main/java/org/springframework/web/context/request/NativeWebRequest.java @@ -16,8 +16,6 @@ package org.springframework.web.context.request; -import org.springframework.web.multipart.MultipartRequest; - /** * Extension of the {@link WebRequest} interface, exposing the * native request and response objects in a generic fashion. @@ -28,7 +26,7 @@ import org.springframework.web.multipart.MultipartRequest; * @author Juergen Hoeller * @since 2.5.2 */ -public interface NativeWebRequest extends WebRequest, MultipartRequest { +public interface NativeWebRequest extends WebRequest { /** * Return the underlying native request object, if available. diff --git a/org.springframework.web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java b/org.springframework.web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java index 25438e48a01..3fcae3f22c7 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java +++ b/org.springframework.web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java @@ -17,9 +17,7 @@ package org.springframework.web.context.request; import java.security.Principal; -import java.util.Collections; import java.util.Iterator; -import java.util.List; import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -27,12 +25,8 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.util.CollectionUtils; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartRequest; /** * {@link WebRequest} adapter for an {@link javax.servlet.http.HttpServletRequest}. @@ -47,8 +41,6 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ private static final String HEADER_LAST_MODIFIED = "Last-Modified"; - private MultipartRequest multipartRequest; - private HttpServletResponse response; private boolean notModified = false; @@ -60,9 +52,6 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ */ public ServletWebRequest(HttpServletRequest request) { super(request); - if (request instanceof MultipartRequest) { - this.multipartRequest = (MultipartRequest) request; - } } /** @@ -192,43 +181,6 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ } - @SuppressWarnings("unchecked") - public Iterator getFileNames() { - if (this.multipartRequest == null) { - return (Iterator) Collections.EMPTY_SET.iterator(); - } - return this.multipartRequest.getFileNames(); - } - - public MultipartFile getFile(String name) { - if (this.multipartRequest == null) { - return null; - } - return this.multipartRequest.getFile(name); - } - - public List getFiles(String name) { - if (this.multipartRequest == null) { - return null; - } - return this.multipartRequest.getFiles(name); - } - - public Map getFileMap() { - if (this.multipartRequest == null) { - return Collections.emptyMap(); - } - return this.multipartRequest.getFileMap(); - } - - public MultiValueMap getMultiFileMap() { - if (this.multipartRequest == null) { - return new LinkedMultiValueMap(); - } - return this.multipartRequest.getMultiFileMap(); - } - - @Override public String toString() { return "ServletWebRequest: " + getDescription(true);