В сборке XSD не используется свойство typesafeEnumMember "name" для создания переменной enum - PullRequest
0 голосов
/ 04 марта 2020
<xs:simpleType name="mathEnum">
        <xs:annotation>
            <xs:documentation>some documentation</xs:documentation>
            <xs:appinfo>
                <typesafeEnumClass>
                    <typesafeEnumMember name="MULTIPLY" value="M" />
                    <typesafeEnumMember name="DIVIDE" value="D" />
                </typesafeEnumClass>
            </xs:appinfo>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="M" />
            <xs:enumeration value="D" />
        </xs:restriction>
    </xs:simpleType>

Выше я использую для создания java файл из XSD. После выполнения команды "xj c" я вижу, что ниже генерируется класс.

@XmlType(name = "mathEnum")
@XmlEnum
public enum MathEnum {

    M,
    D;

    public String value() {
        return name();
    }

    public static MathEnum fromValue(String v) {
        return valueOf(v);
    }

}

Если вы видите имя переменной enum, я объявил "MULTIPLY" и "DIVIDE", которые не появились после генерация файла класса. Я хочу, чтобы файл класса генерировался следующим образом.

@XmlType(name = "mathEnum")
@XmlEnum
public enum MathEnum {

    MULTIPLYE("M"),
    DIVIDE("D");

    String value = "";

    private MathEnum(String val) {
        value = val;
    }
    public String getValue() {
        return value;
    }
    public static MathEnum findByValue(String value) {
        if (MULTIPLYE.getValue().equals(value)) {
            return MULTIPLYE;
        }else{
            return DIVIDE;
        }
    }
}

Есть ли способ сделать это? Что-то, что я делаю неправильно? Я новичок в этом.

...