Vraptor 3 gera NullPointer em converter

Boa tarde,

Eu criei um converter para uma entidade especifica “Usuario”, porém o vraptor está levantando um nullpointer antes de chegar a execução ao meu converter:

[code]
import java.util.ResourceBundle;

import br.com.caelum.vraptor.Convert;
import br.com.caelum.vraptor.Converter;
import br.com.caelum.vraptor.ioc.RequestScoped;

import com.coachingskills.cs.model.entity.AEntity;
import com.coachingskills.cs.model.entity.Usuario;
@Convert(Usuario.class)
@RequestScoped
public class IEntityConverter implements Converter{

public Usuario convert(String value, Class<? extends Usuario> type, ResourceBundle bundle) {
System.out.println("não implementado");
return null;
}

}[/code]

o erro ocorre na classe VRaptorInstantiator no metodo setPropertiesAfterConversions

private Object setPropertiesAfterConversions(Target<?> target, Parameters parameters) {
			List<Parameter> params = parameters.forTarget(target);
			 // Essa chamada retorna NULL
			Parameter parameter = findParamFor(params, target);
			// O nullpointer ocorre na linha abaixo, por qe a variavel parameter está nul
			Object converted = converterForTarget(target).convert(parameter.getValue(), target.getClassType(), localization.getBundle());

			return new NewObject(this, parameters.focusedOn(target), converted).valueWithPropertiesSet();
		}

Meu controller

@Resource
@Path("cadastro/usuario")
public class UsuarioController {
     public void gravar(Usuario usuario){
      ......
     }
}

a view

<form  method="POST" action="cadastro/usuario/gravar" >
	<input type="hidden" value="2" name="usuario.id">
	<input type="text" value="" name="usuario.nome">
	<input type="text" value="" name="usuario.email">
</form> 

Debugando constatei que o vraptor levanta a seguinte exceção:
java.lang.IllegalStateException:
Expecting only one parameter named after Target(name=usuario, type=class com.xx.model.entity.Usuario), found instead [Parameter(usuario.nome -> teste), Parameter(usuario.email -> asd@asd.com)]

Estou criando o converter apenas para que ele busque os dados no usuário em questão diretamento do banco, mas a execução nem chega ao meu converter, oque estou fazendo de errado?

ele não vai passar pelo converter pq não tem nenhum parametro do request que se chama só usuario.

se tiver um:

<input name="usuario" value="alguma coisa"/>

vai passar por lá…

esse nullPointer é estranho… Usuario é uma interface ou classe abstrata? tem construtor sem argumentos?

Lucas obrigado pela atenção, segue a entidade usuario:

// a classe AEntity tem apenas metodos utilitarios como por exemplo, para 
// saber se o usuário é novo ou se ele está ativo
@Entity
public class Usuario extends AEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int idusuario;
    @NotNull
    @Column(nullable = false)
    private String nome;
    @Length(min = 4)
    @NotNull
    @Column(nullable = false)
    private String login;
    @NotNull
    @Email
    @Column(nullable = false)
    private String email;
    @Length(min = 4)
    @Column(nullable = false)
    private String senha;
    @Column(nullable = false)
    private String telefone;
    @NotNull
    @Column(nullable = false)
    @Max(value = 1)
    private int ativo;

    public Usuario() {
       // construtor padrão
    }
    public int getIdusuario() {
	return idusuario;
    }
    public void setIdusuario(int idusuario) {
	this.idusuario = idusuario;
    }
    public String getNome() {
	return nome;
    }
    public void setNome(String nome) {
	this.nome = nome;
    }
    public String getLogin() {
	return login;
    }
    public void setLogin(String login) {
	this.login = login;
    }
    public String getEmail() {
	return email;
    }
    public void setEmail(String email) {
	this.email = email;
    }
    public String getSenha() {
	return senha;
    }
    public void setSenha(String senha) {
	this.senha = senha;
    }
    public String getTelefone() {
	return telefone;
    }
    public void setTelefone(String telefone) {
	this.telefone = telefone;
    }
    public int getId() {
	return getIdusuario();
    }
    public void setId(int pk) {
	setIdusuario(pk);
    }
    public String getDescricao() {
	return getNome();
    }
}

Trabalho com a versão 3.4.1 do Vraptor, se eu não utilizar um converter específico para está entidade o Vraptor instancia o objeto da forma correta, chegando com todos os dados devidamente setados no controller e assim como tu dissetes Lucas, a falha ocorre por que ele encontra um parâmetro cujo identificador seja “usuario” (assim como fora declarado no controller), é muito estranho porque no próprio guia de referência do framework, a documentação demonstra exemplos desta ordem, já procurei algo semelhante mas não encontrei, por isso abrir o tópico.
Apenas relembrando, estou criando o converter porque desejo que ocorra uma marge com os dados do banco com as alterações realizadas em tela, visando evitar erro do hibernate ao realizar o update.

tentou trocar o

 <input type="hidden" value="2" name="usuario.id">

por

 <input type="hidden" value="2" name="usuario">

e implementar o converter pra pegar esse 2 e carregar o usuario?

Vou fazer desta foma mesmo, essa “adaptação” não deveria ser necessária, de todo modo agradeço muito pela ajuda, podemos encerrar ou marcar o tópico como “resolvido”.