You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@johnzon.apache.org by "Markus Jung (Jira)" <ji...@apache.org> on 2024/02/10 13:28:00 UTC
[jira] [Assigned] (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:all-tabpanel ]
Markus Jung reassigned JOHNZON-402:
-----------------------------------
Assignee: Markus Jung
> 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
> Assignee: Markus Jung
> Priority: Minor
> Time Spent: 20m
> Remaining Estimate: 0h
>
> 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)