Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/UserGuide/MOXy/Simple Values/Special Schema Types/Date and Time Types"
m |
m (→Date and Time Types) |
||
Line 8: | Line 8: | ||
}} | }} | ||
=Date and Time Types= | =Date and Time Types= | ||
+ | You can use the '''@XMLSchemaType''' annotation to customize the XML representation of date and time information. | ||
− | JAXB | + | EclipseLink JAXB (MOXy) also supports the following types which are not covered in the JAXB specification (JSR-222): |
− | + | * java.sql.Date | |
+ | * java.sql.Time | ||
+ | * java.sql.Timestamp | ||
− | + | ==Sample Schema== | |
+ | This example shows how JAXB handles date and time information. In this sample XML schema, notice that the '''date-of-birth''' element is of type '''xsd:date'''. | ||
− | + | <source lang="xml"> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
Line 50: | Line 37: | ||
</xsd:schema> | </xsd:schema> | ||
− | + | </source> | |
+ | ==Generated Model== | ||
+ | - XMLGregorianCalendar Property | ||
− | |||
− | + | By using this XJC call, you can generate a class model from the sample schema. For example: | |
− | + | <tt> | |
xjc -d out -p blog.date date.xsd | xjc -d out -p blog.date date.xsd | ||
+ | </tt> | ||
− | This will | + | This will generate the following '''Customer''' class: |
− | + | <source lang="java"> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
package blog.date; | package blog.date; | ||
Line 124: | Line 78: | ||
} | } | ||
+ | </source> | ||
+ | |||
+ | Notice that: | ||
+ | *The '''dateOfBirth''' property is of type '''javax.xml.datatype.XMLGregorianCalendar''' | ||
+ | *The '''dateOfBirth''' property uses the '''@XmlSchemaType''' annotation. | ||
+ | |||
+ | Some Java data types (like '''XMLGregorianCalendar''') have multiple XML representations (like '''xsd:date''', '''xsd:time''' or '''xsd:dateTime'''). Use '''@XmlSchemaType''' to select the appropriate representation. | ||
+ | |||
User Defined - Date (or Calendar) Property | User Defined - Date (or Calendar) Property | ||
Even though the JAXB XML schema to Java compiler (XJC) generates a property of type XMLGregorianCalendar by default, you are free to use java.util.Date and java.util.Calendar as well. | Even though the JAXB XML schema to Java compiler (XJC) generates a property of type XMLGregorianCalendar by default, you are free to use java.util.Date and java.util.Calendar as well. | ||
− | + | <source lang="java"> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
package blog.date; | package blog.date; | ||
Line 184: | Line 119: | ||
} | } | ||
− | + | </source> | |
EclipseLink JAXB (MOXy) Extension | EclipseLink JAXB (MOXy) Extension | ||
Revision as of 13:37, 5 April 2011
EclipseLink MOXy
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Key API
Date and Time Types
You can use the @XMLSchemaType annotation to customize the XML representation of date and time information.
EclipseLink JAXB (MOXy) also supports the following types which are not covered in the JAXB specification (JSR-222):
- java.sql.Date
- java.sql.Time
- java.sql.Timestamp
Sample Schema
This example shows how JAXB handles date and time information. In this sample XML schema, notice that the date-of-birth element is of type xsd:date.
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="customer"> <xsd:complexType> <xsd:sequence> <xsd:element name="date-of-birth" type="xsd:date" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
Generated Model
- XMLGregorianCalendar Property
By using this XJC call, you can generate a class model from the sample schema. For example:
xjc -d out -p blog.date date.xsd
This will generate the following Customer class:
package blog.date; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.datatype.XMLGregorianCalendar; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = {"dateOfBirth"}) @XmlRootElement(name = "customer") public class Customer { @XmlElement(name = "date-of-birth") @XmlSchemaType(name = "date") protected XMLGregorianCalendar dateOfBirth; public XMLGregorianCalendar getDateOfBirth() { return dateOfBirth; } public void setDateOfBirth(XMLGregorianCalendar value) { this.dateOfBirth = value; } }
Notice that:
- The dateOfBirth property is of type javax.xml.datatype.XMLGregorianCalendar
- The dateOfBirth property uses the @XmlSchemaType annotation.
Some Java data types (like XMLGregorianCalendar) have multiple XML representations (like xsd:date, xsd:time or xsd:dateTime). Use @XmlSchemaType to select the appropriate representation.
User Defined - Date (or Calendar) Property
Even though the JAXB XML schema to Java compiler (XJC) generates a property of type XMLGregorianCalendar by default, you are free to use java.util.Date and java.util.Calendar as well.
package blog.date; import java.util.Date; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "customer") public class Customer { @XmlElement(name = "date-of-birth") @XmlSchemaType(name = "date") protected Date dateOfBirth; public Date getDateOfBirth() { return dateOfBirth; } public void setDateOfBirth(Date value) { this.dateOfBirth = value; } }
EclipseLink JAXB (MOXy) Extension
EclipseLink JAXB (MOXy) also supports the following types which are not covered in the JAXB specification (JSR-222):
* java.sql.Date * java.sql.Time * java.sql.Timestamp