Desmistificando o Hibernate Envers em 10 passos

Pessoal,
Para quaisquer dúvidas ou esclarecimentos sobre o artigo “Desmistificando o Hibernate Envers em 10 passos” presenta na revista MundoJ edição 58.

Não entendi…

Você quem escreveu e vai tirar dúvidas de quem perguntar? É isso?

Hebert,

Eu e meu amigo Bruno que escrevemos o artigo, neste fórum estaremos tirando dúvidas sobre o artigo.

[quote=lfernandez]Hebert,

Eu e meu amigo Bruno que escrevemos o artigo, neste fórum estaremos tirando dúvidas sobre o artigo.[/quote]Aaa ta.

Legal, parabéns. [=

[quote=lfernandez]Pessoal,
Para quaisquer dúvidas ou esclarecimentos sobre o artigo “Desmistificando o Hibernate Envers em 10 passos” presenta na revista MundoJ edição 58.[/quote]

Amigo, estou com um problema no envers, para criar um campo na tabela Revisions…

Estou usando o Envers do Hibernate, está funcionando, salvando nas tabelas *AUD.

Porem preciso customizar o RevisionListener, para salvar o nome do usuario que fez a alteração.

Para isso criei uma classe e implementei a RevisionListener.

E sobrescrevi o método newRevision.

Até ai tudo bem.

O problema é que neste ponto, eu não tenho o nome do usuario para setar.

O nome esta na sessão, porem neste ponto não tenho acesso a ela.

Estou usando struts 1 e spring (não estou usando spring security)

@Override
 public void newRevision(Object arg0) {
	
	RevisionVO rev = (RevisionVO) arg0;  
	
	rev.setUsername("Teste"); //Nesse ponto não consigo pegar o nome, pois ele está na sessão. Existe outra forma?
}

Resolvido, assim é possivel pagar qq obj da sessão.

public class RevisionListener implements org.hibernate.envers.RevisionListener {

	@Override
	public void newRevision(Object arg0) {
		
		UserInformation userInformation = (UserInformation) getSession().getAttribute("userInformation");
		
		RevisionVO rev = (RevisionVO) arg0;		
		rev.setUsername(userInformation.getUserLogin());
		
		System.out.println("Dentro do Listener");
	}
 
	private HttpServletRequest getRequest() {
		ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
		return requestAttributes.getRequest();
	}

	private HttpSession getSession() {
		return getRequest().getSession();
	}

}

No web.xml tem q ter a configuração:

<listener>
       <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>