From ac72c8c91eb751ff8713cb992892bdff10d5c3e5 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Wed, 5 Jun 2019 23:38:35 +0200 Subject: [PATCH] DATAREST-1387 - DelegatingHandlerMapping now handles HttpMediaTypeNotSupportedException. --- .../data/rest/webmvc/support/DelegatingHandlerMapping.java | 5 ++++- .../webmvc/support/DelegatingHandlerMappingUnitTests.java | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMapping.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMapping.java index 3543d67e6..ae9a22710 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMapping.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMapping.java @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import org.springframework.core.Ordered; import org.springframework.util.Assert; import org.springframework.web.HttpMediaTypeNotAcceptableException; +import org.springframework.web.HttpMediaTypeNotSupportedException; import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.UnsatisfiedServletRequestParameterException; import org.springframework.web.servlet.HandlerExecutionChain; @@ -74,7 +75,7 @@ public class DelegatingHandlerMapping implements HandlerMapping, Ordered, Matcha return HandlerSelectionResult.from(request, delegates).resultOrException(); } - /* + /* * (non-Javadoc) * @see org.springframework.web.servlet.handler.MatchableHandlerMapping#match(javax.servlet.http.HttpServletRequest, java.lang.String) */ @@ -111,6 +112,8 @@ public class DelegatingHandlerMapping implements HandlerMapping, Ordered, Matcha return HandlerSelectionResult.forResult(request, delegate, result); } + } catch (HttpMediaTypeNotSupportedException o_O) { + ignoredException = o_O; } catch (HttpMediaTypeNotAcceptableException o_O) { ignoredException = o_O; } catch (HttpRequestMethodNotSupportedException o_O) { diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMappingUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMappingUnitTests.java index c6798cc0f..ae2982754 100755 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMappingUnitTests.java +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/support/DelegatingHandlerMappingUnitTests.java @@ -30,6 +30,7 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.web.HttpMediaTypeNotAcceptableException; +import org.springframework.web.HttpMediaTypeNotSupportedException; import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.UnsatisfiedServletRequestParameterException; import org.springframework.web.servlet.HandlerMapping; @@ -48,7 +49,7 @@ public class DelegatingHandlerMappingUnitTests { @Mock HandlerMapping first, second; @Mock HttpServletRequest request; - @Test // DATAREST-490, DATAREST-522 + @Test // DATAREST-490, DATAREST-522, DATAREST-1387 public void consultsAllHandlerMappingsAndThrowsExceptionEventually() throws Exception { DelegatingHandlerMapping mapping = new DelegatingHandlerMapping(Arrays.asList(first, second)); @@ -56,6 +57,7 @@ public class DelegatingHandlerMappingUnitTests { assertHandlerTriedButExceptionThrown(mapping, HttpMediaTypeNotAcceptableException.class); assertHandlerTriedButExceptionThrown(mapping, HttpRequestMethodNotSupportedException.class); assertHandlerTriedButExceptionThrown(mapping, UnsatisfiedServletRequestParameterException.class); + assertHandlerTriedButExceptionThrown(mapping, HttpMediaTypeNotSupportedException.class); // DATAREST-1387 } @Test // DATAREST-1193