Skip to content

Commit b6bf1ca

Browse files
authored
Consolidates entrypoint where Hystrix is configured (OpenFeign#446)
1 parent 7850eb0 commit b6bf1ca

2 files changed

Lines changed: 13 additions & 20 deletions

File tree

hystrix/src/main/java/feign/hystrix/HystrixFeign.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,7 @@ public static final class Builder extends Feign.Builder {
3838
* @see #target(Class, String, Object)
3939
*/
4040
public <T> T target(Target<T> target, final T fallback) {
41-
super.invocationHandlerFactory(new InvocationHandlerFactory() {
42-
@Override
43-
public InvocationHandler create(Target target, Map<Method, MethodHandler> dispatch) {
44-
return new HystrixInvocationHandler(target, dispatch, fallback);
45-
}
46-
});
47-
super.contract(new HystrixDelegatingContract(contract));
48-
return super.build().newInstance(target);
41+
return buildWithFallback(fallback).newInstance(target);
4942
}
5043

5144
/**
@@ -100,7 +93,17 @@ public Builder contract(Contract contract) {
10093

10194
@Override
10295
public Feign build() {
103-
super.invocationHandlerFactory(new HystrixInvocationHandler.Factory());
96+
return buildWithFallback(null);
97+
}
98+
99+
/** Configures components needed for hystrix integration. */
100+
Feign buildWithFallback(final Object nullableFallback) {
101+
super.invocationHandlerFactory(new InvocationHandlerFactory() {
102+
@Override public InvocationHandler create(Target target,
103+
Map<Method, MethodHandler> dispatch) {
104+
return new HystrixInvocationHandler(target, dispatch, nullableFallback);
105+
}
106+
});
104107
super.contract(new HystrixDelegatingContract(contract));
105108
return super.build();
106109
}

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,13 @@
1919
import com.netflix.hystrix.HystrixCommandGroupKey;
2020
import com.netflix.hystrix.HystrixCommandKey;
2121

22-
import com.netflix.hystrix.HystrixCommandProperties;
2322
import java.lang.reflect.InvocationHandler;
2423
import java.lang.reflect.InvocationTargetException;
2524
import java.lang.reflect.Method;
2625
import java.lang.reflect.Proxy;
2726
import java.util.LinkedHashMap;
2827
import java.util.Map;
2928

30-
import feign.InvocationHandlerFactory;
3129
import feign.InvocationHandlerFactory.MethodHandler;
3230
import feign.Target;
3331
import rx.Completable;
@@ -183,12 +181,4 @@ public int hashCode() {
183181
public String toString() {
184182
return target.toString();
185183
}
186-
187-
static final class Factory implements InvocationHandlerFactory {
188-
189-
@Override
190-
public InvocationHandler create(Target target, Map<Method, MethodHandler> dispatch) {
191-
return new HystrixInvocationHandler(target, dispatch, null);
192-
}
193-
}
194-
}
184+
}

0 commit comments

Comments
 (0)