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

Como funciona o result.use(Results.xml()).from(produto).serialize();

Olá, eu gostaria de saber como funciona o método: result.use(Results.xml()).from(produto).serialize();

Eu sei que ele funciona e o que ele produz - Serializa um objeto qualquer em um XML.

No entanto eu não sei como ele faz isso. Quando eu clico em qualquer método como o .use(), .from() ou .serialize(), ele abre simplesmente uma interface sem lógica nenhuma dentro de cada um desses métodos. Dai eu pressuponho que um outro objeto foi chamado e que implementa essas interfaces, como o Result, o NoRootSerialization e o Serializer. Mas alguém saberia me dizer que objeto é esse e que logica ele faz para serializar qualquer objeto em um XML ou mesmo um JSON?

Eu pergunto isso pois quero conhecer como o VRaptor faz o trabalho por debaixo dos panos ao invés de simplesmente usá-lo e ver a mágica acontecer.

Se alguém poder me indicar um caminho eu agradeço muito.

4 respostas
solução!

Olá Thiago, tudo bem? Legal seu interesse sobre o funcionamento interno e impementação do framework. Como você mesmo já pegou, o VRaptor trabalha voltado para interfaces, então para saber o que está acontecendo você precisa ver as implementações de cada uma delas. Por exemplo, quando você faz .use(Results.xml()), ele retorna um XMLSerialization, que é uma interface. Se você procurar por classes que implementam essa interface, encontrará o XStreamXMLSerialization, que como o nome indica, faz a serialização usando o xStream. A grande sacada de usar interfaces é que, quando não quisermos mais usar o xStream, podemos mudar a implementação sem medo, já que os usuários não tem contato direto com essa classe, e sim sua interface/contrato. Faz sentido? É uma ótima pratica. O mesmo com o .use(Results.json()), que retorna a interface JSONSerialization e tem como implementação o GsonJSONSerialization, cujo trabalho é feito com Gson. Você verá que o código todo do VRaptor funciona assim. Um abraço

Muito obrigado Rodrigo, era isso mesmo que eu tava querendo saber. Só mais uma pergunta. Caso eu queira contribuir no projeto do VRaptor, por onde seria bom eu começar a estudá-lo pra entender seu funcionamento interno? Teria que ir no GitHub e entender o código fonte do vraptor-core mesmo? Ou existe alguma documentação pra desenvolvedores?

Obrigado

Oi Thiago! Eu sempre estudo pelos testes. Tenta baixar o código do VRaptor pelo GitHub e ir navegando nas classes de testes, que descrevem exatamente como cada feature deve funcionar. No começo vai parecer difícil, mas vai pegando aos poucos. Escolhe um comportamento que quer aprender, acha a classe que faz isso, e veja seus testes. Além de código, você também pode contribuir com documentação e issues menores, pra ir se envolvendo aos poucos com o projeto. Com certeza logo logo estarei aprovando pull requests seu lá! Bons estudos

Legal Rodrigo, vou fazer como você então. Faz pouco tempo que comecei a aprender java, dai sou bem noob nessas paradas de frameworks ainda hehe. Mas logo logo eu chego lá o/.

Abração!