Voltando ao assunto, Lucas, pode dar mais uma ajudinha aqui? Tô fazendo uma provinha de conceito aqui sobre esses items,
O meu controller é esse aqui,
package br.com.service.controller;
import static br.com.caelum.vraptor.view.Results.*;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.service.model.Model;
@Resource
public class ModelController {
private Result result;
public ModelController(Result result){
this.result = result;
}
public void all(){
Model model = new Model(1, "Model 1");
result.use(representation()).from(model).serialize();
}
}
a classe do recurso,
package br.com.service.model;
import java.util.Calendar;
import org.joda.time.DateTime;
import br.com.caelum.vraptor.restfulie.hypermedia.HypermediaResource;
import br.com.caelum.vraptor.restfulie.relation.RelationBuilder;
import br.com.caelum.vraptor.restfulie.resource.RestfulEntity;
public class Model implements RestfulEntity, HypermediaResource {
private int id;
private String name;
public Model(){}
public Model(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public int getMaximumAge() {
return 300;
}
@Override
public String getEtag() {
return id + "." + name.toLowerCase();
}
@Override
public Calendar getLastModified() {
return DateTime.now().toGregorianCalendar();
}
@Override
public void configureRelations(RelationBuilder builder) {
}
}
Fiz um client usando o http-client (a proposito onde estão os jars do client do restfulie, no repositorio do github?), e os cabeçalhos sobre o cache funcionaram mesmo (viva!). Só que,
Quando eu faço o controller assim, forçando o retorno para json
Model model = new Model(1, "Model 1");
result.use(json()).from(model).serialize();
os headers (etag, last-modified, etc) não são adicionados. é assim mesmo que é pra ser?
os cabeçalhos também só foram adicionados quando, alem de RestfulEntity, eu implementei HypermediaResource na classe Model. Essa interface também é imperativa?
Valeu!