users@jaxb.java.net

RE: IllegalAnnotationsException when _at_XmlValue and _at_XmlJavaTypeAdapter both present in xjc generated code.

From: Scudieri, Chris \(IT\) <"Scudieri,>
Date: Tue, 19 Dec 2006 13:32:09 -0500

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.