I dunno, should we? :-)
Elias Torres wrote: > Should we allow to override GET? :-) > > =Elias > > On 7/18/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >> Author: jmsnell >> Date: Tue Jul 18 17:36:53 2006 >> New Revision: 423311 >> >> URL: http://svn.apache.org/viewvc?rev=423311&view=rev >> Log: >> Google's gdata api supports the notion of tunnelling PUT and DELETE >> requests via POST using >> a X-Method-Override request header in order to deal with scenarios in >> which PUT and DELETE >> are being blocked at the firewall. >> >> This change moves support for the X-Method-Override header into the >> ServletRequestContext >> implementation so that implementations can optionally use the mechanism. >> >> This is a work in progress. >> >> Modified: >> >> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/server/servlet/ServletRequestContext.java >> >> >> Modified: >> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/server/servlet/ServletRequestContext.java >> >> URL: >> http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/server/servlet/ServletRequestContext.java?rev=423311&r1=423310&r2=423311&view=diff >> >> ============================================================================== >> >> --- >> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/server/servlet/ServletRequestContext.java >> (original) >> +++ >> incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/server/servlet/ServletRequestContext.java >> Tue Jul 18 17:36:53 2006 >> @@ -21,7 +21,6 @@ >> import java.io.InputStream; >> import java.net.URI; >> import java.net.URISyntaxException; >> -import java.util.ArrayList; >> import java.util.Arrays; >> import java.util.Collections; >> import java.util.List; >> @@ -33,14 +32,35 @@ >> public class ServletRequestContext >> implements RequestContext { >> >> + public static final String X_OVERRIDE_HEADER = "X-Method-Override"; >> + >> private HttpServletRequest servletRequest = null; >> + private boolean use_post_tunnel = true; >> + private String method = null; >> + >> + public ServletRequestContext( >> + HttpServletRequest request) { >> + this.servletRequest = request; >> + } >> >> - public ServletRequestContext(HttpServletRequest request) { >> - this.servletRequest = request; >> + public ServletRequestContext( >> + HttpServletRequest request, >> + boolean use_post_tunnel) { >> + this(request); >> + this.use_post_tunnel = use_post_tunnel; >> } >> >> public String getMethod() { >> - return servletRequest.getMethod(); >> + if (method == null) { >> + method = servletRequest.getMethod(); >> + if (use_post_tunnel && method.equalsIgnoreCase("POST")) { >> + String override = servletRequest.getHeader(X_OVERRIDE_HEADER); >> + if(override != null) { >> + method = override.toUpperCase(); >> + } >> + } >> + } >> + return method; >> } >> >> public URI getRequestUri() { >> @@ -79,10 +99,12 @@ >> return servletRequest.getHeader(name); >> } >> >> + @SuppressWarnings("unchecked") >> public List<String> getHeaders(String name) { >> return Collections.list(servletRequest.getHeaders(name)); >> } >> >> + @SuppressWarnings("unchecked") >> public List<String> getHeaderNames() { >> return Collections.list(servletRequest.getHeaderNames()); >> } >> @@ -107,6 +129,7 @@ >> return Arrays.asList(servletRequest.getParameterValues(name)); >> } >> >> + @SuppressWarnings("unchecked") >> public List<String> getParameterNames() { >> return Collections.list(servletRequest.getParameterNames()); >> } >> >> >> >
