package feign.rxjava; import rx.Observable; import rx.Observer; import rx.Subscription; import rx.util.functions.Func1; public class ToRxObservable { private ToRxObservable() { } public static Observable convert(final feign.Observable observable) { Func1, Subscription> onSubscribe = new Func1, Subscription>() { @Override public Subscription call(Observer observer) { return toRx(observable.subscribe(toFeign(observer))); } }; return new Observable(onSubscribe) { }; } private static feign.Observer toFeign(final Observer observer) { return new feign.Observer() { @Override public void onNext(T element) { observer.onNext(element); } @Override public void onSuccess() { observer.onCompleted(); } @Override public void onFailure(Throwable cause) { observer.onError(cause); } }; } private static Subscription toRx(final feign.Subscription subscription) { return new Subscription() { @Override public void unsubscribe() { subscription.unsubscribe(); } }; } }