My enum class
@XmlType
@XmlEnum(Integer.class)
public enum Error {
@XmlEnumValue("1")
ENUM_VALUE_1(1, "some string 1", "some string 1"),
@XmlEnumValue("2")
ENUM_VALUE_2(2, "some string 2", "some string 2");
private Error(int errorCode, String msgKey, String message) {
this.errorCode = errorCode;
this.msgKey = msgKey;
this.message = message;
}
}
Generated xsd
<xs:simpleType name="error">
<xs:restriction base="xs:int">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
</xs:restriction>
</xs:simpleType>
binding I am using
<jaxb:bindings schemaLocation="schema.xsd">
<jaxb:bindings node="//xs:simpleType[@name='error']">
<jaxb:typesafeEnumClass ref="packageName.Error" />
</jaxb:bindings>
</jaxb:bindings>
The problem is there is no enum file is getting generated. I am using “maven-jaxb2-plugin” for code generation.
By default a JAXB (JSR-222) implementation will not create a Java enum for XML enumerations that start with numeric values. You can use an external binding file to cause an enum to be generated.
Full Example
UPDATE
In your start from Java classes use case you used the
@XmlEnumValue("1")annotation to map your enum to the desired XML structure.JAXB implementations don’t generate JAXB information into the XML schema, so if someone wants to generate a Java model from the generated schema then a binding file can be used.