Можете ли вы заставить плагин JAXB2 Maven создать класс Java из «пустого» элемента? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть XSD-схема со следующим элементом:

<xs:element name="FooResponse" type="commonTypes:Response" />

Когда я запускаю сборку (которая имеет цель xjc для преобразования схемы в источники Java), отдельный файл класса FooResponse.java не создан (возможно, потому что он будет идентичен Response.java. Теперь я знаю, что могу переписать схему следующим образом:

<xs:element name="FooResponse">
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="commonTypes:Request"/>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

и получить искомый результат. Однакосхема автоматически генерируется из инструмента, и я бы предпочел не трогать ее вручную. Есть ли способ настроить плагин для создания исходного файла в этой ситуации?

Мне нужно получить оба Response.java и FooResponse.java созданы, поскольку существуют другие типы, не связанные с FooResponse, которые должны наследоваться от него.

Я попытался создать файл привязки XJB, например:

<jaxb:bindings version="2.0"
               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jaxb:bindings schemaLocation="my_schema.xsd" node="/xs:schema/xs:element[@name='FooResponse']">
            <jaxb:class name="FooResponse"/>
    </jaxb:bindings>

</jaxb:bindings>

Thisработает так, что я получаю Response.java и FooResponse.java, но содержимое FooResponse не совсем то, что я хотел бы:

public class FooResponse
    extends JAXBElement<Response>
{

    protected final static QName NAME = new QName("initech.com/c/m", "FooResponse");

    public FooResponse(Response value) {
        super(NAME, ((Class) Response.class), null, value);
    }

    public FooResponse() {
        super(NAME, ((Class) Response.class), null, null);
    }

}

Это было бы именно то, что я хочу, если бы я получил егорасширять Response напрямую, не оборачивая его в JAXBElement.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...