@Override public Observable<Response<T>> adapt(Call<T> call, AdapterParam param) { Observable.OnSubscribe<Response<T>> subscribe = AnalysisParams.analysis(call, param); return Observable.create(subscribe); } }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { action.call(); s.onNext(true); s.onCompleted(); } }); } }
@Override public Observable<Message> observe() { OnSubscribe<Message> subscriber = getOnSubscribe(); return Observable.create(subscriber); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { s.onError(new RuntimeException("onError")); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> resumeWithFallback() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); s.onNext(false); s.onCompleted(); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); s.onNext(true); s.onCompleted(); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> resumeWithFallback() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); s.onNext(false); s.onCompleted(); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); throw new RuntimeException("bad onError"); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> resumeWithFallback() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); s.onNext(false); s.onCompleted(); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> resumeWithFallback() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); s.onNext(false); s.onCompleted(); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { results.isContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); results.originThread.set(Thread.currentThread()); s.onError(new RuntimeException("graceful onError")); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { s.onError(new RuntimeException("onError")); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { s.onError(new RuntimeException("onError")); } }).subscribeOn(userScheduler); }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { try { Thread.sleep(500); } catch (InterruptedException e) { // ignore the interrupted exception } } }).subscribeOn(userScheduler); }
@Override public Observable<T> adapt(Call<T> call, AdapterParam param) { Observable.OnSubscribe<Response<T>> subscribe = AnalysisParams.analysis(call, param); BodyOnSubscribe<T> bodySubscribe = new BodyOnSubscribe<>(subscribe); return Observable.create(bodySubscribe); } }
@Override public Observable<Result<T>> adapt(Call<T> call, AdapterParam param) { Observable.OnSubscribe<Response<T>> subscribe = AnalysisParams.analysis(call, param); ResultOnSubscribe<T> resultSubscribe = new ResultOnSubscribe<>(subscribe); return Observable.create(resultSubscribe); } }
@Override protected Observable<Boolean> construct() { return Observable.create(new OnSubscribe<Boolean>() { @Override public void call(Subscriber<? super Boolean> s) { try { Thread.sleep(executionSleep); } catch (InterruptedException e) { e.printStackTrace(); } s.onNext(true); s.onCompleted(); } }).subscribeOn(Schedulers.io()); }
@Override public Object adapt(Call<R> call) { OnSubscribe<Response<R>> callFunc = isAsync ? new CallEnqueueOnSubscribe<>(call) : new CallExecuteOnSubscribe<>(call); OnSubscribe<?> func; if (isResult) { func = new ResultOnSubscribe<>(callFunc); } else if (isBody) { func = new BodyOnSubscribe<>(callFunc); } else { func = callFunc; } Observable<?> observable = Observable.create(func); if (scheduler != null) { observable = observable.subscribeOn(scheduler); } if (isSingle) { return observable.toSingle(); } if (isCompletable) { return observable.toCompletable(); } return observable; } }
@Override public Observable<HttpResponseMessage> applyAsync(HttpRequestMessage input) { if (WAIT_FOR_LASTCONTENT.get() && ! input.hasCompleteBody()) { // Return an observable that won't complete until after we have received the LastContent from client (ie. that we've // received the whole request body), so that we can't potentially corrupt the clients' http state on this connection. return Observable.create(subscriber -> { ZuulMessage response = this.apply(input); ResponseState state = new ResponseState(response, subscriber); input.getContext().set(KEY_FOR_SUBSCRIBER, state); }); } else { return Observable.just(this.apply(input)); } }
@Override public Observable<HttpResponseMessage> applyAsync(HttpRequestMessage input) { if (WAIT_FOR_LASTCONTENT.get() && ! input.hasCompleteBody()) { // Return an observable that won't complete until after we have received the LastContent from client (ie. that we've // received the whole request body), so that we can't potentially corrupt the clients' http state on this connection. return Observable.create(subscriber -> { ZuulMessage response = this.apply(input); ResponseState state = new ResponseState(response, subscriber); input.getContext().set(KEY_FOR_SUBSCRIBER, state); }); } else { return Observable.just(this.apply(input)); } }