JAXB JXC генерирует схему для перечислений независимо от @XmlTransient - PullRequest
4 голосов
/ 20 октября 2011

Используя задачу муравья создания схемы JXC, я не могу заставить ее игнорировать перечисление. У меня есть несколько перечислений, которые используются внутри для обозначения типа или второстепенных значений конфигурации, которые не имеют отношения к сгенерированному XML.

Я могу исключить поле, используя enum как @XmlTransient, чтобы исключить его из схемы объекта, но дескриптор simpleType все еще генерируется для перечисления!

Пример:

public class CustomerType { 

    @XmlTransient    
    public enum IsolationLevel { ALL, SAME_TYPE, SELECTED }

    @XmlTransient
    private Long id;
    @XmlValue
    private String name;
    @XmlTransient
    private IsolationLevel isolation = IsolationLevel.ALL;
}

Сгенерированная схема:

<xs:simpleType name="isolationLevel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ALL"/>
      <xs:enumeration value="SAME_TYPE"/>
      <xs:enumeration value="SELECTED"/>
    </xs:restriction>
</xs:simpleType>

У кого-нибудь есть идеи, как заставить JXC игнорировать перечисление? Он не используется никаким сопоставленным свойством или полем XML, а само перечисление помечено @XmlTransient - почему оно все еще является частью моей схемы?

1 Ответ

0 голосов
/ 23 февраля 2017

Я тоже наткнулся на это и обновил мой pom до 2.2.11, и он по крайней мере исправлен для этой версии.Ошибка Jira, упомянутая в комментариях, также утверждает, что она была исправлена ​​в 2.2.5.При этом мне пришлось добавить три зависимости, как показано ниже:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.12</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.11</version>
</dependency>
...