Browse Source

Support @AliasFor annotation elements in Feign.

fixes gh-766
pull/6/head
Spencer Gibb 9 years ago
parent
commit
62d340bcfe
  1. 11
      spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/support/SpringMvcContract.java
  2. 2
      spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/support/SpringMvcContractTest.java

11
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/support/SpringMvcContract.java

@ -33,12 +33,13 @@ import org.springframework.cloud.netflix.feign.annotation.RequestParamParameterP @@ -33,12 +33,13 @@ import org.springframework.cloud.netflix.feign.annotation.RequestParamParameterP
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.RequestMapping;
import static feign.Util.checkState;
import static feign.Util.emptyToNull;
import feign.Contract;
import feign.MethodMetadata;
import static feign.Util.checkState;
import static feign.Util.emptyToNull;
import static org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnnotation;
/**
* @author Spencer Gibb
*/
@ -73,7 +74,7 @@ public class SpringMvcContract extends Contract.BaseContract { @@ -73,7 +74,7 @@ public class SpringMvcContract extends Contract.BaseContract {
public MethodMetadata parseAndValidateMetadata(Class<?> targetType, Method method) {
MethodMetadata md = super.parseAndValidateMetadata(targetType, method);
RequestMapping classAnnotation = targetType.getAnnotation(RequestMapping.class);
RequestMapping classAnnotation = findMergedAnnotation(targetType, RequestMapping.class);
if (classAnnotation != null) {
// Prepend path from class annotation if specified
if (classAnnotation.value().length > 0) {
@ -111,7 +112,7 @@ public class SpringMvcContract extends Contract.BaseContract { @@ -111,7 +112,7 @@ public class SpringMvcContract extends Contract.BaseContract {
return;
}
RequestMapping methodMapping = RequestMapping.class.cast(methodAnnotation);
RequestMapping methodMapping = findMergedAnnotation(method, RequestMapping.class);
// HTTP Method
checkOne(method, methodMapping.method(), "method");
data.template().method(methodMapping.method()[0].name());

2
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/support/SpringMvcContractTest.java

@ -162,7 +162,7 @@ public class SpringMvcContractTest { @@ -162,7 +162,7 @@ public class SpringMvcContractTest {
public interface TestTemplate_Advanced {
@ExceptionHandler
@RequestMapping(value = "/test/{id}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
@RequestMapping(path = "/test/{id}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<TestObject> getTest(@RequestHeader("Authorization") String auth,
@PathVariable("id") String id, @RequestParam("amount") Integer amount);

Loading…
Cancel
Save