Add PATCH to "Allow" header for OPTIONS requests

master
Rossen Stoyanchev 12 years ago
parent ce0ae84d95
commit ef9d35c473
  1. 15
      spring-webmvc/src/main/java/org/springframework/web/servlet/FrameworkServlet.java
  2. 17
      spring-webmvc/src/test/java/org/springframework/web/servlet/DispatcherServletTests.java

@ -785,7 +785,7 @@ public abstract class FrameworkServlet extends HttpServletBean {
String method = request.getMethod();
if (method.equalsIgnoreCase(RequestMethod.PATCH.name())) {
doPatch(request, response);
processRequest(request, response);
}
else {
super.service(request, response);
@ -828,16 +828,6 @@ public abstract class FrameworkServlet extends HttpServletBean {
processRequest(request, response);
}
/**
* Delegate PATCH requests to {@link #processRequest}.
* @see #doService
*/
protected final void doPatch(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Delegate DELETE requests to {@link #processRequest}.
* @see #doService
@ -867,6 +857,9 @@ public abstract class FrameworkServlet extends HttpServletBean {
}
}
super.doOptions(request, response);
String allowedMethods = response.getHeader("Allow");
allowedMethods += ", " + RequestMethod.PATCH.name();
response.setHeader("Allow", allowedMethods);
}
/**

@ -16,6 +16,12 @@
package org.springframework.web.servlet;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.assertThat;
import java.io.IOException;
import java.util.Locale;
@ -60,9 +66,6 @@ import org.springframework.web.servlet.theme.AbstractThemeResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.util.WebUtils;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
/**
* @author Rod Johnson
* @author Juergen Hoeller
@ -855,6 +858,14 @@ public class DispatcherServletTests extends TestCase {
assertThat(custom.getEnvironment(), instanceOf(CustomServletEnvironment.class));
}
public void testAllowedOptionsIncludesPatchMethod() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest(getServletContext(), "OPTIONS", "/foo");
MockHttpServletResponse response = new MockHttpServletResponse();
DispatcherServlet servlet = new DispatcherServlet();
servlet.service(request, response);
assertThat(response.getHeader("Allow"), equalTo("GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH"));
}
public static class ControllerFromParent implements Controller {

Loading…
Cancel
Save