Область видимости XJC в файле привязки XJB - PullRequest
0 голосов
/ 29 августа 2018

Я получил файл связывания XJB, в котором я хочу заменить ВСЕ даты на java.util.Date, и я хотел бы, чтобы один конкретный элемент (с именем 'MyElementName') расширил мой пользовательский класс:

My XJB file:

<jaxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           jaxb:version="2.0">

    <!-- replace JAXBElement with real object where nillable="true" and minOccurs="0" -->
    <jaxb:globalBindings generateElementProperty="false">

        <!-- replace all dates with java.util.Date -->
        <jaxb:javaType xmlType="xsd:dateTime" name="java.util.Date"
                       parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
                       printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
        <jaxb:javaType xmlType="xsd:date" name="java.util.Date"
                       parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
                       printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
        <jaxb:javaType xmlType="xsd:time" name="java.util.Date"
                       parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
                       printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
    </jaxb:globalBindings>

    <!-- Only element with name 'MyElementName' should extend 
    <jaxb:bindings schemaLocation="mySchema.xsd">
      <jaxb:bindings node="//xs:element[@name='MyElementName']">
        <xjc:superClass name="net.test.Whatever"/>
      </jaxb:bindings>
    </jaxb:bindings>

</jaxb:bindings>

Улучшения XJC будут игнорироваться, если они не находятся внутри <globalBindings>. Но тогда все сгенерированные классы расширят мой пользовательский класс, и я не хочу этого.

Есть ли способ указать глобальные привязки вместе с привязками "scoped"?

В здесь упоминается «Глобальная область», «Область схемы», «Область определения» и «Область компонента», и они говорят «определенно, объявления в верхней части пирамиды наследуют и заменяют объявления ниже их».

...