REST + VRaptor + Relation map

4 respostas
jsign

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

4 Respostas

jsign

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

ViniGodoy

Por favor, não escreva tópicos ou títulos de tópicos utilizando APENAS LETRAS MAIÚSCULAS.

jsign

Vou lembrar disso, obrigado.
Existe uma saída pro meu problema pessoal?
Abraços, Jsign

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