users@jaxb.java.net

XJC not generating XmlElement annotations w/o a logical pattern

From: Young Matthew (4004) <"Young>
Date: Fri, 20 Aug 2010 19:00:42 +0000

Using latest XJC/JAXB with java 1.5....

Sometimes the XJC tool doesn't generate XmlElement annotations for certain properties without a logical pattern/reason. Below is a snippet of the XML Schema and the resulting class file. Running XJC from the command line.

Anybody else getting this? Not the only class that is missing annotations (several) so it isn't tied to the type.


[XML schema]

....

<xs:simpleType name="createId">
    <xs:annotation>
         <xs:documentation>Creation ID</xs:documentation>
    </xs:annotation>
     <xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="createTimeStamp">
    <xs:annotation>
        <xs:documentation>Time stamp when the object was created</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:dateTime" />
</xs:simpleType>
......

<xs:complexType name="Base" abstract="true">
    <xs:sequence>
        <xs:element name="id" type="pojo:id" maxOccurs="1" minOccurs="1" />
        <xs:element name="name" type="pojo:name" maxOccurs="1" minOccurs="1" />
        <xs:element name="fromTimeStamp" type="pojo:fromTimeStamp" maxOccurs="1" minOccurs="1" />
        <xs:element name="toTimeStamp" type="pojo:toTimeStamp" maxOccurs="1" minOccurs="0" />
        <xs:element name="createId" type="pojo:createId" maxOccurs="1" minOccurs="0" />
        <xs:element name="createTimeStamp" type="pojo:createTimeStamp" maxOccurs="1" minOccurs="1" />
        <xs:element name="updateTimeStamp" type="pojo:updateTimeStamp" maxOccurs="1" minOccurs="1" />
    </xs:sequence>
</xs:complexType>


[Java class]
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Base", propOrder = {
    "id",
    "name",
    "fromTimeStamp",
    "toTimeStamp",
    "createId",
    "createTimeStamp",
    "updateTimeStamp"
})
@XmlSeeAlso({
    RelationType.class,
    Relation.class,
    ElementType.class,
    Element.class
})
public abstract class Base {

    @XmlElement(required = true, type = String.class)
    @XmlJavaTypeAdapter(Adapter4 .class)
    protected Long id;
    @XmlElement(required = true)
    protected String name;
    @XmlElement(required = true, type = String.class)
    @XmlJavaTypeAdapter(Adapter3 .class)
    protected Date fromTimeStamp;
    @XmlElement(type = String.class)
    @XmlJavaTypeAdapter(Adapter3 .class)
    protected Date toTimeStamp;
    protected String createId;
    @XmlElement(required = true, type = String.class)
    @XmlJavaTypeAdapter(Adapter3 .class)
    protected Date createTimeStamp;
    @XmlElement(required = true, type = String.class)
    @XmlJavaTypeAdapter(Adapter3 .class)
    protected Date updateTimeStamp;

.....