Tengo un número de beans JAXB que se agrupan directamente y no se combinan usando Jersey.Colecciones JAXB (Lista <T>) Use Pascal Case en lugar de Camel Case para los nombres de elemento
E.g.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Artifact", propOrder = {
"artifactId",
"artifactType",
"contentHash"
})
@XmlSeeAlso({
EmailArtifact.class,
ManagedDocArtifact.class
})
@XmlRootElement(name ="Artifact")
public class Artifact {
protected String artifactId;
protected String artifactType;
protected String contentHash;
...
...
...
}
Si creo un método GET que devuelve un único objeto artefacto. Se produce correctamente el código XML:
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
Aquí he podido controlar correctamente el nombre del elemento Artefacto para tener una "A" mayúscula al principio.
Sin embargo, creo un método GET que devuelve colección de objetos de artefactos, termino con:
<artifacts>
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
</artifacts>
Como se puede ver el elemento exterior para la colección tiene una minúscula "A". Para cumplir con nuestro propio estándar interno, me gustaría que sea una "A" mayúscula: artefactos.
No puedo ver dónde es posible definir esto dentro de JAXB, ¿es realmente el marco de Jersey el que está controlando esto?
¿Se puede controlar el nombre del elemento generado para las colecciones?
Muchas gracias,
James
1. Que yo sepa JAXB no le permiten ordenar de una colección (por ejemplo '' ArrayList) como tal. Pero le permite serializar un objeto que tiene una colección como propiedad. 2.No estoy familiarizado con Jersey, pero supongo que necesita saber si es JAXB el que serializa cada artefacto por separado y alguna otra capa (Jersey) construye el documento completo de los fragmentos o es JAXB el que obtiene XML para la colección. 3. ¿Podría publicar algún código (o publicarlo en alguna parte) - cómo llamarlo? Lo estaba intentando con JAXB simple, pero esto no imita tu configuración. –
Sospecho que tienes razón, es Jersey quien me permite ordenar/deshacer la colección de beans JAXB (también he mencionado esto con el grupo de usuarios de Jersey). Por lo tanto, espero que haya alguna configuración que me permita establecer el nombre o las reglas detrás del nombre del elemento XML para colecciones ... Esperaremos y veremos. Como usted señala, una solución alternativa es crear un nuevo bean JAXB, digamos "Artefactos" que tiene un solo miembro de colección, p. Objetos de la lista: sin embargo, creo que esto presenta un montón de clases que no agregan mucho valor. Gracias por la ayuda. James –
jallch