Поскольку RxJava2CallAdapter
уже знает, как адаптировать тип возврата Call<T>
к Observable<T>
, Completable
и другим типам Rx,
RxErrorCallAdapterFactory
просит оригинальную фабрику RxJava2CallAdapterFactory
создать такой "оригинал" RxJava2CallAdapter
. Затем RxErrorCallAdapterFactory
создает свой собственный CallAdapter
- RxCallAdapterWrapper
с этим оригинальным адаптером внутри.
Итак, RxErrorCallAdapterFactory
выдает RxCallAdapterWrapper
, который сначала делегирует исходный RxJava2CallAdapter
для преобразования Call<User>
в Observable<User>
, а затем применяет оператор onErrorResumeNext()
поверх Observable<User>
.
Если во время сетевого запроса возникает ошибка (например, 400 неверных запросов от сервера), она распространяется на onErrorResumeNext()
, где вы можете применить свою логику отображения ошибок. В этом случае onErrorResumeNext()
принимает Throwable
и возвращает Observable
, который сигнализирует onError()
с сопоставленным Throwable
.
Обычно, если оригинал CallApater
возвращает Observable.just(User())
, обертка CallAdapter
вернет это:
Observable.just(User())
.onErrorResumeNext { throwable ->
Observable.error(map(throwable))
}