removed MultipartRequest mixin interface again (avoiding a package dependency cycle)

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2663 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
Juergen Hoeller 2009-12-15 00:51:32 +00:00
parent c60ebc27b6
commit cb2adcaa8d
6 changed files with 12 additions and 151 deletions

View File

@ -17,9 +17,7 @@
package org.springframework.web.portlet.context; package org.springframework.web.portlet.context;
import java.security.Principal; import java.security.Principal;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.portlet.PortletRequest; import javax.portlet.PortletRequest;
@ -27,13 +25,9 @@ import javax.portlet.PortletResponse;
import javax.portlet.PortletSession; import javax.portlet.PortletSession;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.context.request.NativeWebRequest; 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 * {@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 { public class PortletWebRequest extends PortletRequestAttributes implements NativeWebRequest {
private MultipartRequest multipartRequest;
private PortletResponse response; private PortletResponse response;
@ -55,9 +47,6 @@ public class PortletWebRequest extends PortletRequestAttributes implements Nativ
*/ */
public PortletWebRequest(PortletRequest request) { public PortletWebRequest(PortletRequest request) {
super(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<String> getFileNames() {
if (this.multipartRequest == null) {
return (Iterator<String>) 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<MultipartFile> getFiles(String name) {
if (this.multipartRequest == null) {
return null;
}
return this.multipartRequest.getFiles(name);
}
public Map<String, MultipartFile> getFileMap() {
if (this.multipartRequest == null) {
return Collections.emptyMap();
}
return this.multipartRequest.getFileMap();
}
public MultiValueMap<String, MultipartFile> getMultiFileMap() {
if (this.multipartRequest == null) {
return new LinkedMultiValueMap<String, MultipartFile>();
}
return this.multipartRequest.getMultiFileMap();
}
@Override @Override
public String toString() { public String toString() {
return "PortletWebRequest: " + getDescription(true); return "PortletWebRequest: " + getDescription(true);

View File

@ -72,6 +72,7 @@ import org.springframework.web.bind.support.WebBindingInitializer;
import org.springframework.web.bind.support.WebRequestDataBinder; import org.springframework.web.bind.support.WebRequestDataBinder;
import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.WebRequest; 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 * 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) { if (paramName.length() == 0) {
paramName = getRequiredParameterName(methodParam); 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) { if (paramValue == null) {
String[] paramValues = webRequest.getParameterValues(paramName); String[] paramValues = webRequest.getParameterValues(paramName);
if (paramValues != null && !paramType.isArray()) { if (paramValues != null && !paramType.isArray()) {

View File

@ -19,6 +19,7 @@ package org.springframework.web.bind.support;
import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.MutablePropertyValues;
import org.springframework.validation.BindException; import org.springframework.validation.BindException;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.WebRequest; import org.springframework.web.context.request.WebRequest;
import org.springframework.web.multipart.MultipartRequest; import org.springframework.web.multipart.MultipartRequest;
@ -99,8 +100,11 @@ public class WebRequestDataBinder extends WebDataBinder {
*/ */
public void bind(WebRequest request) { public void bind(WebRequest request) {
MutablePropertyValues mpvs = new MutablePropertyValues(request.getParameterMap()); MutablePropertyValues mpvs = new MutablePropertyValues(request.getParameterMap());
if (request instanceof MultipartRequest) { if (request instanceof NativeWebRequest) {
bindMultipartFiles(((MultipartRequest) request).getFileMap(), mpvs); Object nativeRequest = ((NativeWebRequest) request).getNativeRequest();
if (nativeRequest instanceof MultipartRequest) {
bindMultipartFiles(((MultipartRequest) nativeRequest).getFileMap(), mpvs);
}
} }
doBind(mpvs); doBind(mpvs);
} }

View File

@ -17,19 +17,13 @@
package org.springframework.web.context.request; package org.springframework.web.context.request;
import java.security.Principal; import java.security.Principal;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.faces.context.ExternalContext; import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils; 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}. * {@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 { public class FacesWebRequest extends FacesRequestAttributes implements NativeWebRequest {
private MultipartRequest multipartRequest;
/** /**
* Create a new FacesWebRequest adapter for the given FacesContext. * Create a new FacesWebRequest adapter for the given FacesContext.
* @param facesContext the current FacesContext * @param facesContext the current FacesContext
@ -49,9 +40,6 @@ public class FacesWebRequest extends FacesRequestAttributes implements NativeWeb
*/ */
public FacesWebRequest(FacesContext facesContext) { public FacesWebRequest(FacesContext facesContext) {
super(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<String> getFileNames() {
if (this.multipartRequest == null) {
return (Iterator<String>) 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<MultipartFile> getFiles(String name) {
if (this.multipartRequest == null) {
return null;
}
return this.multipartRequest.getFiles(name);
}
public Map<String, MultipartFile> getFileMap() {
if (this.multipartRequest == null) {
return Collections.emptyMap();
}
return this.multipartRequest.getFileMap();
}
public MultiValueMap<String, MultipartFile> getMultiFileMap() {
if (this.multipartRequest == null) {
return new LinkedMultiValueMap<String, MultipartFile>();
}
return this.multipartRequest.getMultiFileMap();
}
@Override @Override
public String toString() { public String toString() {
return "FacesWebRequest: " + getDescription(true); return "FacesWebRequest: " + getDescription(true);

View File

@ -16,8 +16,6 @@
package org.springframework.web.context.request; package org.springframework.web.context.request;
import org.springframework.web.multipart.MultipartRequest;
/** /**
* Extension of the {@link WebRequest} interface, exposing the * Extension of the {@link WebRequest} interface, exposing the
* native request and response objects in a generic fashion. * native request and response objects in a generic fashion.
@ -28,7 +26,7 @@ import org.springframework.web.multipart.MultipartRequest;
* @author Juergen Hoeller * @author Juergen Hoeller
* @since 2.5.2 * @since 2.5.2
*/ */
public interface NativeWebRequest extends WebRequest, MultipartRequest { public interface NativeWebRequest extends WebRequest {
/** /**
* Return the underlying native request object, if available. * Return the underlying native request object, if available.

View File

@ -17,9 +17,7 @@
package org.springframework.web.context.request; package org.springframework.web.context.request;
import java.security.Principal; import java.security.Principal;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -27,12 +25,8 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; 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}. * {@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 static final String HEADER_LAST_MODIFIED = "Last-Modified";
private MultipartRequest multipartRequest;
private HttpServletResponse response; private HttpServletResponse response;
private boolean notModified = false; private boolean notModified = false;
@ -60,9 +52,6 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
*/ */
public ServletWebRequest(HttpServletRequest request) { public ServletWebRequest(HttpServletRequest request) {
super(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<String> getFileNames() {
if (this.multipartRequest == null) {
return (Iterator<String>) 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<MultipartFile> getFiles(String name) {
if (this.multipartRequest == null) {
return null;
}
return this.multipartRequest.getFiles(name);
}
public Map<String, MultipartFile> getFileMap() {
if (this.multipartRequest == null) {
return Collections.emptyMap();
}
return this.multipartRequest.getFileMap();
}
public MultiValueMap<String, MultipartFile> getMultiFileMap() {
if (this.multipartRequest == null) {
return new LinkedMultiValueMap<String, MultipartFile>();
}
return this.multipartRequest.getMultiFileMap();
}
@Override @Override
public String toString() { public String toString() {
return "ServletWebRequest: " + getDescription(true); return "ServletWebRequest: " + getDescription(true);