From 444f3c8010b70b1b9d3b02e67eb3acfe76636d10 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 19 Mar 2015 12:13:19 +0000 Subject: [PATCH] Feign client builder should not assume all annotations are the same Simple solution is to check for instanceof before casting. Fixes gh-265 --- .../cloud/netflix/feign/support/SpringMvcContract.java | 3 +++ .../cloud/netflix/feign/valid/FeignClientValidationTests.java | 1 + 2 files changed, 4 insertions(+) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/support/SpringMvcContract.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/support/SpringMvcContract.java index f678bf87..a2dd09e0 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/support/SpringMvcContract.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/support/SpringMvcContract.java @@ -45,6 +45,9 @@ public class SpringMvcContract extends Contract.BaseContract { @Override protected void processAnnotationOnMethod(MethodMetadata data, Annotation methodAnnotation, Method method) { + if (!(methodAnnotation instanceof RequestMapping)) { + return; + } RequestMapping mapping = RequestMapping.class.cast(methodAnnotation); if (mapping != null) { // HTTP Method diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientValidationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientValidationTests.java index 2d96c24a..3f4f5872 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientValidationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientValidationTests.java @@ -46,6 +46,7 @@ public class FeignClientValidationTests { @FeignClient("foo") interface Client { @RequestMapping(method = RequestMethod.GET, value = "/") + @Deprecated String get(); }