Browse Source

fix default method gets wrapped twice (#641)

* fix default method gets wrapped twice

* check if default method only once
pull/640/merge
swirekadam 7 years ago committed by Marvin Froeder
parent
commit
7bea518f56
  1. 5
      hystrix/src/main/java/feign/hystrix/HystrixInvocationHandler.java
  2. 16
      hystrix/src/test/java/feign/hystrix/HystrixBuilderTest.java

5
hystrix/src/main/java/feign/hystrix/HystrixInvocationHandler.java

@ -26,6 +26,7 @@ import java.util.Set; @@ -26,6 +26,7 @@ import java.util.Set;
import feign.InvocationHandlerFactory.MethodHandler;
import feign.Target;
import feign.Util;
import rx.Completable;
import rx.Observable;
import rx.Single;
@ -143,7 +144,9 @@ final class HystrixInvocationHandler implements InvocationHandler { @@ -143,7 +144,9 @@ final class HystrixInvocationHandler implements InvocationHandler {
}
};
if (isReturnsHystrixCommand(method)) {
if (Util.isDefault(method)) {
return hystrixCommand.execute();
} else if (isReturnsHystrixCommand(method)) {
return hystrixCommand;
} else if (isReturnsObservable(method)) {
// Create a cold Observable

16
hystrix/src/test/java/feign/hystrix/HystrixBuilderTest.java

@ -51,6 +51,18 @@ public class HystrixBuilderTest { @@ -51,6 +51,18 @@ public class HystrixBuilderTest {
@Rule
public final MockWebServer server = new MockWebServer();
@Test
public void defaultMethodReturningHystrixCommand() {
server.enqueue(new MockResponse().setBody("\"foo\""));
TestInterface api = target();
HystrixCommand<String> command = api.defaultMethodReturningCommand();
assertThat(command).isNotNull();
assertThat(command.execute()).isEqualTo("foo");
}
@Test
public void hystrixCommand() {
server.enqueue(new MockResponse().setBody("\"foo\""));
@ -606,6 +618,10 @@ public class HystrixBuilderTest { @@ -606,6 +618,10 @@ public class HystrixBuilderTest {
@Headers("Accept: application/json")
HystrixCommand<String> command();
default HystrixCommand<String> defaultMethodReturningCommand() {
return command();
}
@RequestLine("GET /")
@Headers("Accept: application/json")
HystrixCommand<Integer> intCommand();

Loading…
Cancel
Save