Esquema JAXB para Java Nombre diferente de XmlRootElement y nombre de clase
Tengo un esquema xsd a partir del cual estoy generando algunas clases de Java. Estoy usando jaxb para la generación.
Quiero poder generar una clase anotada con@XmlRootElement
, pero quiero que la propiedad de nombre @XmlRootElement sea diferente del nombre de la clase generada.
En mi xsd estoy definiendo lo siguiente:
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
....
</xs:sequence>
</xs:complexType>
</xs:element>
Este fragmento de código genera la siguiente clase java:
@XmlRootElement(name = "customer")
public class Customer {
...
}
El nombre de propiedad de@XmlRootElement
es el mismo que el nombre de la clase generada. Quiero que el nombre de clase generado seaCustomerReques
t.
He intentado usar eljaxb:class
definición para cambiar el nombre de la clase. De hecho, esta opción cambia el nombre de la clase pero elimina el@XmlRootElement
anotación, y necesito que esté presente.
El siguiente xsd:
<xs:element name="customer">
<xs:complexType>
<xs:annotation>
<xs:appinfo>
<jaxb:class name="CustomerRequest"/>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
Genera esta clase:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "customer", propOrder = {
})
public class CustomerRequest {
}
¿Cómo puedo hacer el nombre de propiedad de la@XmlRootElement
anotación diferente del nombre de clase generado sin perder la anotación?
Actualización de la solución: El usuario Xstian propuso la solución correcta utilizando enlaces externos. Solo como referencia adicional, actualizaré mi propia publicación con la solución convertida para usar enlaces en línea:
<xs:element name="customer">
<xs:complexType>
<xs:annotation>
<xs:documentation>Request object for the operation that checks if a customer profile exists.</xs:documentation>
<xs:appinfo>
<annox:annotate>
<annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" name="customer"/>
</annox:annotate>
<jaxb:class name="CustomerRequest"/>
</xs:appinfo>
</xs:annotation>
<xs:sequence>
</xs:sequece>
</xs:complexType>
</xs:element>