From a46e6626325dae45696dbc4518668a81c8a95017 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Mon, 27 May 2013 13:51:44 +0200 Subject: [PATCH] #72 - Improved mapping discovery in AnnotationMappingDiscoverer. AnnotationMappingDiscoverer now returns a polished mapping in case the type mapping consists of a plain slash only. --- .../hateoas/core/AnnotationMappingDiscoverer.java | 2 +- .../core/AnnotationMappingDiscovererUnitTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/hateoas/core/AnnotationMappingDiscoverer.java b/src/main/java/org/springframework/hateoas/core/AnnotationMappingDiscoverer.java index 884771dd..0caba80f 100644 --- a/src/main/java/org/springframework/hateoas/core/AnnotationMappingDiscoverer.java +++ b/src/main/java/org/springframework/hateoas/core/AnnotationMappingDiscoverer.java @@ -93,7 +93,7 @@ public class AnnotationMappingDiscoverer implements MappingDiscoverer { return typeMapping; } - return typeMapping == null ? mapping[0] : typeMapping + mapping[0]; + return typeMapping == null || "/".equals(typeMapping) ? mapping[0] : typeMapping + mapping[0]; } private String[] getMappingFrom(Annotation annotation) { diff --git a/src/test/java/org/springframework/hateoas/core/AnnotationMappingDiscovererUnitTest.java b/src/test/java/org/springframework/hateoas/core/AnnotationMappingDiscovererUnitTest.java index 80f710d4..738437eb 100644 --- a/src/test/java/org/springframework/hateoas/core/AnnotationMappingDiscovererUnitTest.java +++ b/src/test/java/org/springframework/hateoas/core/AnnotationMappingDiscovererUnitTest.java @@ -60,6 +60,13 @@ public class AnnotationMappingDiscovererUnitTest { assertThat(discoverer.getMapping(method), is("/method")); } + @Test + public void resolvesMethodLevelMappingWithSlashRootMapping() throws Exception { + + Method method = SlashRootMapping.class.getMethod("method"); + assertThat(discoverer.getMapping(method), is("/method")); + } + /** * @see #46 */ @@ -85,4 +92,11 @@ public class AnnotationMappingDiscovererUnitTest { @RequestMapping("/method") void method(); } + + @RequestMapping("/") + interface SlashRootMapping { + + @RequestMapping("/method") + void method(); + } }