Browse Source

fix issue #31: support @Path on type

3.x
adriancole 11 years ago
parent
commit
4f9aa7db4b
  1. 1
      CHANGES.md
  2. 10
      feign-jaxrs/src/main/java/feign/jaxrs/JAXRSModule.java
  3. 14
      feign-jaxrs/src/test/java/feign/jaxrs/JAXRSContractTest.java

1
CHANGES.md

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
### Version 3.2
* Add wikipedia search example
* Allow `@Path` on types in feign-jaxrs
### Version 3.1
* Log when an http request is retried or a response fails due to an IOException.

10
feign-jaxrs/src/main/java/feign/jaxrs/JAXRSModule.java

@ -45,6 +45,16 @@ public final class JAXRSModule { @@ -45,6 +45,16 @@ public final class JAXRSModule {
public static final class JAXRSContract extends Contract {
@Override
public MethodMetadata parseAndValidatateMetadata(Method method) {
MethodMetadata md = super.parseAndValidatateMetadata(method);
Path path = method.getDeclaringClass().getAnnotation(Path.class);
if (path != null) {
md.template().insert(0, path.value());
}
return md;
}
@Override
protected void processAnnotationOnMethod(MethodMetadata data, Annotation methodAnnotation, Method method) {
Class<? extends Annotation> annotationType = methodAnnotation.annotationType();

14
feign-jaxrs/src/test/java/feign/jaxrs/JAXRSContractTest.java

@ -192,6 +192,20 @@ public class JAXRSContractTest { @@ -192,6 +192,20 @@ public class JAXRSContractTest {
contract.parseAndValidatateMetadata(BodyParams.class.getDeclaredMethod("tooMany", List.class, List.class));
}
@Path("/base")
interface PathOnType {
@GET Response base();
@GET @Path("/specific") Response get();
}
@Test public void pathOnType() throws Exception {
MethodMetadata md = contract.parseAndValidatateMetadata(PathOnType.class.getDeclaredMethod("base"));
assertEquals(md.template().url(), "/base");
md = contract.parseAndValidatateMetadata(PathOnType.class.getDeclaredMethod("get"));
assertEquals(md.template().url(), "/base/specific");
}
interface WithURIParam {
@GET @Path("/{1}/{2}") Response uriParam(@PathParam("1") String one, URI endpoint, @PathParam("2") String two);
}

Loading…
Cancel
Save