Estou migrando uma aplicação de vraptor3 pra vraptor4 e estou tendo um problema com a anotacao @Consumes que não havia anteriormente ele não está populando as classes internas apenas os atributos da classe , fiz um exemplo do zero pra ter certeza que não era algo relacionado a minha app , segue classes de teste .
package model;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("pagamento")
public class Pagamento {
private Long id;
private PessoaFisica pessoaFisica;
public PessoaFisica getPessoaFisica() {
return pessoaFisica;
}
public void setPessoaFisica(PessoaFisica pessoaFisica) {
this.pessoaFisica = pessoaFisica;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
package model;
public class PessoaFisica {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
//Controller
package controller;
import javax.inject.Inject;
import model.Pagamento;
import br.com.caelum.vraptor.Consumes;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
@Controller
@Path("pagamento")
public class PagamentoController {
@Inject
private Result result;
public void index(){
}
@Consumes
@Post
public void create(Pagamento pagamento){
System.out.println(pagamento.getId());
System.out.println(pagamento.getPessoaFisica());
this.result.include("pagamento",pagamento);
}
}
//Estou fazendo o seguinte post pro servidor
<pagamento>
<id>1</id>
<pessoaFisica>
<nome>Cliente</nome>
</pessoaFisica>
</pagamento>
O id é impresso corretamente so que pessoaFisica vem com null . Ainda falta algo a ser feito ? Funcionava corretamente no vraptor3 .