Strange annotations
adrian.brock Oct 31, 2005 7:00 PMAnother reason not to use Xerces is that it is broken? :-)
For some reason it thinks that plainValueType has four annotations (it has one):
765 TRACE [XsdBinder] binding complex type {urn:jboss:bean-deployer}plainValueType
765 TRACE [XsdBinder] bound complex type {urn:jboss:bean-deployer}plainValueType
765 TRACE [XsdBinder] {urn:jboss:bean-deployer}plainValueType attributes 1
765 TRACE [XsdBinder] binding attribute class for {urn:jboss:bean-deployer}plainValueType
766 TRACE [XsdBinder] class attribute annotation
772 TRACE [SaxJBossXBParser] startElement enter http://www.w3.org/2001/XMLSchema:annotation
773 TRACE [ObjectModelBuilder] accepted http://www.w3.org/2001/XMLSchema:xsd:annotation
773 TRACE [SaxJBossXBParser] startElement exit http://www.w3.org/2001/XMLSchema:annotation
773 TRACE [SaxJBossXBParser] startElement enter http://www.w3.org/2001/XMLSchema:appinfo
773 TRACE [ObjectModelBuilder] accepted http://www.w3.org/2001/XMLSchema:xsd:appinfo
773 TRACE [SaxJBossXBParser] startElement exit http://www.w3.org/2001/XMLSchema:appinfo
773 TRACE [SaxJBossXBParser] startElement enter http://www.jboss.org/xml/ns/jbxb:property
773 TRACE [ObjectModelBuilder] ignored http://www.jboss.org/xml/ns/jbxb:jbxb:property
773 TRACE [SaxJBossXBParser] startElement exit http://www.jboss.org/xml/ns/jbxb:property
773 TRACE [SaxJBossXBParser] endElement enter http://www.jboss.org/xml/ns/jbxb:property
773 TRACE [SaxJBossXBParser] endElement exit http://www.jboss.org/xml/ns/jbxb:property
774 TRACE [SaxJBossXBParser] endElement enter http://www.w3.org/2001/XMLSchema:appinfo
774 TRACE [SaxJBossXBParser] endElement exit http://www.w3.org/2001/XMLSchema:appinfo
774 TRACE [SaxJBossXBParser] endElement enter http://www.w3.org/2001/XMLSchema:annotation
774 TRACE [SaxJBossXBParser] endElement exit http://www.w3.org/2001/XMLSchema:annotation
774 TRACE [XsdBinder] bound attribute class property=type, collectionType=null
Why 4?
774 TRACE [XsdBinder] {urn:jboss:bean-deployer}plainValueType annotations 4
782 TRACE [SaxJBossXBParser] startElement enter http://www.w3.org/2001/XMLSchema:annotation
782 TRACE [ObjectModelBuilder] accepted http://www.w3.org/2001/XMLSchema:xsd:annotation
782 TRACE [SaxJBossXBParser] startElement exit http://www.w3.org/2001/XMLSchema:annotation
782 TRACE [SaxJBossXBParser] startElement enter http://www.w3.org/2001/XMLSchema:documentation
782 TRACE [ObjectModelBuilder] ignored http://www.w3.org/2001/XMLSchema:xsd:documentation
782 TRACE [SaxJBossXBParser] startElement exit http://www.w3.org/2001/XMLSchema:documentation
783 TRACE [SaxJBossXBParser] endElement enter http://www.w3.org/2001/XMLSchema:documentation
783 TRACE [SaxJBossXBParser] endElement exit http://www.w3.org/2001/XMLSchema:documentation
784 TRACE [SaxJBossXBParser] startElement enter http://www.w3.org/2001/XMLSchema:appinfo
784 TRACE [ObjectModelBuilder] accepted http://www.w3.org/2001/XMLSchema:xsd:appinfo
784 TRACE [SaxJBossXBParser] startElement exit http://www.w3.org/2001/XMLSchema:appinfo
784 TRACE [SaxJBossXBParser] startElement enter http://www.jboss.org/xml/ns/jbxb:class
784 TRACE [ObjectModelBuilder] accepted http://www.jboss.org/xml/ns/jbxb:jbxb:class
784 TRACE [SaxJBossXBParser] startElement exit http://www.jboss.org/xml/ns/jbxb:class
784 TRACE [SaxJBossXBParser] endElement enter http://www.jboss.org/xml/ns/jbxb:class
784 TRACE [SaxJBossXBParser] endElement exit http://www.jboss.org/xml/ns/jbxb:class
784 TRACE [SaxJBossXBParser] startElement enter http://www.jboss.org/xml/ns/jbxb:characters
785 TRACE [ObjectModelBuilder] accepted http://www.jboss.org/xml/ns/jbxb:jbxb:characters
785 TRACE [SaxJBossXBParser] startElement exit http://www.jboss.org/xml/ns/jbxb:characters
785 TRACE [SaxJBossXBParser] startElement enter http://www.jboss.org/xml/ns/jbxb:property
785 TRACE [ObjectModelBuilder] ignored http://www.jboss.org/xml/ns/jbxb:jbxb:property
785 TRACE [SaxJBossXBParser] startElement exit http://www.jboss.org/xml/ns/jbxb:property
785 TRACE [SaxJBossXBParser] endElement enter http://www.jboss.org/xml/ns/jbxb:property
785 TRACE [SaxJBossXBParser] endElement exit http://www.jboss.org/xml/ns/jbxb:property
785 TRACE [SaxJBossXBParser] startElement enter http://www.jboss.org/xml/ns/jbxb:value
785 TRACE [ObjectModelBuilder] accepted http://www.jboss.org/xml/ns/jbxb:jbxb:value
785 TRACE [SaxJBossXBParser] startElement exit http://www.jboss.org/xml/ns/jbxb:value
786 TRACE [SaxJBossXBParser] endElement enter http://www.jboss.org/xml/ns/jbxb:value
786 TRACE [SaxJBossXBParser] endElement exit http://www.jboss.org/xml/ns/jbxb:value
786 TRACE [SaxJBossXBParser] endElement enter http://www.jboss.org/xml/ns/jbxb:characters
786 TRACE [SaxJBossXBParser] endElement exit http://www.jboss.org/xml/ns/jbxb:characters
786 TRACE [SaxJBossXBParser] endElement enter http://www.w3.org/2001/XMLSchema:appinfo
786 TRACE [SaxJBossXBParser] endElement exit http://www.w3.org/2001/XMLSchema:appinfo
786 TRACE [SaxJBossXBParser] endElement enter http://www.w3.org/2001/XMLSchema:annotation
786 TRACE [SaxJBossXBParser] endElement exit http://www.w3.org/2001/XMLSchema:annotation
A plainValueType is not annotated to use AbstractParameterMetaData!!!!
786 TRACE [XsdBinder] complex type plainValueType: impl=org.jboss.test.xml.pojoserver.metadata.AbstractParameterMetaData
787 TRACE [XsdBinder] complex type plainValueType: characters bound to value
787 TRACE [XsdBinder] complex type plainValueType: characters unmarshalMethod=org.jboss.test.xml.pojoserver.metadata.DataTypeConverter.unmar
shalStringValue, marshalMethod=null
The annotations appear to be accumulating from derived types later in the xsd?
Except it is not that simple because I don't see all annotations from all derived
types (later or otherwise) and a simple test *doesn't* reproduce the problem.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:xerces:bug"
xmlns="urn:xerces:bug"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0"
>
<xsd:complexType name="baseType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
baseType
]]>
</xsd:documentation>
</xsd:annotation>
</xsd:complexType>
<xsd:complexType name="derivedType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
derivedType
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="baseType"/>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
String name = "xml/xerces-bug.xsd";
URL xsdUrl = Thread.currentThread().getContextClassLoader().getResource(name);
DefaultSchemaResolver resolver = new DefaultSchemaResolver();
resolver.setBaseURI(xsdUrl.toString());
XSImplementation impl = getXSImplementation();
XSLoader schemaLoader = impl.createXSLoader(null);
setResourceResolver(schemaLoader, resolver);
setDOMErrorHandler(schemaLoader);
XSModel model = schemaLoader.loadURI(xsdUrl.toString());
XSNamedMap types = model.getComponents(XSConstants.TYPE_DEFINITION);
for(int i = 0; i < types.getLength(); ++i)
{
XSTypeDefinition type = (XSTypeDefinition)types.item(i);
if(!Constants.NS_XML_SCHEMA.equals(type.getNamespace()))
{
if (type.getTypeCategory() == XSTypeDefinition.COMPLEX_TYPE)
{
XSComplexTypeDefinition typeDef = (XSComplexTypeDefinition) type;
XSObjectList annotations = typeDef.getAnnotations();
assertEquals(1, annotations.getLength());
}
}
}
I need a second pair of eyes! :-)