[RESOLVIDO] VRaptor - Deserialização XML -> Objeto com XStream - Bug

Bom dia, amigos.

Estou com um problema com o VRaptor que creio ser um bugzinho…fiz um workaround pra resolver mas vou postar o cenário aqui e a galera do projeto confirmando sendo um bug, crio uma issue lá pra corrigir (ou eu tento corrigir sem gerar mais bugs :lol: )

Bom basicamente estou recebendo um xml que deve ser deserializado para um objeto que é o argumento da minha action. O problema é que no objeto em questão os alias do XStream foram configurados via annotations (@XStreamAlias), e o objeto que faz a deserialização (esse aqui: https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/deserialization/XStreamXMLDeserializer.java) não chama o método processAnnotations do XStream…

Pra resolver temporariamente eu criei um componente herdando desse cara ai e sobrescrevi o método getConfiguredXStream, e inclui a chamada pro método do XStream.

É um bugzinho?

Valeu!

não sei se é um bug, mas talvez seja uma feature faltando :wink:

abre uma issue lá por favor

A serialização objeto -> xml chama o método processAnnotations, e a desserialização não, pra mim tá mais pra bug…enfim, posso corrigir isso lucas, o que voce acha, esse classe/metodo ai que eu citei é o lugar ideal pra fazer isso?

valeu!

Como ele é feito direto no serializer:

acho que é justo fazer aqui:

linha 49, passando por todos os types e processando as anotações deles.

vc faz lá e manda um pull request, por favor? =)

tenta colocar um teste pra isso, ou usando mocks ou anotando classes e mandando deserializar.

Legal lucas, cadastrei a issue lá e hoje já devo fazer isso, como é mesmo tem que fazer o fork da branch master né?

sim, o ideal é fazer o fork a partir do master do VRaptor, de preferencia criando um branch com o nome da feature no seu fork. Aí fica mais fácil de fazer rebase e manter o master sincronizado com o VRaptor, supondo que vc vai criar vários pull requests no VRaptor =)

Fiz tudo lá lucas, alterei também o JsonDeserializer como você pediu e incluí os testes para o cenário com anotações.

Pra quem mais precisar, sugiro usar por enquanto essa abordagem que sugeri, que é criar um componente sobrescrevendo o desserializer do VRaptor, e sobrescrever o método que configura o XStream (e aí incluir o processamento das annotations)

Valeu!

Falhou o build =(

Mas acho que não foi da sua feature… vou dar uma olhada lá! valeu =)

É eu vi, os testes dos lugares onde mexi (incluindo a nova classe de teste que adicionei) passaram, quebraram alguns testes do LinkToHandler…de repente tá faltando alguma coisa no source que tá na minha máquina, precisa que eu faça alguma outra coisa e mande de novo o código?

Já fiz o merge, valeu!