From 6cf6d8834cbd33ebe8c739cb246cc92153ead619 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 14 May 2018 08:59:12 -0400 Subject: [PATCH] List OPTIONS in OPTIONS responses for @RequestMapping Issue: SPR-16513 --- .../result/method/RequestMappingInfoHandlerMapping.java | 1 + .../result/method/RequestMappingInfoHandlerMappingTests.java | 4 ++-- .../servlet/mvc/method/RequestMappingInfoHandlerMapping.java | 1 + .../mvc/method/RequestMappingInfoHandlerMappingTests.java | 4 ++-- .../ServletAnnotationControllerHandlerMethodTests.java | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java index 0aec80af1d..1bac257de3 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java @@ -365,6 +365,7 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe if (result.contains(HttpMethod.GET)) { result.add(HttpMethod.HEAD); } + result.add(HttpMethod.OPTIONS); return result; } } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMappingTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMappingTests.java index 547aff6da4..1bd343e68b 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMappingTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMappingTests.java @@ -195,8 +195,8 @@ public class RequestMappingInfoHandlerMappingTests { List allMethodExceptTrace = new ArrayList<>(Arrays.asList(HttpMethod.values())); allMethodExceptTrace.remove(HttpMethod.TRACE); - testHttpOptions("/foo", EnumSet.of(HttpMethod.GET, HttpMethod.HEAD)); - testHttpOptions("/person/1", EnumSet.of(HttpMethod.PUT)); + testHttpOptions("/foo", EnumSet.of(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.OPTIONS)); + testHttpOptions("/person/1", EnumSet.of(HttpMethod.PUT, HttpMethod.OPTIONS)); testHttpOptions("/persons", EnumSet.copyOf(allMethodExceptTrace)); testHttpOptions("/something", EnumSet.of(HttpMethod.PUT, HttpMethod.POST)); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.java index 6ff9c0e625..50dad4c2f5 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMapping.java @@ -443,6 +443,7 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe result.add(HttpMethod.HEAD); } } + result.add(HttpMethod.OPTIONS); } return result; } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java index 9dcd5ce513..4a19f6b4fb 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java @@ -172,8 +172,8 @@ public class RequestMappingInfoHandlerMappingTests { @Test public void getHandlerHttpOptions() throws Exception { - testHttpOptions("/foo", "GET,HEAD"); - testHttpOptions("/person/1", "PUT"); + testHttpOptions("/foo", "GET,HEAD,OPTIONS"); + testHttpOptions("/person/1", "PUT,OPTIONS"); testHttpOptions("/persons", "GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS"); testHttpOptions("/something", "PUT,POST"); } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletAnnotationControllerHandlerMethodTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletAnnotationControllerHandlerMethodTests.java index 05709b9b03..b0207a9b6c 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletAnnotationControllerHandlerMethodTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletAnnotationControllerHandlerMethodTests.java @@ -1776,7 +1776,7 @@ public class ServletAnnotationControllerHandlerMethodTests extends AbstractServl getServlet().service(request, response); assertEquals(200, response.getStatus()); - assertEquals("GET,HEAD", response.getHeader("Allow")); + assertEquals("GET,HEAD,OPTIONS", response.getHeader("Allow")); assertTrue(response.getContentAsByteArray().length == 0); }