I need to handle error globally in my application for network service, i am using Rxjava2CallAdapterFactory in my retrofit service. So In order to handle error globally i searched through various sites and i got a solution. But i do know how this works.
class RxErrorAdapter private constructor() : CallAdapter.Factory() {
private val original = RxJava2CallAdapterFactory.create()
override fun get(returnType: Type, annotations: Array<Annotation>, retrofit: Retrofit): CallAdapter<*, *>? {
return Wrapper<Any>(original.get(returnType, annotations, retrofit)
?: return null)
}
private class Wrapper<R>(private val wrapped: CallAdapter<R, *>) : CallAdapter<R, Any> {
override fun responseType(): Type {
return wrapped.responseType()
}
override fun adapt(call: Call<R>): Any {
val result = wrapped.adapt(call)
}
}
companion object {
fun create(): CallAdapter.Factory {
return RxErrorAdapter()
}
}
}
Can anyone explain on this ?