Котлин Моши Адаптер не называется - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь написать адаптер Moshi в Kotlin, который будет создавать перечисления, основанные на целочисленном значении, а также по умолчанию определенное значение перечисления, если встретится с неподдерживаемым значением.

Мой адаптер никогда не бываетвызывается, что приводит к сбою адаптера перечисления по умолчанию с включенной трассировкой стека.

Трассировка кода показывает, что аннотация @ToJson почему-то отсутствует, и поэтому адаптер не добавляется, когдаэто должно быть .

Объявление адаптера

enum class Status {
    IDLE,
    IN_PROGRESS,
    FAILED,
    SUCCESS,
    UNKNOWN;

    companion object {
        private val map = Status.values().associateBy(Status::ordinal);
        fun fromInt(type: Int?): Status {
            var ret = map[type]
            if (ret == null) {
                ret = UNKNOWN
            }
            return ret
        }

    }

    class Adapter {
        @ToJson
        fun toJson(status: Status): Int {
            return status.ordinal
        }

        @FromJson
        fun fromJson(value: Int): Status {
            return fromInt(value)
        }
    }
}

Здание Moshi

@Provides
@Singleton
fun provideMoshi(): Moshi {
    return Moshi.Builder()
            .add(Status.Adapter())
            .add(KotlinJsonAdapterFactory())
            .build()
}

Зависимости

implementation 'com.squareup.moshi:moshi:1.6.0'
implementation 'com.squareup.moshi:moshi-kotlin:1.6.0'

Stacktrace

05-29 18:57:56.603 24560-24560/com.example.app E/MyActivity: com.squareup.moshi.JsonDataException: Expected one of [IDLE, IN_PROGRESS, FAILED, SUCCESS, UNKNOWN] but was 2 at path $[0].status
    at com.squareup.moshi.StandardJsonAdapters$EnumJsonAdapter.fromJson(StandardJsonAdapters.java:297)
    at com.squareup.moshi.StandardJsonAdapters$EnumJsonAdapter.fromJson(StandardJsonAdapters.java:266)
    at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
    at com.squareup.moshi.ClassJsonAdapter$FieldBinding.read(ClassJsonAdapter.java:196)
    at com.squareup.moshi.ClassJsonAdapter.fromJson(ClassJsonAdapter.java:158)
    at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
    at com.squareup.moshi.CollectionJsonAdapter.fromJson(CollectionJsonAdapter.java:76)
    at com.squareup.moshi.CollectionJsonAdapter$2.fromJson(CollectionJsonAdapter.java:53)
    at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
    at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:45)
    at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:27)
    ...
...