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! :-)