Попытка преобразовать errorBody () ответа об ошибке модификации в ResponseWrapper следующим образом:
retrofit.responseBodyConverter<ResponseWrapper<R>>(Failure::class.java, arrayOf(object : Annotation {}))
.convert(response.errorBody())
ResponseWrapper выглядит следующим образом:
sealed class ResponseWrapper<R> {
data class Success<R>(val payload: R) : ResponseWrapper<R>()
data class Failure<R>(
@field:Json(name = "code") val code: Int = INVALID_CODE,
@field:Json(name = "status") val status: String = "",
@field:Json(name = "exception") val exception: String = "",
@field:Json(name = "message") val message: String = "",
@field:Json(name = "fieldErrors") val fieldErrors: List<FieldError> = emptyList()
) : ResponseWrapper<R>()
class NotFound<R> : ResponseWrapper<R>()
class NoInternet<R> : ResponseWrapper<R>()
data class FieldError(
@field:Json(name = "field") val field: String,
@field:Json(name = "message") val message: String,
@field:Json(name = "rejectValue") val rejectValue: String
) }
При этом с помощью Retrofit / Moshi создается следующее сообщение об ошибке:
java.lang.AbstractMethodError: abstract method "java.lang.Class java.lang.annotation.Annotation.annotationType()"
at retrofit2.converter.moshi.MoshiConverterFactory.jsonAnnotations(MoshiConverterFactory.java:122)
at retrofit2.converter.moshi.MoshiConverterFactory.responseBodyConverter(MoshiConverterFactory.java:91)
at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:330)
at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:313)
Что я тут не так сделал?