Projeto importado do vraptor ... dá erro no post ... para gravar

[b]Boa Noite …

Estou desenvolvendo um projetinho … e dessa vez comecei do zero, importando um blank_projet do vRaptor …

Já instalei o classpath do mysql, testei um getUsuario do jdbc e td ok.

Porém … quando tento um post, a classe modelo Usuario … dá um erro como se estivesse algo null tentando setar …[/b]

HTTP Status 500 - Exception when trying to instantiate Target(name=usuario, type=class br.com.aliquota.modelo.Usuario)

type Exception report

message Exception when trying to instantiate Target(name=usuario, type=class br.com.aliquota.modelo.Usuario)

description The server encountered an internal error (Exception when trying to instantiate Target(name=usuario, type=class br.com.aliquota.modelo.Usuario)) that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.http.InvalidParameterException: Exception when trying to instantiate Target(name=usuario, type=class br.com.aliquota.modelo.Usuario)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:95)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:97)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:87)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:80)
	br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateOrAddError(IogiParametersProvider.java:80)
	br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateParameters(IogiParametersProvider.java:73)
	br.com.caelum.vraptor.http.iogi.IogiParametersProvider.getParametersFor(IogiParametersProvider.java:63)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:126)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:83)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
root cause

java.lang.NullPointerException
	br.com.caelum.iogi.reflection.NewObject$JavaSetter.settersOf(NewObject.java:117)
	br.com.caelum.iogi.reflection.NewObject$Setter.settersIn(NewObject.java:66)
	br.com.caelum.iogi.reflection.NewObject$Setter.access$000(NewObject.java:62)
	br.com.caelum.iogi.reflection.NewObject.populateProperties(NewObject.java:50)
	br.com.caelum.iogi.reflection.NewObject.valueWithPropertiesSet(NewObject.java:41)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator$VRaptorTypeConverter.setPropertiesAfterConversions(VRaptorInstantiator.java:145)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator$VRaptorTypeConverter.instantiate(VRaptorInstantiator.java:134)
	br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:85)
	br.com.caelum.iogi.reflection.NewObject.setProperty(NewObject.java:57)
	br.com.caelum.iogi.reflection.NewObject.populateProperties(NewObject.java:51)
	br.com.caelum.iogi.reflection.NewObject.valueWithPropertiesSet(NewObject.java:41)
	br.com.caelum.iogi.ObjectInstantiator.instantiate(ObjectInstantiator.java:30)
	br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:85)
	br.com.caelum.iogi.reflection.NewObject.setProperty(NewObject.java:57)
	br.com.caelum.iogi.reflection.NewObject.populateProperties(NewObject.java:51)
	br.com.caelum.iogi.reflection.NewObject.valueWithPropertiesSet(NewObject.java:41)
	br.com.caelum.iogi.ObjectInstantiator.instantiate(ObjectInstantiator.java:30)
	br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:85)
	br.com.caelum.iogi.reflection.NewObject.setProperty(NewObject.java:57)
	br.com.caelum.iogi.reflection.NewObject.populateProperties(NewObject.java:51)
	br.com.caelum.iogi.reflection.NewObject.valueWithPropertiesSet(NewObject.java:41)
	br.com.caelum.iogi.ObjectInstantiator.instantiate(ObjectInstantiator.java:30)
	br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:85)
	br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:80)
	br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateOrAddError(IogiParametersProvider.java:80)
	br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateParameters(IogiParametersProvider.java:73)
	br.com.caelum.vraptor.http.iogi.IogiParametersProvider.getParametersFor(IogiParametersProvider.java:63)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:126)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:83)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.28 logs.

Apache Tomcat/7.0.28

a classe Usuario tem algum construtor configurado que recebe argumentos?

[b]No controller … no método gravarUsuario … nem se quer dando um syso … para verificar se algum objeto da classe está populado, funciona. Ou seja … o erro deve estar quando após o post do form html/jsp … tenta construir/popular a Classe.
Porém … isso só está ocorrendo com o POST. No get está tudo OK.

Anotei o gravarUsuario() do UsuarioController com @Post e o getUsuario() do UsuarioController com @Get

Sou acostumado a desenvolver nesse modelo, porém nunca peguei um projeto do zero, essa é a 1ª vez. Nas outras, sempre copiei de algum outro projeto já pronto da corporação, apaguei as classes, controllers e daos, deixando somente 1 de cada para base do desenvolvimento do projeto.

Quem sabe … algo que preciso configurar no XML ou em alguma outra propriedade do projeto
[/b]


package br.com.aliquota.modelo;

public class Usuario {
	
private Bairro bairro;
private String celular;
private String cep;
private Integer cpf;
private String dtHrCad;
private String dtHrMudouSenha;
private String DtHrUltimoAcesso;
private String dtHrUpdate;
private String dtNasc;
private String email;
private Integer id;
private String login;
private String logradouro;
private Msg msg;
private String nome;
private Integer numCompl;
private String obs;
private String senha;
private Status status;
private String telefone;
private TipoUsuario tipoUsuario;
private Usuario usuario;

public Usuario() {
	super();
}
public Usuario(Integer id) {
	super();
	this.id = id;
}
public Usuario(Integer id, String nome) {
	super();
	this.id = id;
	this.nome = nome;
}
public Bairro getBairro() {
	return bairro;
}
public String getCelular() {
return celular;
}
public String getCep() {
	return cep;
}
public Integer getCpf() {
	return cpf;
}
public String getDtHrCad() {
	return dtHrCad;
}
public String getDtHrMudouSenha() {
	return dtHrMudouSenha;
}
public String getDtHrUltimoAcesso() {
	return DtHrUltimoAcesso;
}
public String getDtHrUpdate() {
	return dtHrUpdate;
}
public String getDtNasc() {
	return dtNasc;
}
public String getEmail() {
	return email;
}
public Integer getId() {
return id;
}
public String getLogin() {
return login;
}
public String getLogradouro() {
	return logradouro;
}
public Msg getMsg() {
	return msg;
}
public String getNome() {
	return nome;
}
public Integer getNumCompl() {
	return numCompl;
}
public String getObs() {
	return obs;
}
public String getSenha() {
	return senha;
}
public Status getStatus() {
return status;
}
public String getTelefone() {
	return telefone;
}
	public TipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}
public Usuario getUsuario() {
	return usuario;
}
public void setBairro(Bairro bairro) {
	this.bairro = bairro;
}
	public void setCelular(String celular) {
		this.celular = celular;
	}
public void setCep(String cep) {
	this.cep = cep;
}
	public void setCpf(Integer cpf) {
		this.cpf = cpf;
	}
public void setDtHrCad(String dtHrCad) {
	this.dtHrCad = dtHrCad;
}
public void setDtHrMudouSenha(String dtHrMudouSenha) {
	this.dtHrMudouSenha = dtHrMudouSenha;
}
public void setDtHrUltimoAcesso(String dtHrUltimoAcesso) {
	DtHrUltimoAcesso = dtHrUltimoAcesso;
}
	public void setDtHrUpdate(String dtHrUpdate) {
		this.dtHrUpdate = dtHrUpdate;
	}
public void setDtNasc(String dtNasc) {
	this.dtNasc = dtNasc;
}
public void setEmail(String email) {
	this.email = email;
}
public void setId(Integer id) {
	this.id = id;
}
public void setLogin(String login) {
	this.login = login;
}
public void setLogradouro(String logradouro) {
	this.logradouro = logradouro;
}
public void setMsg(Msg msg) {
	this.msg = msg;
}
public void setNome(String nome) {
	this.nome = nome;
}
public void setNumCompl(Integer numCompl) {
	this.numCompl = numCompl;
}
public void setObs(String obs) {
	this.obs = obs;
}
public void setSenha(String senha) {
	this.senha = senha;
}
public void setStatus(Status status) {
	this.status = status;
}
public void setTelefone(String telefone) {
	this.telefone = telefone;
}
public void setTipoUsuario(TipoUsuario tipoUsuario) {
	this.tipoUsuario = tipoUsuario;
}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

}

só pra garantir, apague todos os getters e setters e gere-os usando a sua IDE (eclipse ou netbeans) se for no eclipse, tem no menu Source > Generate getters and setters.

daí dê um clean no projeto e no servidor e tente de novo.

@pauloah, será que você consegue criar um caso de teste reproduzindo o problema? Por exemplo uma classe pequena que provoque esse mesmo erro. Outra coisa, você pode ver quais são as versões do Iogi e do Mirror que você está usando?

@lucas Cavalcanti: Sabe se um converter do VRaptor pode retornar null? O NewObject do Iogi presume que o objeto é não-nulo (pois eu acho que isso é garantido quando o ObjectInstantiator do Iogi chama o NewObject) e um converter retornando null pode causar essa NPE.

pode retornar null sim