Again not sure if this is a bug or not but since I cannot find a way to
remove Annotations in the XJC plugin framework I've implemented this
patch as a temporary workaround
-----Original Message-----
From: Scudieri, Chris (IT)
Sent: Tuesday, December 19, 2006 10:43 AM
To: users_at_jaxb.dev.java.net
Subject: IllegalAnnotationsException when @XmlValue and
@XmlJavaTypeAdapter both present in xjc generated code.
Usage of baseType is not well documented so I may be outside of the
intention of the Spec.
However what XJC is generating is extremely close to what I am looking
for. I am trying to get an XmlAdapter to marshal/unmarshall the value
of the Property element and have run into the Following issue:
Schema snippet:
<xs:complexType name="Property" >
<xs:annotation><xs:appinfo>
<jaxb:property>
<jaxb:baseType>
<xjc:javaType name="com.test.PropertyValue"
adapter="com.test.PropertyAdapter" />
</jaxb:baseType>
</jaxb:property>
</xs:appinfo></xs:annotation>
<xs:simpleContent>
<xs:extension base="PropertyType">
<xs:attribute name="type" type="PropertyTypes" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Where:
PropertyType is essentially anySimpleType PropertyTypes is a string enum
Generated Property.java:
public class Property {
@XmlValue
@XmlJavaTypeAdapter(PropertyAdapter.class)
protected PropertyValue value;
@XmlAttribute
protected PropertyTypes type;
However attempting to create a context throws an
IllegalAnnotationsException:
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of
IllegalAnnotationExceptions @XmlAttribute/_at_XmlValue need to reference a
Java type that maps to text in XML.
this problem is related to the following location:
at protected com.test.PropertyValue
com.test.generated.Property.value
at com.test.generated.Property
at public com.test.generated.Property
com.test.generated.ObjectFactory.createProperty()
at com.test.generated.ObjectFactory
at
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(Il
legalAnnotationsException.java:66)
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextIm
pl.java:405)
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:
253)
at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:84)
at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:66)
at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:132
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:132)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:285)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
Workaround:
I can remove the @XmlValue annotation and the XmlAdapter works as
documented
--------------------------------------------------------
NOTICE: If received in error, please destroy and notify sender. Sender
does not intend to waive confidentiality or privilege. Use of this email
is prohibited when received in error.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
For additional commands, e-mail: users-help_at_jaxb.dev.java.net
--------------------------------------------------------
NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.