kamikat / moshi-jsonapi

JSON API v1.0 Specification in Moshi.
MIT License
156 stars 34 forks source link

Instantiate Resource class with private/package access level #40

Closed kamikat closed 7 years ago

kamikat commented 7 years ago

Deserialize fails with a private/package level.

public class ApiRetrofitFactory {
    @JsonApi(type = "holder")
    private static class Holder extends Resource { }

    public void test() throws IOException {
        Moshi moshi = new Moshi.Builder()
                .add(ResourceAdapterFactory.builder().add(Holder.class).build())
                .build();
        moshi.adapter(Types.newParameterizedType(Document.class, Holder.class))
                .fromJson("{\"data\":{\"type\":\"holder\",\"id\":\"1\"}}");
    }
}

Stacktrace:

java.lang.IllegalAccessException: Class moe.banana.jsonapi2.ResourceAdapter can not access a member of class com.example.app.services.ApiRetrofitFactory$Holder with modifiers "private"
    at moe.banana.jsonapi2.ResourceAdapter.fromJson(ResourceAdapter.java:54)
    at moe.banana.jsonapi2.ResourceAdapter.fromJson(ResourceAdapter.java:10)
    at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:33)
    at moe.banana.jsonapi2.ResourceAdapterFactory$GenericAdapter.fromJson(ResourceAdapterFactory.java:199)
    at moe.banana.jsonapi2.ResourceAdapterFactory$GenericAdapter.fromJson(ResourceAdapterFactory.java:176)
    at moe.banana.jsonapi2.ResourceAdapterFactory$DocumentAdapter.fromJson(ResourceAdapterFactory.java:93)
    at moe.banana.jsonapi2.ResourceAdapterFactory$DocumentAdapter.fromJson(ResourceAdapterFactory.java:51)
    at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:33)
        ...