[ https://issues.apache.org/jira/browse/JOHNZON-402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Markus Jung resolved JOHNZON-402. --------------------------------- Fix Version/s: 2.1.0 Resolution: Fixed > 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 > Fix For: 2.1.0 > > 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)