Hi Ivan It looks like a JAXB issue to me. I don't understand why referencing the adapter from a package-info.java for serializing the Date leads to that exception - CXF JAXBElementProvider is not involved at that stage. With JAX-WS, this customization (at the schema level) actually leads to adapters being generated and declarations added to the fields... The fact that the adapter is not activated when DateField is a list member seems like a bug to me, or may be you need to annotate the List field itself, not really sure
Cheers, Sergey On Wed, Apr 13, 2011 at 9:12 AM, Ivan Vitoria Sanchez <[email protected] > wrote: > Hi Sergey, > > > > Adding the adapter to the DateField class works if I send this class as a > root of my payload. However, if other class has a DateField within a List > (this is my real scenario) the adapter is not activated. If I add the > adapter either to the package level or the field/property level, a > JAXBException is thrown: > > > > Payload: JAXBException occurred : unexpected element (uri:"", > local:"priority"). Expected elements are <{}genericBean>. unexpected element > (uri:"", local:"priority"). Expected elements are <{}genericBean>. > > > > This is the payload, which works with XMLGregorioanCalendarImpl if I don’t > annotate any field/property with the adapter: > > > > <?xml version="1.0" encoding="utf-8" ?> > > <priority xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs=" > http://www.w3.org/2001/XMLSchema"> > > <fieldList> > > <field xsi:type="dateField"> > > <maxValue>2011-04-12T15:51:37.489+02:00</maxValue> > > <value xsi:type="xs:dateTime">2011-04-12T15:51:37.977+02:00</value> > > </field> > > </fieldList> > > </priority> > > > > Thanks for your patience… :P > > > > Cheers! > > > > Ivan > > > > *¡**De:* Sergey Beryozkin [mailto:[email protected]] > *Enviado el:* martes, 12 de abril de 2011 16:27 > *Para:* Ivan Vitoria Sanchez > *CC:* [email protected] > > *Asunto:* Re: Using Date instead of XmlGregorianCalendarImpl > > > > Hi Ivan > > I think you should then add the adapter to the DateField class itself, to > the maxValue field, or add it to package-info.java, that should fix it > > thanks, Sergey > > On Tue, Apr 12, 2011 at 3:09 PM, Ivan Vitoria Sanchez < > [email protected]> wrote: > > Hi Sergey, > > > > It’s the same scenario that you have seen before in other JIRAs. At this > time, I’m trying to put/post data. There is no problem if my POJO (annotated > with @XmlRootElement) has Date attributes: > > > > <workOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <completionDate>2015-02-27T17:08:46.300+01:00</completionDate> > > <!-- other tags omitted --> > > </workOrder> > > > > The problem comes when I’ve this kind of entity: > > > > public abstract class InputField<T> extends GenericBean<InputField<T>> > > { > > T value; > > // getter & setter omitted > > } > > > > public class DateField extends InputField<Date> > > { > > private Date maxValue; > > // getter & setter omitted > > } > > > > And my XML looks like this: > > > > <dateField xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <maxValue>2011-04-12T15:51:37.489+02:00</maxValue> > > <value xsi:type="xs:dateTime">2011-04-12T15:51:37.977+02:00</value> > > </dateField> > > > > It seems as if the Java instance becomes > InputField<XMLGregorianCalendarImpl> instead of DateField. > > > > Hope this helps! > > > > Cheers, > > > > Ivan > > > > *De:* Sergey Beryozkin [mailto:[email protected]] > *Enviado el:* martes, 12 de abril de 2011 15:16 > > > *Para:* [email protected] > > *CC:* Ivan Vitoria Sanchez > > > *Asunto:* Re: Using Date instead of XmlGregorianCalendarImpl > > > > Hi Ivan > > On Mon, Apr 11, 2011 at 3:19 PM, Ivan Vitoria Sanchez < > [email protected]> wrote: > > Hi Sergey, > > The problem is that my method returns T, which is resolved by > XMLGregorianCalendar instead of Date. > > Is this method a JAX-RS resource method ? Or is it part of the JAXB bean > class ? > I don't think returning a Date directly from a resource method would work > with JAXBElementProvider > > Adding a @XmlJavaTypeAdapter to the method with a custom XmlAdapter causes > a > JAXBException (unexpected element). > > Can you provide more info please ? > > thanks, Sergey > > > Ivan > > > -----Mensaje original----- > De: Sergey Beryozkin [mailto:[email protected]] > Enviado el: lunes, 11 de abril de 2011 12:45 > Para: [email protected] > Asunto: Re: Using Date instead of XmlGregorianCalendarImpl > > > Hi Ivan > > You have to add an adapter, please see > > http://blogs.sun.com/CoreJavaTechTips/entry/exchanging_data_with_xml_and > > for an example. > > JAXBElementProvider won't check package-level adapters, at the moment > you'll > probably need to add it to a method returning a Date. I'll see what has be > improved for package-level adapters be checked too > > Cheers, Sergey > > On Mon, Apr 11, 2011 at 9:25 AM, Ivan Vitoria Sanchez < > [email protected] > > wrote: > > > Hello, > > > > > > > > Is there any way to configure (via Spring) the JAXB provider in order to > > use > > "Date" instead of "XmlGregorianCalendarImpl" in the JAX-RS server? I'm > > having XmlGregorianCalendarImpl instances when using a class which extend > > from a generic type class and specifying Date as the type in my subclass. > > > > > > > > Many thanks, > > > > > > > > Ivan > > > > > > > > > > > > > -- > Sergey Beryozkin > > Application Integration Division of Talend <http://www.talend.com> > http://sberyozkin.blogspot.com > > > -- Sergey Beryozkin Application Integration Division of Talend <http://www.talend.com> http://sberyozkin.blogspot.com
