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(); + } }