Skip to main content
Jump to: navigation, search

EclipseLink/UserGuide/MOXy/Simple Values/Enums

< EclipseLink‎ | UserGuide‎ | MOXy‎ | Simple Values
Revision as of 16:02, 14 January 2011 by (Talk | contribs) (Mapping enum constant name)

EclipseLink MOXy

Mailing ListForumsIRCmattermost
OpenHelp WantedBug Day
Browse Source

Mapping Enums

Java enums can be mapped to XML using the @XmlEnum and @XmlEnumValue annotations.

Mapping enum constant name

The following schema demonstrates an XML enumeration:

<xs:simpleType name="CustomerType">
   <xs:restriction base="xs:string"/>
      <xs:enumeration value="PROMO_CUSTOMER"/>
      <xs:enumeration value="NEW_CUSTOMER"/>
      <xs:enumeration value="VIP"/>
      <xs:enumeration value="NORMAL"/>

If your enums constant names themselves are sufficient for the XML representation, you can simply use the @XmlEnum annotation:

public class Customer {
   private CustomerType type = CustomerType.NEW_CUSTOMER;
   public enum CustomerType { PROMO_CUSTOMER, NEW_CUSTOMER, VIP, NORMAL }
public enum CustomerType { PROMO_CUSTOMER, NEW_CUSTOMER, VIP, NORMAL }

When marshalled to XML, an Person would look like this:

<xs:simpleType name="Card">
   <xs:restriction base="xs:string"/>
      <xs:enumeration value="CLUBS"/>
      <xs:enumeration value="DIAMONDS"/>
      <xs:enumeration value="HEARTS"/>
      <xs:enumeration value="SPADES"/>

Mapping enum constant name(value)

This code:

     public enum Coin { 
         @XmlEnumValue("1") PENNY(1),
         @XmlEnumValue("5") NICKEL(5),
         @XmlEnumValue("10") DIME(10),
         @XmlEnumValue("25") QUARTER(25) }

will generate the following XML schema:

     <xs:simpleType name="Coin">
       <xs:restriction base="xs:int">
         <xs:enumeration value="1"/>
         <xs:enumeration value="5"/>
         <xs:enumeration value="10"/>
         <xs:enumeration value="25"/>

Version: 2.2.0 Draft
Other versions...

Back to the top