2010-07-31 14 views
1

Je travaille avec l'api de repos xml de Redmine. Le service renvoie xml comme dans l'exemple ci-dessous. J'utilise l'API client de Jersey pour communiquer avec le service reposant. Le mappage des champs en clair (identifiant, nom et ainsi de suite) dans le projet ne pose aucun problème, mais j'ai des problèmes avec la liste des trackers.Unmarshalling xml à un haricot avec une collection

<project> 
    <id>2</id> 
    <name>Project X</name> 
    <identifier>projectx</identifier> 
    <description>Description of Project X</description> 
    <homepage/> 
    <created_on>Sat Jul 31 18:16:59 +0200 2010</created_on> 
    <updated_on>Sat Jul 31 18:16:59 +0200 2010</updated_on> 

    <trackers> 
     <tracker name="Bug" id="1"/> 
     <tracker name="Feature" id="2"/> 
     <tracker name="Support" id="3"/> 
    </trackers> 
</project> 

Bean de projet, j'ai supprimé toutes les méthodes getter et setter simples.

@XmlRootElement 
@XmlSeeAlso(Tracker.class) 
public class Project { 

    private int id; 
    private String name, identifier; 
    private String description; 
    Date createdOn, updatedOn; 

    ArrayList<Tracker> trackers = new ArrayList<Tracker>(); 

    public Project() { 
    } 

    // Removed getters and setters... 

    public ArrayList<Tracker> getTrackers() { 
     return trackers; 
    } 

    @XmlElement 
    public void setTrackers(ArrayList<Tracker> trackers) { 
     this.trackers = trackers; 
    } 

} 

Bean tracker, encore une fois avec getter simple et setters enlevés pour plus de lisibilité.

@XmlRootElement 
public class Tracker { 

    private String name; 
    private int id; 

    // Removed getters 

    @XmlAttribute 
    public void setId(int id) { 
     this.id = id; 
    } 

    @XmlAttribute 
    public void setName(String name) { 
     this.name = name; 
    } 

} 

Tous les champs simples sur le projet est assis comme prévu, mais je ne peux pas le faire pour définir la liste des trackers. Qu'est-ce que je fais mal? Le meilleur que j'ai réussi jusqu'ici est d'obtenir une liste avec une valeur nulle.

Merci d'avance!

Répondre