Может ли XJC скомпилировать appinfo в структуру класса? - PullRequest
5 голосов
/ 16 сентября 2010

У меня есть схема, которая читается несколькими различными приложениями для генерации форм;один из них использует JAXB / XJC для компиляции своей структуры классов.Схема содержит информацию appinfo для понятных имен полей, например:

<xs:element name="HomeAddress" type="xs:string">
  <xs:annotation>
    <xs:appinfo>Home address</xs:appinfo>
  </xs:annotation>
</xs:element>

Есть ли способ заставить XJC скомпилировать эту информацию?

Ответы [ 2 ]

6 голосов
/ 21 сентября 2010

Вы можете использовать плагин Annotate для добавления произвольных аннотаций Java в классы, производные от схемы. С помощью этого плагина вы можете управлять синтаксисом вроде:

<xs:element name="HomeAddress" type="xs:string">
  <xs:annotation>
    <xs:appinfo>
      <ann:annotate xmlns:ann="http://annox.dev.java.net/com.acme.foo">
        <my:Label value="Home address"/>
      </ann:annotate>
    </xs:appinfo>
  </xs:annotation>
</xs:element>

И вы получите что-то вроде:

@Label("Home address") // FQCN is com.acme.foo.Label
public String getHomeAddress(...) {}
0 голосов
/ 17 сентября 2010

Мне неизвестен способ сделать это с помощью инструмента XJC, который поставляется с эталонной реализацией JAXB. Тем не менее, XJC позволяет вам создавать собственные плагины, которые могут вам понадобиться:

...