diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/IncomingRequest.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/IncomingRequest.java index 9aa801cae..8505300d2 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/IncomingRequest.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/IncomingRequest.java @@ -62,7 +62,7 @@ public class IncomingRequest { * @return */ public boolean isJsonPatchRequest() { - return isPatchRequest() && RestMediaTypes.JSON_PATCH_JSON.equals(contentType); + return isPatchRequest() && RestMediaTypes.JSON_PATCH_JSON.isCompatibleWith(contentType); } /** @@ -71,7 +71,7 @@ public class IncomingRequest { * @return */ public boolean isJsonMergePatchRequest() { - return isPatchRequest() && RestMediaTypes.MERGE_PATCH_JSON.equals(contentType); + return isPatchRequest() && RestMediaTypes.MERGE_PATCH_JSON.isCompatibleWith(contentType); } /** diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/AugmentingHandlerMappingUnitTest.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/AugmentingHandlerMappingUnitTests.java similarity index 97% rename from spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/AugmentingHandlerMappingUnitTest.java rename to spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/AugmentingHandlerMappingUnitTests.java index 4dfb4c5c7..e5b868b11 100644 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/AugmentingHandlerMappingUnitTest.java +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/AugmentingHandlerMappingUnitTests.java @@ -35,7 +35,7 @@ import org.springframework.web.servlet.mvc.method.RequestMappingInfo; * * @author Oliver Gierke */ -public class AugmentingHandlerMappingUnitTest { +public class AugmentingHandlerMappingUnitTests { @Configuration static class Config { diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/IncomingRequestUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/IncomingRequestUnitTests.java new file mode 100644 index 000000000..b63a0dd44 --- /dev/null +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/IncomingRequestUnitTests.java @@ -0,0 +1,67 @@ +/* + * Copyright 2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.rest.webmvc; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.http.server.ServletServerHttpRequest; +import org.springframework.mock.web.MockHttpServletRequest; + +/** + * Unit tests for {@link IncomingRequest}. + * + * @author Oliver Gierke + */ +public class IncomingRequestUnitTests { + + MockHttpServletRequest request; + + @Before + public void setUp() { + this.request = new MockHttpServletRequest("PATCH", "/"); + } + + /** + * @see DATAREST-498 + */ + @Test + public void identifiesJsonPatchRequestForRequestWithContentTypeParameters() { + + request.addHeader("Content-Type", "application/json-patch+json;charset=UTF-8"); + + IncomingRequest incomingRequest = new IncomingRequest(new ServletServerHttpRequest(request)); + + assertThat(incomingRequest.isJsonPatchRequest(), is(true)); + assertThat(incomingRequest.isJsonMergePatchRequest(), is(false)); + } + + /** + * @see DATAREST-498 + */ + @Test + public void identifiesJsonMergePatchRequestForRequestWithContentTypeParameters() { + + request.addHeader("Content-Type", "application/merge-patch+json;charset=UTF-8"); + + IncomingRequest incomingRequest = new IncomingRequest(new ServletServerHttpRequest(request)); + + assertThat(incomingRequest.isJsonPatchRequest(), is(false)); + assertThat(incomingRequest.isJsonMergePatchRequest(), is(true)); + } +}