Я пытаюсь перенести приложение из старой версии jaxb в последнюю версию (2.2.4)
Это разница в генерации перечислений.
Сгенерированный код из старой версии
public class Type {
private final static java.util.Map valueMap = new java.util.HashMap();
public final static java.lang.String _ABC_4 = com.sun.xml.bind.DatatypeConverterImpl.installHook("ABC-4");
public final static com.company.proj.xml.sysTypes.Type ABC_4 = new com.company.proj.xml.sysTypes.Type (_ABC_4);
public final static java.lang.String _ABC_10 = com.sun.xml.bind.DatatypeConverterImpl.installHook("ABC-10");
public final static com.company.proj.xml.sysTypes.Type ABC_10 = new com.company.proj.xml.sysTypes.Type (_ABC_10);
private final java.lang.String lexicalValue;
private final java.lang.String value;
// other code..
}
Новый код
@XmlType(name = "Type")
@XmlEnum
public enum Type {
@XmlEnumValue("ABC-4")
ABC___4("ABC-4"),
@XmlEnumValue("XTC-10")
ABC___10("ABC-10");
private final String value;
// some other code
}
Проблема заключается в разнице имен (ABC_4 и ABC___4) в разных версиях. Есть ли способ генерировать идентичные имена? Также есть способ генерировать строковые члены, такие как _ABC_4 и т. Д., Который не генерируется в более новой версии jaxb Проблема заключается в огромном количестве изменений кода, которые делают практически невозможным перенос проекта.
Другое отличие состоит в том, что ранее jaxb использовался для генерации интерфейса и файла класса Impl. Теперь в более новой версии он генерирует только файл класса.
Я узнал, что это возможно благодаря
<jxb:bindings version="2.1"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb">
<jxb:globalBindings generateValueClass="false" />
</jxb:bindings>
http://jaxb.java.net/guide/Migrating_JAXB_1_0_applications_to_JAXB_2_x.html
Спасибо за помощь!