HATEOAS com VRaptor 3.3.1 - Serializando os links  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Caros,

Estou usando VRaptor, versão 3.3.1, para expor uma API REST.
Atualmente, a API exibe apenas os dados, mas estamos tentando incluir links para os próximos recursos disponíveis.

O problema é que os links não estão sendo serializados.

Tenho um Controller:




Na documentação do VRaptor fala que tenho que implementar a interface br.com.caelum.vraptor.restfulie.hypermedia.HypermediaResource: https://github.com/caelum/restfulie-java

Aqui começam os problemas. O VRaptor mudou o método desta interface. Até aí nada, fiz a implementação de acordo com a nova interface:


O seguinte request, usando curl:



Deveria retornar:



Mas não está incluindo o link. Inclusive, coloco um breakpoint no método configureRelations e não está passando lá.
Alguém teria alguma idéia?

[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

vc configurou o pacote do restfulie no web.xml?


se vc não fizer isso o VRaptor não registra os componentes do restfulie server

--
Caelum
www.caelum.com.br

acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Sim. Segue meu web.xml



Todos as classes estão no package meu.pacote.<alguma coisa>

[],
AC
[WWW]
acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Esse erro poderia estar relacionado com isso? https://github.com/caelum/vraptor/issues/241

[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

hum.. é possível que sim =(

vc chegou a testar com xml()?


o problema é a ordem em que o representation() está testando os serializers... ele tá pegando o xml puro antes do restfulie

--
Caelum
www.caelum.com.br

acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Se eu mudar de:


Para:


E, fizer o request:


Tenho a resposta:


Atente para o tamanho do body: Content-Length: 0

Se eu passo um Id inexistente ele retorna um 404. Isto é, tenho certeza de quem tem um Cliente com dados neste Id.

Alguma idéia? Começo a baixar o código do VRaptor?

This message was edited 1 time. Last update was at 06/07/2011 12:44:35


[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

faz só um teste: tire o recursive(). o método serialize precisa ser chamado também...

--
Caelum
www.caelum.com.br

acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Vamos lá....

1.


2.


3. Fiz um outro teste passando o header 'Accept: application/json'



Resumindo: Nem o recursive, nem a representação em JSON, estão tratando os relations da classe root.

[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

dá algum erro no console do servidor? é estranho o conteúdo vir vazio...

--
Caelum
www.caelum.com.br

acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Não reparei se dava erro. Estou olhando a implementação dos serializadores e não estou entendendo onde ele faz o parse dos links.

Olhando a classe DefaultRepresentationResult, vi que ela só executa os serializadores. E, a XStreamXMLSerialization seriaiza para XML. Certo?
Então, nesta segunda, não entendi onde ele faz a criação dos links. Poderia me ajudar?

This message was edited 1 time. Last update was at 06/07/2011 16:15:44


[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

o que gera os links é o RestfulSerialization

--
Caelum
www.caelum.com.br

acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Mas o RestfulSerialization é só para o XStreamXMLSerialization, certo? Estava precisando para o JSON.

Não encontrei uma implementação de serializador para JSON. Devo implementar um?

A idéia é ter um JSON assim:

This message was edited 2 times. Last update was at 06/07/2011 17:06:17


[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

pra json não está implementado mesmo... quer ajuda pra implementar a extensão?

--
Caelum
www.caelum.com.br

acdesouza
JavaChild
[Avatar]

Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline

Sim. #comofaz?

Estou vendo a implementação das classes do pacote: br.com.caelum.vraptor.restfulie.serialization

Acredito que saberia criar um parse, mas não sei como fazer ele ser utilizado. Por onde começo?

[],
AC
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

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

vc pode criar uma classe bem parecida com essa:
https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/restfulie/serialization/RestfulSerialization.java

daí vc estende XStreamJSONSerialization ao inves do XML, e talvez vc tenha que modificar o linkConverter (ele já vai gerar um json com links, mas talvez não esteja no formato que vc quer)

qqer coisa grita

--
Caelum
www.caelum.com.br

 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team