Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Stream como trabalhar com classes filhas

Olá amigos. Fiz o exercício Herança e Polimorfismo do Curso Xstream: consumindo o XML sem esforço.

Porém quando estou serializando classes filhas, meu xml fica assim:

15

Reparem nas tags fechadas livro e musica. Como posso corrigir?

Obs.: Segui todo o exemplo do professor.

Segue meus métodos:

@Test public void deveSerializarLivroEMusica() { String resultadoEsperado = "\n" + " 15\n" + " \n" + " \n" + " O Pássaro Raro\n" + " 100.0\n" + " dez histórias sobre a existência\n" + " \n" + " \n" + " Meu Passeio\n" + " 100.0\n" + " música livre\n" + " \n" + " \n" + "";

Compra compra = compraComLivroEMusica();

XStream xstream = xstreamParaCompraEProduto();

String xmlGerado = xstream.toXML(compra);

assertEquals(resultadoEsperado, xmlGerado); }

private Compra compraComLivroEMusica() { Produto livro = new Livro("O Pássaro Raro", 100.0, "dez histórias sobre a existência", 1589); Produto musica = new Musica("Meu Passeio", 100.0, "música livre", 1590); List produtos = new LinkedList<>(); produtos.add(livro); produtos.add(musica);

return new Compra(15, produtos); }

private XStream xstreamParaCompraEProduto() { XStream xstream = new XStream(); xstream.alias("compra", Compra.class); xstream.alias("produto", Produto.class); xstream.alias("livro", Livro.class); xstream.alias("musica", Musica.class); xstream.aliasField("descrição", Produto.class, "descricao"); xstream.useAttributeFor(Produto.class, "codigo"); return xstream; }

3 respostas

Amigos, uma parte do código não apareceu.

O Xml final faz isso com minhas classes filhas

Assim:

<'compra> <'id>15</'id> <'produtos class="linked-list"'> <'livro/'> <'musica/'> <'/produtos'> <'/compra>

solução!

Prezados, achei a resposta no próprio Fórum

Atualizei para a versão 1.4.8 do xStream e funcionou normalmente.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software