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 2024/01/28 16:12:00 UTC
[jira] [Commented] (JOHNZON-402) Polymorphism attributes not serialized if @JsonbTypeInfo is not attached to direct parent
[ https://issues.apache.org/jira/browse/JOHNZON-402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17811675#comment-17811675 ]
Romain Manni-Bucau commented on JOHNZON-402:
--------------------------------------------
Agree, we should jusy take care to enable a simple mapping per hierarchy on a parent in direct line - no branch on top - (exception in other cases).
> Polymorphism attributes not serialized if @JsonbTypeInfo is not attached to direct parent
> -----------------------------------------------------------------------------------------
>
> Key: JOHNZON-402
> URL: https://issues.apache.org/jira/browse/JOHNZON-402
> Project: Johnzon
> Issue Type: New Feature
> Components: JSON-B
> Affects Versions: 2.0.0
> Reporter: Markus Jung
> Priority: Minor
>
> After thinking through the polymorphism code again for JONZON-401 I noticed an issue where polymorphism properties aren't taken into account if the @JsonbTypeInfo annotation is not attached to a direct parent of the serialized class.
> Take this example test:
> {code:java}
> public class JsonbMultiLevelPolymorphismTest {
> @Rule
> public JsonbRule jsonb = new JsonbRule();
> @Test
> public void test() {
> ConcreteSomething info = new ConcreteSomething();
> assertEquals("{\"@type\":\"concrete\"}", jsonb.toJson(info));
> }
> @JsonbTypeInfo(
> @JsonbSubtype(alias = "concrete", type = ConcreteSomething.class)
> )
> public static abstract class AbstractTopLevelSomething { }
> public static abstract class AbstractMiddleLevelSomething extends AbstractTopLevelSomething { }
> public static class ConcreteSomething extends AbstractMiddleLevelSomething { }
> } {code}
> Test result:
> {code:java}
> org.junit.ComparisonFailure:
> Expected :{"@type":"concrete"}
> Actual :{} {code}
>
> The spec doesn't mention that @JsonbTypeInfo has to be attached to a direct parent. This also works perfectly fine in yasson, so I see no reason why it should not in johnzon.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)