You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@johnzon.apache.org by "Romain Manni-Bucau (JIRA)" <ji...@apache.org> on 2019/07/01 09:17:00 UTC
[jira] [Commented] (JOHNZON-219) A null classMapping for inner
class with fields.
[ https://issues.apache.org/jira/browse/JOHNZON-219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16876040#comment-16876040 ]
Romain Manni-Bucau commented on JOHNZON-219:
--------------------------------------------
Hi,
the 2 generics level is the issue there,
if you move to a single one it works well:
{code}
public static class SomeVoidError extends Some.SomeError<Void> {}
public static class VoidSome extends Some<Void, SomeVoidError, Void> {}
// final Some<Void, ? extends Some.SomeError<Void>, Void> value = jsonb.fromJson(a, VoidSome.class);
{code}
Not sure it is linked to any property in particular
> A null classMapping for inner class with fields.
> ------------------------------------------------
>
> Key: JOHNZON-219
> URL: https://issues.apache.org/jira/browse/JOHNZON-219
> Project: Johnzon
> Issue Type: Bug
> Components: JSON-B
> Affects Versions: 1.1.12
> Reporter: Jin Kwon
> Priority: Major
>
> I'm sorry I can't find any good words for the issue.
> With following code,
> {code:java}
> public static class Some<T, U extends Some.SomeError<?>, V> {
> public static class SomeError<W> {
> @Setter
> @Getter
> private int code;
> @Setter
> @Getter
> private W data;
> }
> @Setter
> @Getter
> private T t;
> @Setter
> @Getter
> private U u;
> @Setter
> @Getter
> private V v;
> }
> public static class VoidSome extends Some<Void, Some.SomeError<Void>, Void> {
> }
> @Test
> void test() throws IOException {
> final String a = "{\"t\": null, \"u\": {\"code\":1}, \"v\": null}";
> final String b = "{\"t\": null, \"u\": null, \"v\": null}";
> //final Some<Void, Some.SomeError<Void>, Void> value = JSONB.fromJson(b, VoidSome.class);
> final Some<Void, Some.SomeError<Void>, Void> value = JSONB.fromJson(a, VoidSome.class);
> log.debug("value: {}", value);
> }
> {code}
> I got,
> {code}
> javax.json.bind.JsonbException: Can't map com.github.jinahya.jsonrpc.bind.JsonbTest$Some$SomeError<java.lang.Void>
> Caused by: org.apache.johnzon.mapper.MapperException: Can't map com.github.jinahya.jsonrpc.bind.JsonbTest$Some$SomeError<java.lang.Void>
> at org.apache.johnzon.mapper.MappingParserImpl.buildObject(MappingParserImpl.java:277)
> at org.apache.johnzon.mapper.MappingParserImpl.toObject(MappingParserImpl.java:537)
> at org.apache.johnzon.mapper.MappingParserImpl.toValue(MappingParserImpl.java:736)
> at org.apache.johnzon.mapper.MappingParserImpl.buildObject(MappingParserImpl.java:338)
> at org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:141)
> at org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:133)
> at org.apache.johnzon.mapper.MappingParserImpl.readObject(MappingParserImpl.java:125)
> at org.apache.johnzon.mapper.Mapper.mapObject(Mapper.java:328)
> at org.apache.johnzon.mapper.Mapper.readObject(Mapper.java:267)
> at org.apache.johnzon.mapper.Mapper.readObject(Mapper.java:262)
> at org.apache.johnzon.jsonb.JohnzonJsonb.fromJson(JohnzonJsonb.java:60)
> ... 64 more
> {code}
> Weird somehow,
> When I remove {{code}} property and use {{b}} instead, it works.
> I tried to debug the code and I failed.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)