Olá pessoal, este tópico é complemento do tópico http://guj.com.br/java/260817-rest–vraptor/2#1364099
Onde, com a ajuda do Lucas http://guj.com.br/user/profile/26398.java consegui aplicar o Rest com Restfulie na minha aplicação VRaptor.
Já funcionando preciso agora saber como transferir mais de um objeto da aplicação servidora para a aplicação cliente e/ou enviar os ralacionamentos (relation map).
Explicando melhor, tenho que receber na minha aplicação cliente um objeto ‘usuarioEpico’ com sua divisão ‘divisaoEpico’, mas só consigo enviar o primeiro.
Procurando encontrei, entre outros o link http://fabianoalmeida.wordpress.com/2011/02/02/iniciando-com-restful-usando-restfulie-e-vraptor/ mas não consegui implementar.
Alguém tem uma idéia.
Abraços Jsign
REST + VRaptor + Relation map
4 Respostas
Postando a ultima tentativa:
App Servidora:
@Public @Post("/server/xml/consultor") @Consumes("application/xml")
public void login(UsuarioEpico usuarioEpico) {
UsuarioEpico _usuarioEpico = usuarioDAO.loginEpico(usuarioEpico);
if( _usuarioEpico != null ){
ConfigurableHypermediaResource resource = (ConfigurableHypermediaResource) restfulie.resource(_usuarioEpico);
resource.relation("divisaoEpico").uses(UsuarioEpico.class).getDivisaoEpico();
result.use(xml()).from(resource, "usuarioEpico").recursive().serialize();
}else{
result.use(xml()).from( new UsuarioEpico() ).serialize();
}
}
retorno (xml):
<usuarioEpico>
<id>xxx</id>
<ativo>true</ativo>
<email>[email removido]</email>
<helpDeskAdm>true</helpDeskAdm>
<administrador>true</administrador>
<admReuniao>true</admReuniao>
<usuContrato>true</usuContrato>
<admContrato>true</admContrato>
<usuarioNome>XXX</usuarioNome>
</usuarioEpico>
Abraços, Jsign
Por favor, não escreva tópicos ou títulos de tópicos utilizando APENAS LETRAS MAIÚSCULAS.
Vou lembrar disso, obrigado.
Existe uma saída pro meu problema pessoal?
Abraços, Jsign
Pessoal, consegui receber a coleção.
O segredo (que não é segredo algum) está na classe que recebe e converte o xml em objetos usando XStream.
Nela crio os diferentes tipos de conversão que gostaria de receber.
@Resource
@SuppressWarnings("unchecked")
public class EXmlReader {
public UsuarioEpico getUsuarioEpico(String alias, String xml){
XStream stream = new XStream(new DomDriver());
stream.alias(alias, UsuarioEpico.class);
return (UsuarioEpico) stream.fromXML( xml );
}
public List<UsuarioEpico> getUsuarioEpicoS(String xml){
XStream stream = new XStream(new DomDriver());
stream.alias("usuarioEpicoS", List.class);
stream.alias("usuarioEpico", UsuarioEpico.class);
return (List<UsuarioEpico>) stream.fromXML( xml );
}
}
Daí basta usar o método conforme o retorno esperado na app cliente
// pode ser
UsuarioEpico ue = (new EXmlReader()).getUsuarioEpico("usuarioEpico", xml );
// ou
List<UsuarioEpico> consultorS = (new EXmlReader()).getUsuarioEpicoS(xml);
Abraços,
Jsign
Criado 22 de dezembro de 2011
Ultima resposta 22 de dez. de 2011
Respostas 4
Participantes 2