cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bruno Dusausoy <bruno.dusau...@yp5.be>
Subject Re: JAXB bindings and xs:date to java.util.Date conversion
Date Wed, 28 Jul 2010 17:33:18 GMT
On 07/27/2010 11:30 PM, Glen Mazza wrote:
>
> Here's some more info, apparently JAXB requires it (union regulations, I
> guess).  But you can apparently change the package name (possibly the class
> name too) if you wish:
> [1] http://forums.java.net/jive/message.jspa?messageID=210403
>
Ok, I've read that thread and all *seems* - I'm precautious now ;) - to 
work fine : xsd:dateTime and xsd:date are replaced by java.util.Date.

So, FYI, what I did in the end is :

-= jaxb-binding.xml =-

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.0"
                xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
                xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
                xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <jaxb:globalBindings localScoping="nested"
                          collectionType="java.util.ArrayList"
                          generateValueClass="true">
         <xjc:javaType name="java.util.Date" xmlType="xs:dateTime" 
adapter="be.ucm.career.converter.jaxb.DateTimeAdapter"/>
         <xjc:javaType name="java.util.Date" xmlType="xs:date" 
adapter="be.ucm.career.converter.jaxb.DateAdapter"/>
         <xjc:serializable uid="2"/>
     </jaxb:globalBindings>
</jaxb:bindings>

And created two Adapters (the ones that have been generated, but renamed 
and now "owned" by my code, as Kohsuje says), calling CXF's code :

-= DateTimeAdapter =-

public class DateTimeAdapter extends XmlAdapter<String, Date> {

     public Date unmarshal(String value) {
         return 
(org.apache.cxf.tools.common.DataTypeAdapter.parseDateTime(value));
     }

     public String marshal(Date value) {
         return 
(org.apache.cxf.tools.common.DataTypeAdapter.printDateTime(value));
     }
}

-= DateAdapter =-

public class DateAdapter extends XmlAdapter<String, Date> {

     public Date unmarshal(String value) {
         return 
(org.apache.cxf.tools.common.DataTypeAdapter.parseDate(value));
     }

     public String marshal(Date value) {
         return 
(org.apache.cxf.tools.common.DataTypeAdapter.printDate(value));
     }
}

And the generated classes now use the annotation :

     @XmlElement(name = "CreationDate", required = true, type = 
String.class)
     @XmlJavaTypeAdapter(DateAdapter.class)
     @XmlSchemaType(name = "date")
     protected Date creationDate;
     @XmlElement(name = "LastUpdateDate", type = String.class)
     @XmlJavaTypeAdapter(DateAdapter.class)
     @XmlSchemaType(name = "date")
     protected Date lastUpdateDate;

for example.

So in the end I haven't used the elements showed at wsdl2java help page.

> Also, middle bullet in the "Other Notes" section of Item #2 here:
> [2]
> http://www.jroller.com/gmazza/entry/customizing_jaxb_artifacts#BindingFile
>
> You may need to use the xjc:javaType instead of jaxb:javaType, as Kohsuke
> wrote in [1] above.
>
> Glen

Thanks for your patience, I really was confused but I fanally made it 
thanks to you.

Regards.

-- 
Bruno Dusausoy
YP5 Software
--
Pensez environnement : limitez l'impression de ce mail.
Please don't print this e-mail unless you really need to.

Mime
View raw message