VRaptor 3 - Problema com a serialização de resultados JSON e XML  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Estou modelando alguns serviços utilizando VRaptor como controlador MVC.

Todas os resultados dos serviços serão JSON ou XML.

Eu modelei um objeto para ser trafegado para os retornos.

Basicamente seria algo assim:

Criei uma classe abstrata que já tem alguns métodos genéricos. Todos estes métodos tem uma ação default que seria informar se foi executado com sucesso ou com erro e uma mensagem.

Existem outros métodos que além destas duas mensagens ( status de execução e mensagem ), eles retornam também um objeto.

Por exemplo:

Um método de list, retorna um objeto do tipo List<?>.

Um método get, retorna um objeto complexo qualquer.

Então eu criei uma classe para ser meu retorno default:



então, hora eu seto somente o type ( SUCCESS ou ERROR ) e o message, hora eu seto além destes dois campos, o campo object com o objeto carregado pela classe de business ou então uma lista.

Na hora de renderizar a tela, só esta sendo carregado o type e a message. O objeto complexo não esta sendo adicionado ao XML ou JSON.

eu criei um método que executo depois de cada execução de métodos desta classe abstrata:




Alguma sugestão do que devo fazer para resolver este problema??


[]'s
[Email] [WWW] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

o vraptor só serializa os atributos simples, por padrão... se vc quiser incluir o objeto vc precisa dar um .include("object") antes do .serialize()

--
Caelum
www.caelum.com.br

marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Lucas,

Já tentei fazer isso ... acho que estou tendo problemas porque estou usando tipos genéricos nesta classe ... Eu lí algo que você escreveu que diz que o VRaptor precisa conhecer a implementação para conseguir serializar.

É isso mesmo??
[Email] [WWW] [MSN]
marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Lucas,

Tentei novamente fazer como sugeriu.

A classe ficou assim:


Após as execuções estou fazendo o seguinte:


e esta gerando esta exceção:


Pela exceção dá para ter idéia que o problema é mesmo o que eu falei ... o VRaptor precisa conhecer a implementação para serializar, ou em outras palavras, com o generics não vai rolar.

Tem alguma outra forma de implementar isso? Talvez criando uma implementação custom do Serialization??

[]'s
[Email] [WWW] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

acho que isso já foi corrigido... tenta usar esse snapshot:
https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.4.0-SNAPSHOT/vraptor-3.4.0-20110915.225054-8.jar

--
Caelum
www.caelum.com.br

marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Lucas,

Sabe se existe em algum lugar um POM com as dependências do VRaptor 3.4.0-SNAPSHOT ???

Coloquei esta versão, mas esta dando problema nas dependências ... esta faltando um monte de dependências que não tinha nas versões anteriores.

[]'s
[Email] [WWW] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

quais dependências estão faltando, marcio?

https://github.com/caelum/vraptor/blob/master/pom.xml

--
Caelum
www.caelum.com.br

marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Lucas,

Utilizando o POM que você me passou, consegui acertar todas as dependências do projeto, no entanto, a exceção ainda persiste.


Você consegue imaginar outra forma para contornar este problema?

Será que eu não vou conseguir utilizar este objeto genérico para dar o retorno dos meus serviços REST?!?

[]'s
[Email] [WWW] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

marcio, quais dependencias estavam faltando?

--
Caelum
www.caelum.com.br

marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Estavam faltando a scannotation e guava ( google.collection )
[Email] [WWW] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

não quer corrigir lá no VRaptor e mandar um pull request por favor?

ou o pom mais novo já está certo?

--
Caelum
www.caelum.com.br

Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

em todo caso, essa exception já deveria estar corrigida no último snapshot do vraptor

--
Caelum
www.caelum.com.br

marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Lucas Cavalcanti wrote:não quer corrigir lá no VRaptor e mandar um pull request por favor?

ou o pom mais novo já está certo?


O pom que você me passou já tem estas dependências =)

Sobre a exceção, eu baixei o snapshot que você me passou ... e o problema ainda persiste. Acabei removendo o generics do meu objeto para contornar o problema.

[]'s
[Email] [WWW] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

qual é o caso em que deu problemas? posta aí as classes (com generics) que vc mandou serializar por favor?

--
Caelum
www.caelum.com.br

marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

a classe é essa:



Eu fiz uma classe abstrata genérica que trata minhas respostas e sempre coloca uma instancia deste objeto como resultado JSON ou XML. Só que com o generics não funciona.

[]'s
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team