[Resolvido]Problema Revisions - Envers

Pessoal, 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>

Se não colocar a configuração no xml, ele não acha a classe: RequestContextHolder