Possiedo un numero di bean JAXB che sono direttamente sottoposti a marshalling e unmarshalled utilizzando Jersey.Raccolte JAXB (elenco <T>) Utilizzare la custodia Pascal anziché la custodia Camel per i nomi degli elementi
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;
...
...
...
}
Se creo un metodo GET che restituisce un oggetto artefatto singolo. Produce correttamente il codice XML:
<Artifact>
<artifactId>293289392839283</artifactId>
<artifactType>EMAIL</artifactType>
<contentHash>2837873827322</contentHash>
</Artifact>
Qui sono stato in grado di controllare con successo il nome dell'elemento Artefatto di avere una "A" maiuscola all'inizio.
Tuttavia, creare un metodo GET che restituisce raccolta di oggetti artefatto, io alla fine 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>
Come si può vedere l'elemento esterno per la collezione ha un minuscolo "A". Per conformarmi al nostro standard interno vorrei che questa fosse una "A" maiuscola: Artefatti.
Non riesco a vedere dove è possibile definire all'interno di JAXB, è in realtà la struttura di Jersey che sta controllando questo?
È possibile controllare il nome dell'elemento generato per le raccolte?
Molte grazie,
James
1. per quanto ne so JAXB non ti permettono di marshall una collezione (ad esempio '' ArrayList) in quanto tale. Ma ti permette di serializzare un oggetto che ha una collezione come una proprietà. 2.Non ho familiarità con Jersey, ma credo che sia necessario sapere se è JAXB che serializza ciascun artefatto separatamente e qualche altro layer (Jersey) crea l'intero documento dei blocchi o è JAXB che proclama XML per la raccolta. 3. Potresti postare del codice (o pubblicarlo da qualche parte) - come chiamarlo? Stavo provando con JAXB semplice ma questo non imita il tuo set up. –
Sospetto che tu abbia ragione - è Jersey che mi permette di marcare/smontare la raccolta di fagioli JAXB (ho sollevato anche questo con il gruppo di utenti di Jersey). Quindi spero che ci sia qualche configurazione che mi permetta di impostare il nome o le regole dietro il nome dell'elemento XML per le collezioni ... Dovremo aspettare e vedere. Come fai notare, una soluzione alternativa è creare un nuovo bean JAXB, diciamo "Artifacts" che ha un singolo membro della collezione, ad es. Elenca gli artefatti, ma credo che introduca un intero gruppo di classi che non aggiungono molto valore. Grazie per l'aiuto. James –
jallch