LINUX.ORG.RU

JAXB и Serializable

 ,


0

1

Кто-нибудь знает как прицепить к классу Serializable если класс генерится JAXB?

Суть - есть здоровый xml с описанием и еще один с биндингами. Например, опуская схемы и прочее, это выглядит так

<xsd:element name="testClass">
<xsd:complexType>...

<jxb:bindings ...>
 <jxb:bindings schemaLocation="test.xsd">
  <jxb:bindings node="//xs:element[@name'testClass']">
...

Оно генерит код типа

public class TestClass { ... }

Нужно

public class TestClass implements Serializable { ... }

весь гугель радостно советует запихать <jxb:serializable> либо <xjc:serializable> в globalBindings, но там еще хренова уйма классов, которым Serializable вообще не нужен. Если подсунуть <jxb:serializable> в биндинг конкретному элементу - оно его игнорит. Пытался сделать через inheritance - походу оно сдохло.

Не пинайте, все это добро выбирал не я, и так тошно.

upd: Inheritance не сдох, это maven-jaxb2-plugin в проекте протух. после секса с версиями оно завелось, но все равно через ж. копаю дальше

★★★★★

Последнее исправление: upcFrost (всего исправлений: 1)

xjc вообще треш и угар, с ним часто нереально найти общий язык и проще сдаться. Потому могу посоветовать например вытащить этот класс в отдельный xsd. Остальное генерить из первого xsd.

Ну или забить и сделать свой класс и маппить из сгенерённого в него (руками или например dozer'ом).

Hater ★★
()
Ответ на: комментарий от Hater

Потому могу посоветовать например вытащить этот класс в отдельный xsd. Остальное генерить из первого xsd.

если бы все было так просто. этот класс - это только вершина xml-айсберга с десятком вложенных друг в друга классов. в прошлый раз нашлась нужная аннотация, сейчас хз. уже хочется задушить того кто вообще это все писал

upcFrost ★★★★★
() автор топика

Надо не в globalBindings пихать, а в bindings по xpath по конкретному элементу.

Можешь пример кода, который не работает, попробую глянуть и вникнуть? Когда-то давно возился с xjc, что я там только не генерировал, чуть ли не аннотации к классам и полям.

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

Ок, пример

Сама схема (назовем ее testClass.xsd)

<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="testClass">
 <complexType>
  <sequence>
   <element name="par1" type="int"/>
   <element name="par2" type="int"/>
  </sequence>
 </complexType>
</element>
</schema>

биндинги (bindings.xsd)

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="1.0">
 <jxb:bindings schemaLocation="testClass.xsd">
  <jxb:bindings node="//xs:element[@name='testClass']">
    .... Magic goes in here ....
  </jxb:bindings>
 </jxb:bindings>
</jxb:bindings>

вся эта радость собирается мавеном через maven-jaxb2-plugin

upcFrost ★★★★★
() автор топика
Последнее исправление: upcFrost (всего исправлений: 1)

там еще хренова уйма классов, которым Serializable вообще не нужен

Есть просит что ли?

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.