Обеспечение сериализации настраиваемых значений для перечислений через JAXB

В проекте, над которым я работаю, мы используем множество перечислений. Сам объект модели состоит из множества крошечных классов; затем эту модель мы сериализуем в нашу БД как XML через JAXB. Сейчас, мы хотим иметь возможность сериализовать наши значения перечисления, используя возврат определенного метода в перечислении; что дано:

public enum Qualifier {
    FOO("1E", "Foo type document"),
    BAR("2", "Bar object");

    private String code, description;

    public Qualifier(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return this.code;
    }

    public String getDescription() {
        return this.description;
    }
}

и т. д. и т.д. В настоящее время при сериализации в XML мы получаем что-то вроде:

<qualifier>FOO</qualifier>

именно так JAXB обрабатывает это. Однако нам нужно, чтобы значение было возвращением getCode (), и многие из наших перечислений следуют этому соглашению (с соответствующим статическим методом для поиска через код), так что приведенный выше фрагмент XML выглядит так:

<qualifier>1E</qualifier>

вместо. Мы можем аннотировать его с помощью @XmlEnum и @XmlEnumValue , но это слишком утомительно - некоторые перечисления содержат до 30 пронумерованных значений, и редактировать их вручную нецелесообразно. Мы также думаем об использовании вместо этого настраиваемого сериализатора, но я бы не хотел пока идти по этому пути (но если это правильный путь, то у меня нет проблем с этим).

Есть идеи, как?

22
задан jmibanez 11 January 2011 в 11:13
поделиться