36.3. Generating Java Classes for Simple Types
Overview
By default, named simple types do not result in generated types unless they are enumerations. Elements defined using a simple type are mapped to properties of a Java primitive type.
There are instances when you need to have simple types generated into Java classes, such as is when you want to use type substitution.
To instruct the code generators to generate classes for all globally defined simple types, set the
globalBindings
customization element's mapSimpleTypeDef
to true
.
Adding the customization
To instruct the code generators to create Java classes for named simple types add the
globalBinding
element's mapSimpleTypeDef
attribute and set its value to true
.
Example 36.13, “in-Line Customization to Force Generation of Java Classes for SimpleTypes” shows an in-line customization that forces the code generator to generate Java classes for named simple types.
Example 36.13. in-Line Customization to Force Generation of Java Classes for SimpleTypes
<schema targetNamespace="http://widget.com/types/widgetTypes" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"> <annotation> <appinfo> <jaxb:globalBindings mapSimpleTypeDef="true" /> </appinfo> </annotation> ... </schema>
Example 36.14, “Binding File to Force Generation of Constants” shows an external binding file that customizes the generation of simple types.
Example 36.14. Binding File to Force Generation of Constants
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" jaxb:version="2.0"> <jaxb:bindings schemaLocation="types.xsd"> <jaxb:globalBindings mapSimpleTypeDef="true" /> <jaxb:bindings> <jaxb:bindings>
Important
This customization only affects named simple types that are defined in the global scope.
Generated classes
The class generated for a simple type has one property called value. The value property is of the Java type defined by the mappings in Section 32.1, “Primitive Types”. The generated class has a getter and a setter for the value property.
Example 36.16, “Customized Mapping of a Simple Type” shows the Java class generated for the simple type defined in Example 36.15, “Simple Type for Customized Mapping”.
Example 36.15. Simple Type for Customized Mapping
<simpleType name="simpleton"> <restriction base="xsd:string"> <maxLength value="10"/> </restriction> </simpleType>
Example 36.16. Customized Mapping of a Simple Type
@XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "simpleton", propOrder = {"value"}) public class Simpleton { @XmlValue protected String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } }