O código abaixo está correto, funciona! Porém fiquei com dúvida quanto ao funcionamento do Xstream quando utiliza um conversor: mesmo delegando(context.convertAnother(compra.getProdutos());) no método "marshal" a conversão da coleção, ele ignora as configurações externas de coleção implícita, por exemplo. Não deveria ser obedecido e a própria delegação colocar as tags da coleção se necessário? Qual a lógica? Tudo que estiver acessível diretamente na classe convertida tem as configurações que impactariam ignoradas, mas de 1 nível abaixo pra frente não?
Obrigado
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
String estilo = reader.getAttribute("estilo");
reader.moveDown();
String nomeId = reader.getNodeName();
String valorId = reader.getValue();
reader.moveUp();
reader.moveDown();
String fornecedor = reader.getValue();
reader.moveUp();
reader.moveDown();
String nomeTagEndereco = reader.getNodeName();
reader.moveDown();
String linha1 = reader.getValue();
reader.moveUp();
reader.moveDown();
String linha2 = reader.getValue();
reader.moveUp();
reader.moveUp();
List<Produto> produtos = new ArrayList<>();
int id = Integer.parseInt(valorId);
Compra compra = new Compra(id, produtos);
reader.moveDown();
List<Produto> produtosConvertidos = (List<Produto>) context.convertAnother(compra, List.class);
produtos.addAll(produtosConvertidos);
reader.moveUp();
return compra;
}