Как включить типы вне сгенерированного пакета в jsonix?

Я исключил некоторые типы XML из поколения jaxb2, поскольку соответствующие классы уже существуют в Java. Поколение отлично работает и классы основаны.

Когда я пытаюсь включить типы в этом руководстве, jsonix ищет классы только в пакете с сгенерированными классами jaxb2. Таким образом, он выглядит сгенерированным.entity.Position вместо класса entity.Position.

...

    <jaxb:bindings node="//xs:complexType[@name='PositionType']">
            <jaxb:class ref="entity.Position"/>
    </jaxb:bindings>
    <jaxb:bindings node="//xs:complexType[@name='MoveType']">
            <jaxb:class ref="entity.Move"/>
    </jaxb:bindings>

    <jsonix:mapping package="entity">
        <jsonix:includes>
            <jsonix:type name="Position"/>
        </jsonix:includes>
    </jsonix:mapping>
...

1 ответ

Решение

Автор Jsonix здесь.

Включает / исключает конфигурацию не то, что вы, вероятно, думаете, что делает. Он просто фильтрует типы или элементы, которые вы хотите включить в ваше отображение. Это позволяет создавать меньшие сопоставления только с теми вещами, которые вам нужны.

Тем не менее, сопоставления генерируются для каждого пространства имен / пакета. Вы не можете помещать типы из разных пакетов в одно отображение. Однако вы можете создать модуль, который будет содержать несколько пакетов. Конфигурация похожа на:

    <jsonix:module name="CSW_2_0_2">
        <jsonix:mapping package="net.opengis.csw.v_2_0_2" name="CSW_2_0_2"/>
        <jsonix:mapping package="org.hisrc.dc.elements.v_1_1" name="DC_1_1"/>
        <jsonix:mapping package="org.hisrc.dc.terms" name="DCT"/>
    </jsonix:module>

Далее вы используете jaxb:class/@ref, Это не очень хорошо для Jsonix, потому что с этим вы говорите: "Меня не волнует модель XML Schema, просто используйте этот класс Java". Таким образом, компилятор схемы (я имею в виду базовый компилятор схемы JAXB XJC) не генерирует соответствующие модели. Короче говоря, Jsonix Schema Compiler не будет компилировать ваши классы Java в отображения XML<->JS. Это только для XML-схем.

Другие вопросы по тегам