'jaxb2-basics and inheritance
I am successfully using jaxb2-basics for inheritance support. I am trying to add some more inheritance but cannot figure out how to do that in a specific situation. I have this XSD fragment:
<xsd:complexType name="hbm-any-mapping">
<xsd:element name="discriminator">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="type" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="column" type="orm:column" minOccurs="0" maxOccurs="1" />
<xsd:element name="mapping" type="orm:hbm-any-discriminator-value-mapping" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:complexType>
In my XJC binding I had this originally, and it works:
<bindings node="//xsd:complexType[@name='hbm-any-mapping']">
<inheritance:implements>...</inheritance:implements>
</bindings>
<bindings node="//xsd:complexType[@name='hbm-any-discriminator-value-mapping']">
<inheritance:implements>...</inheritance:implements>
<property name="CorrespondingEntityName"/>
<bindings node=".//xsd:attribute[@name='value']">
<property name="DiscriminatorValue"/>
</bindings>
</bindings>
Now I am trying to apply interfaces to the mapping for discriminator and its sub-nodes. I tried this:
<bindings node="//xsd:complexType[@name='hbm-any-mapping']">
<inheritance:implements>...</inheritance:implements>
<bindings node=".//xsd:element[@name='discriminator']">
<inheritance:implements>...</inheritance:implements>
<bindings node=".//xsd:element[@name='mapping']">
<inheritance:implements>...</inheritance:implements>
<property name="valueMappings"/>
</bindings>
</bindings>
</bindings>
But that does not work. I don't get an error, but the inheritance is not applied for discriminator nor is the property naming for mapping.
Any pointers?
Thanks!
Solution 1:[1]
I broke them out into separate, named complexType definitions and applied the inheritance by selecting those complexTypes. It works.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Steve Ebersole |
