[ 
https://issues.apache.org/jira/browse/JOHNZON-219?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jin Kwon updated JOHNZON-219:
-----------------------------
    Description: 
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.

  was:
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>

        at org.apache.johnzon.jsonb.JohnzonJsonb.fromJson(JohnzonJsonb.java:66)
        at com.github.jinahya.jsonrpc.bind.JsonbTest.test(JsonbTest.java:50)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
        at 
org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125)
        at 
org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:132)
        at 
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:124)
        at 
org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:74)
        at 
org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
        at 
org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104)
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62)
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43)
        at 
org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35)
        at 
org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
        at 
org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198)
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
        at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
        at 
org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
        at 
org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
        at 
org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
        at 
org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
        at 
org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
        at 
org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
        at 
org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
        at 
org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
        at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
        at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
        at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229)
        at 
org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197)
        at 
org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)
        at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)
        at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
        at 
com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
        at 
com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
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.


> 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)

Reply via email to