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)