By default, the code generators map attributes defined as having a fixed value to normal properties. When using schema validation, FUSE Services Framework can enforce the schema definition. However, using schema validation increases message processing time.
Another way to map attributes that have fixed values to Java is to map them to Java constants. You can instruct the code generator to map fixed value attributes to Java constants using the globalBindings customization element. You can also customize the mapping of fixed value attributes to Java constants at a more localized level using the property element.
You can alter this behavior by adding the globalBinding element's fixedAttributeAsConstantProperty attribute. Setting this attribute to true instructs the code generator to map any attribute defined using fixed attribute to a Java constant.
Example 16.21 shows an in-line customization that forces the code generator to generate constants for attributes with fixed values.
Example 16.21. in-Line Customization to Force Generation of Constants
<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 fixedAttributeAsConstantProperty="true" />
</appinfo>
</annotation>
...
</schema>Example 16.22 shows an external binding file that customizes the generation of fixed attributes.
Example 16.22. 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 fixedAttributeAsConstantProperty="true" />
<jaxb:bindings>
<jaxb:bindings>You can customize attribute mapping on a per-attribute basis using the property element's fixedAttributeAsConstantProperty attribute. Setting this attribute to true instructs the code generator to map any attribute defined using fixed attribute to a Java constant.
Example 16.23 shows an in-line customization that forces the code generator to generate constants for a single attribute with a fixed value.
Example 16.23. In-Line Customization to Force Generation of Constants
<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">
<complexType name="widgetAttr">
<sequence>
...
</sequence>
<attribute name="fixer" type="xsd:int" fixed="7">
<annotation>
<appinfo>
<jaxb:property fixedAttributeAsConstantProperty="true" />
</appinfo>
</annotation>
</attribute>
</complexType>
...
</schema>Example 16.24 shows an external binding file that customizes the generation of a fixed attribute.
Example 16.24. 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:bindings node="xsd:complexType[@name='widgetAttr']">
<jaxb:bindings node="xsd:attribute[@name='fixer']">
<jaxb:property fixedAttributeAsConstantProperty="true" />
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
<jaxb:bindings>In the default mapping, all attributes are mapped to standard Java properties with getter and setter methods. When this
customization is applied to an attribute defined using the fixed attribute, the attribute is mapped to a
Java constant, as shown in Example 16.25.
Example 16.25. Mapping of a Fixed Value Attribute to a Java Constant
@XmlAttribute public final statictypeNAME=value;
type is determined by mapping the base type of the attribute to a Java type using the
mappings described in Primitive Types.
NAME is determined by converting the value of the
attribute element's name attribute to all capital letters.
value is determined by the value of the attribute element's
fixed attribute.
For example, the attribute defined in Example 16.23 is mapped as shown in Example 16.26.
Example 16.26. Fixed Value Attribute Mapped to a Java Constant
@XmlRootElement(name = "widgetAttr")
public class WidgetAttr {
...
@XmlAttribute
public final static int FIXER = 7;
...
}