I have a bunch of JAXB annotated classes that have a field in common, so I moved that field to a super class, like this
public class Base {
protected SomeType commonField;
}
@XmlRootElement(name = "foo") @XmlType(propOrder = { "commonField", "fooField" })
public class Foo extends Base {
private SomeOtherType fooField;
}
@XmlRootElement(name = "bar") @XmlType(propOrder = { "commonField", "barField" })
public class Bar extends Base {
private SomeOtherType barField;
}
Now whenever I marshall one of Foo
or Bar
I get an IllegalAnnotationException
complaining about commonField
being listed in propOrder
but not present in the class. Removing it from the propOrder
annotation everything works fine, but I thougt I was supposed to list all of the mapped fields. What am I missing?
propOrder
by hand, will break serialization of the subclass. So will adding a serialized field to the superclass. Also, note that the names inpropOrder
are not the names provided by @XmlElement annotations, but instead are the identifiers of Java fields or properties. [That said, this answer was very helpful to me today.] – Exciting