Получая доступ к модели, компилятор xjc использует для генерации java-кода из схемы, без написания собственного плагина

Просто небольшая предыстория: у меня есть файлы wsdl и схемы с большой иерархией, что означает, что в схеме много тегов импорта/включения. У меня есть проект netbeans, и я использовал wsimport для создания клиентского кода. Я успешно вызываю операции веб-службы и получаю данные.

Что мне нужно: я хочу получить доступ к модели, которую компилятор xjc использует для генерации java-кода из схемы. Я хотел бы сделать это без написания собственного плагина, если это возможно. Я хочу использовать эту модель для создания собственного кода с помощью codemodel.

Вопрос в следующем: есть ли способ получить доступ (желательно из моего клиентского проекта, описанного выше) к модели или «наброску» без написания плагина xjc?

Я новичок в java и jaxb, поэтому любые указания и подробные инструкции очень ценятся.


person Marine Kosh    schedule 17.08.2012    source источник


Ответы (1)


Вы можете вызвать компилятор xjc напрямую, используя Ant или Maven. Просто укажите его на схемы, на которые ссылаются. Если вам нужен некоторый контроль над сгенерированным кодом, вы можете посмотреть custom привязка в JAXB.

Чего именно вы пытаетесь достичь?

person davidfmatheson    schedule 17.08.2012
comment
Спасибо, Дэвид! Я не хочу манипулировать сгенерированным кодом. Я хочу перебирать операции, и для каждой операции в wsdl я хочу создать функции для создания экземпляров всех необходимых полей (элементов, атрибутов), и из-за иерархии это касается многих файлов xsd. - person Marine Kosh; 17.08.2012
comment
Я все еще не понимаю. У вас есть wsimport, который генерирует для вас кучу объектов, и у вас есть код, который затем создает экземпляры этих сгенерированных классов и заполняет поля, верно? Вы пытаетесь сделать что-то другое? - person davidfmatheson; 17.08.2012
comment
Да, у меня есть написанный мной код, который создает экземпляры классов и заполняет поля. То, что я пытаюсь сделать, основано на модели, автоматически генерирующей часть того кода, который мне пришлось написать самому. Поэтому, когда другой разработчик использует wsdl/wsimport для создания клиента, он может вызывать мои автоматически сгенерированные функции для создания экземпляров и установки значений по умолчанию. На данный момент мне просто интересно поиграть с моделью, чтобы посмотреть, как она выглядит. Я еще не уверен, что я на правильном пути. - person Marine Kosh; 17.08.2012
comment
Они не могут просто взять ваш заполняющий код из системы управления версиями? В качестве альтернативы вы можете использовать Spring для установки значений по умолчанию для всех сгенерированных bean-компонентов. - person davidfmatheson; 17.08.2012
comment
Спасибо, я думал об использовании Spring для значений по умолчанию. Суть в том, чтобы получить доступ к модели. Когда вы сказали, что вызываете компилятор xjc напрямую, он повторно генерирует весь код, который уже сделал wsimport? - person Marine Kosh; 18.08.2012
comment
Я собираюсь использовать плагин xjc. - person Marine Kosh; 27.08.2012