Миграция с JAXB 1.0 на JAXB 2.2.4 - PullRequest
       6

Миграция с JAXB 1.0 на JAXB 2.2.4

1 голос
/ 26 декабря 2011

Я пытаюсь перенести приложение из старой версии 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

Спасибо за помощь!

...