2010-09-16 13 views
5

Tengo un esquema que es leído por algunas aplicaciones diferentes para la generación de formularios; uno de ellos usa JAXB/XJC para compilar su estructura de clase. El esquema contiene appinfo información de nombres descriptivos de los campos, por ejemplo:JAXB - ¿Puede XJC compilar la información de la aplicación en la estructura de la clase?

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

¿Hay alguna manera de conseguir XJC para compilar esta información en?

+0

¿De qué manera? ¿Cuál es tu resultado deseado en tu ejemplo? – musiKk

+0

Realmente no importa, siempre que pueda acceder a él en tiempo de ejecución desde Java. Por anotación (que podría tomar con reflexión) o por miembro estático parece ser el más fácil. –

Respuesta

5

Puede utilizar el Annotate plugin añadir anotaciones arbitrarias Java en sus clases de esquema derivados. Con este plugin puede administrar una sintaxis como:

<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> 

Un obtendrá algo como:

@Label("Home address") // FQCN is com.acme.foo.Label 
public String getHomeAddress(...) {} 
+0

Excelente, gracias! –

+0

@lexicore: ¿y si NO puedes modificar el esquema porque es provisto por un tercero? –

+0

@Artem Oboturov: puede hacer lo mismo con los archivos de enlace ('* .xjb') sin modificar el esquema. – lexicore

Cuestiones relacionadas