users@jaxb.java.net

Re: Accessing enumerations

From: Malachi de AElfweald <malachi_at_eoti.org>
Date: Tue, 18 May 2004 14:15:54 -0700

Is there any plans to move JAXB to use the JDK 1.5 Enums and Generics?

Mal

At 09:35 AM 5/18/2004, Ryan Shoemaker - JavaSoft East wrote:
>Ryan Shoemaker - JavaSoft East wrote:
>
>>Jon Richards wrote:
>>
>>>Hi everyone,
>>>
>>>In our schemas we quite often use enumerated restrictions with string
>>>types. Is there any way of getting to them from the JAXB classes?
>>>
>>
>>Unfortunately not. I filed an RFE a long time ago for this kind of
>>functionality and the report contains some workarounds that might be
>>better than hard coding. Have a look:
>>http://developer.java.sun.com/developer/bugParade/bugs/4897223.html
>
>I probably should have pointed out that the reflection technique requires
>that you customize your schema to generate type safe enums. Something
>like this:
>
><?xml version="1.0"?>
><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
> jxb:version="1.0">
>
> <xsd:element name="StringEnum" type="StringEnumType"/>
>
> <xsd:simpleType name="StringEnumType">
> <xsd:annotation>
> <xsd:appinfo>
> <jxb:typesafeEnumClass/>
> </xsd:appinfo>
> </xsd:annotation>
> <xsd:restriction base="xsd:string">
> <xsd:enumeration value="Nosferatu"/>
> <xsd:enumeration value="Godzilla"/>
> </xsd:restriction>
> </xsd:simpleType>
></xsd:schema>
>
>JAXB doesn't generate the type safe enum by default, so you have to
>explicitly tell jaxb to generate them. In this case, you would get
>
>public class StringEnumType {
>
> public final static java.lang.String _NOSFERATU =
> com.sun.xml.bind.DatatypeConverterImpl.installHook("Nosferatu");
> public final static generated.StringEnumType NOSFERATU =
> new generated.StringEnumType(_NOSFERATU);
>
> public final static java.lang.String _GODZILLA =
> com.sun.xml.bind.DatatypeConverterImpl.installHook("Godzilla");
> public final static generated.StringEnumType GODZILLA =
> new generated.StringEnumType(_GODZILLA);
>
> ...
>}
>
>The enum contains the lexical content from the schema as well as the
>generated value type.
>
>Also, the code in the bug report should work with the inline-customize
>sample app.
>
>Hope that gives you a little more context.
>
>--Ryan
>
>
>>--Ryan
>>
>>>At the moment I'm hard coding static final strings in our code, but of
>>>course if the schema changes I'll have to remember to change the code
>>>and that doesn't seem right!
>>>
>>>Thanks in advance,
>>>
>>>Jon
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
>>For additional commands, e-mail: users-help_at_jaxb.dev.java.net
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
>For additional commands, e-mail: users-help_at_jaxb.dev.java.net
>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
For additional commands, e-mail: users-help_at_jaxb.dev.java.net