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:
[code]package controller;
import static br.com.caelum.vraptor.view.Results.representation;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.restfulie.hypermedia.Transition;
@Resource
@Path("/clientes")
public class ClientesResource {
@Get("/{clienteId}")
@Transition
public void visualiza(Long clienteId) {
Cliente cliente = new TodosClientes().get(clienteId);
if( cliente != null ) {
result.use(representation()).from(cliente).recursive().serialize();
} else {
result.notFound();
}
}
}[/code]
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:
[code]package model;
import br.com.caelum.vraptor.restfulie.hypermedia.HypermediaResource;
import br.com.caelum.vraptor.restfulie.relation.RelationBuilder;
public class Cliente implements HypermediaResource {
private Long id;
private String nome;
@Override
public void configureRelations(RelationBuilder builder) {
builder.relation("desbloquear").uses(AssinaturasResource.class).visualizaTitular(getId());
}
//… Uns getters e setters.
}
[/code]
O seguinte request, usando curl:
Deveria retornar:
<cliente>
<id>1</id>
<nome>Antonio Carlos</nome>
<atom:link rel="desbloquear" href="http://localhost:8080/clientes/1/desbloquear" xmlns:atom="http://www.w3.org/2005/Atom"/>
</cliente>
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?