Je veux marshaler/unmarshal 2 types personnalisés. Et le type 1 a une liste. La marchage fonctionne comme prévu - Je vois un élément séparé pour chaque élément de type2 dans la liste, mais quand j'essaye de le démasaliser, cela ne fonctionne pas.Unmarshalling List <foo> avec JAXB/Jersey
Flux de travail
@XmlRootElement
public class Workflow {
private String userEmail;
private List<WorkflowStep> steps = new ArrayList<WorkflowStep>(5);
//required by jaxb
public Workflow() {
}
public void setSteps(List<WorkflowStep> steps) {
this.steps = steps;
}
public List<WorkflowStep> getSteps() {
//do a defensive copy
return new ArrayList<WorkflowStep>(steps);
}
public void setUserEmail(String email) {
userEmail = email;
}
public String getUserEmail() {
return userEmail;
}
}
WorkflowStep
@XmlRootElement
public class WorkflowStep {
private int cpu = 1;
private int mem = 1000;
private Map<String, String> parameters = Collections.emptyMap();
public WorkflowStep() {
}
public void setCpu(int numCores) {
cpu = numCores;
}
public int getCpu() {
return cpu;
}
public void setMem(int mb) {
mem = mb;
}
public int getMem() {
return mem;
}
}
Voici un exemple de sortie si j'accéder au service Web à partir d'un navigateur:
<workflow>
<steps>
<cpu>1</cpu>
<inputId>237</inputId>
<mem>1000</mem>
<parameters/>
<status>NOT-YET-STARTED</status>
<stepId>1509</stepId>
<submoduleId>0</submoduleId>
<workflowId>797</workflowId>
</steps>
<steps>
<cpu>1</cpu>
<inputId>364</inputId>
<mem>1000</mem>
<parameters/>
<status>NOT-YET-STARTED</status>
<stepId>1510</stepId>
<submoduleId>3</submoduleId>
<workflowId>797</workflowId>
</steps>
<userEmail>[email protected]</userEmail>
<workflowId>797</workflowId>
<workflowName>test-name</workflowName>
</workflow>
WorkflowStep est marshalled/unmarshalled avec succès mais une liste ne peut pas être unmarshalled pourquoi est-ce? Ni le serveur d'application, ni le client REST ne reçoivent aucune erreur ou exception, le client ignore simplement la liste des WorkflowSteps? À partir de l'exemple de sortie ci-dessus, je m'attendrais à ce que chaque élément soit converti en un objet de type WorkflowStep, puis sera automatiquement ajouté à la liste?
Comment faire? – LordDoskias
@LordDoskias - J'ai ajouté des informations supplémentaires pour spécifier l'accès au champ. –
J'ai vu après je me suis rafraîchi. Pouces vers le haut! – LordDoskias