Как создать несколько версий классов Java, сгенерированных JAXB? - PullRequest
0 голосов
/ 26 марта 2010

Недавно я сгенерировал две версии классов Java, сгенерированных JAXB. Итак, я получаю два пакета: V1_0 и V2_0

Я заметил, что у меня сгенерирована только одна ObjectFactory. Проблема в том, что эта ObjectFactory относится к определенной версии (здесь она относится к моей версии v1_0).

Итак, вопрос таков: могу ли я настроить JAXB, чтобы разрешить создание одного ObjectFactory для каждой версии?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 25 июля 2010

Если две версии API находятся в одном пространстве имен, это ужасно! У вас будет фабрика объектов из одного раунда поколения, перезаписывающая фабрику объектов, созданную другой (или запрещающую; я забыл, что на самом деле делает xjc). Это также ужасно для клиентов API, так как они не будут знать, с какой версией API они имеют дело (если вы не делаете другие неприятные трюки, которые не следует поощрять; если они находятся в одном и том же пространстве имен, они должны быть тем же API).

Исправление заключается в том, чтобы поместить два API в разные пространства имен, чтобы они генерировались в разных пакетах с разными фабриками объектов. (Также остерегайтесь любого использования опции -p для xjc; это может привести к тому, что вещи попадут в то же пространство имен и приведут вас к таким головным болям при перезаписи.)

0 голосов
/ 29 марта 2010

Одна фабрика объектов для обеих версий? Нет, это невозможно. Вы получаете два набора классов в двух пакетах - невозможно, чтобы одна фабрика объектов обслуживала их обоих.

...