lars geidel created CXF-5322:
--------------------------------

             Summary: misleading warning for @XmlType without 'propOrder' 
element
                 Key: CXF-5322
                 URL: https://issues.apache.org/jira/browse/CXF-5322
             Project: CXF
          Issue Type: Improvement
          Components: JAXB Databinding
    Affects Versions: 2.7.6
         Environment: JBoss EAP 6.1.1
JDK 6u45
            Reporter: lars geidel
            Priority: Minor


When the @XmlType annotation is used without specifying the propOrder element 
the following warning is logged:
WARNING [org.apache.cxf.jaxb.JAXBSchemaInitializer] propOrder in @XmlType 
doesn't define all schema elements :[]

This warning is misleading and should not appear in that case.

Relevant code of org.apache.cxf.jaxb.JAXBSchemaInitializer:
{code:java}
XmlType xmlTypeAnno = cls.getAnnotation(XmlType.class);
String[] propertyOrder = null;
[...]
if (xmlTypeAnno != null &&  xmlTypeAnno.propOrder().length > 0) {
    propertyOrder = xmlTypeAnno.propOrder();
}
[...]
if (propertyOrder != null && propertyOrder.length == seq.getItems().size()) {
    sortItems(seq, propertyOrder);
} else if (propertyOrder != null && propertyOrder.length != 
seq.getItems().size()) {
    LOG.log(Level.WARNING, "propOrder in @XmlType doesn't define all schema 
elements :" 
        + Arrays.toString(propertyOrder));
}
{code}

If no propOrder element is defined then xmlTypeAnno.propOrder() defaults to 
{""} (see 
http://docs.oracle.com/javaee/7/api/javax/xml/bind/annotation/XmlType.html#propOrder()),
 so xmlTypeAnno.propOrder().length is 1. Since this is not necessarily equals 
seq.getItems().size() the mentioned warning is logged.

Possible patch: the if-elseif-block could be replaced by
{code:java}
if (propertyOrder != null) {
    if (propertyOrder.length == seq.getItems().size())
    {
        sortItems(seq, propertyOrder);
    } else if (propertyOrder.length > 1 || !propertyOrder[0].isEmpty()) {
        LOG.log(Level.WARNING, "propOrder in @XmlType doesn't define all schema 
elements :" 
            + Arrays.toString(propertyOrder));
    }
}
{code}




--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to