Hibernate Envers Listener e Vraptor

4 respostas
renanreismartins

Prezados estou integrando o hibernate envers com o vraptor.

Implemento um listener do framework.

Preciso do meu userSession, dai a necessidade de injetar esse objeto. Porém se anoto a classe com o @Component e crio o construtor que recebe o UserSession recebo: org.hibernate.MappingException: java.lang.InstantiationException: br.xxxx.AuditListener
parece que o mesmo necessita de um construtor vazio…

@Component
public class AuditListener implements RevisionListener {

	public AuditListener(UserSession userSession) {
		super();
		this.userSession = userSession;
	}

	private UserSession userSession;


	public void newRevision(Object revisionEntity) {
		AuditEntity audit = (AuditEntity) revisionEntity;

		 // faz algo com userSession

		
	}
}

Alguém tem alguma ideia de como injetar o obj? via setter talvez…?

abrassss

4 Respostas

Lucas_Cavalcanti

Então, renan, mesmo que vc coloque o @Component, não vai ser o VRaptor quem vai instanciar essa classe, e sim o Hibernate… então não vai dar pra fazer injeção de dependências nela.

um dos jeitos de recuperar o UserSession é buscando ele direto da sessão do usuário:

UserSession session = (UserSession) VRaptorRequestHolder.currentRequest().getSession().getAttribute("userSession");

ou algo parecido com isso.

renanreismartins

opa, obrigado lucas, porém o RequestInfo retornado por .currentRequest(), não possui getSession()

abrassss

Lucas_Cavalcanti

então use currentRequest().getRequest().getSession()

renanreismartins

Oi lucas, muito obrigado pela ajuda.

Tinha visto a doc e até mesmo o código fonte do vraptor, vi que dava pra chamar getSession através de MutableRequest pq ela estende a HttpServletRequest.

Porém não conseguia chamar (a ide não auto completava) getSession() do MutableRequest pq não tinha no meu pom.xml as referencias para as libs do jee. Graças ao Vraptor eu não me preocupo com essa API :wink:

Também vi essa solução http://www.guj.com.br/java/257345-hibernate-envers-e-vraptor até consegui implementar, porém da maneira que vc postou eh muito mais simples.

Vou blogar isso.

grande abrasssss

Criado 10 de janeiro de 2012
Ultima resposta 11 de jan. de 2012
Respostas 4
Participantes 2