supponiamo di avere questa classe:collezioni unmarshalling in JAXB
public class A {
private HashMap<String, B> map;
@XmlElement
private void setB(ArrayList<B> col) {
...
}
private ArrayList<B> getB() {
...
}
}
Quando si cerca di unmarshall un documento XML a questa classe utilizzando JAXB mi accorgo che invece di chiamare il metodo SETB() e mi invio la lista dei B istanze JaxB chiama effettivamente getB() e aggiunge le istanze B all'elenco restituito. Perché?
Il motivo per cui il setter deve essere chiamato è che la lista è in realtà solo una memoria temporanea da cui voglio costruire il campo mappa, quindi ho pensato di farlo nel setter.
Grazie.
+1 per indicare il modo in cui JAXB fa collezioni, ma quel plugin non aiuterà. Questo è un plugin per il codice XJC generatror, me non cambia il comportamento di runtime di JAXB. – skaffman
Ho letto alcuni vecchi thread di posta elettronica che affermavano che questo comportamento veniva corretto in JaxB 2.1. Mi aspetto che ci sia una proprietà su JaxbContext.newInstance (classes, * properties *) che controlla il comportamento di marshalling, ma non riesco a trovarla. – Justin