Session no vraptor 3

2 respostas
salmaox

Bom dia,

Estou usando o Envers do Hibernate e  consegui fazer tudo funcionar como eu queria. No entanto gostaria de registrar a sessão do usuário nele e não estou conseguindo passar. O sistema  possui um login que funciona perfeitamente mas na hora de pegar a sessao na minha classe RevisionAudityListener ele vem null. Não consigo passar no construtor via parâmetro pq ele implementa a classe RevisionListener. Se alguém puder me ajudar...Obrigado!

Segue as classes

package br.gov.cemaden.bean;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@Component
@SessionScoped
public class GerenteWeb {

	private Gerente logado;
	@SuppressWarnings("unused")
	private String language;
	

	public void login(Gerente gerente) {
		this.setLogado(gerente);
	}

	public String getLogin() {
		return getLogado().getLogin();
	}

	public boolean isLogado() {
		return getLogado() != null;
	}
	
	public void logout() {
		this.setLogado(null);
	}

	public Gerente getLogado() {
		return logado;
	}

	public void setLogado(Gerente logado) {
		this.logado = logado;
	}

}
package br.gov.cemaden.audity;

import java.sql.Timestamp;

import org.hibernate.envers.RevisionListener;

import br.gov.cemaden.bean.GerenteWeb;
import br.gov.cemaden.util.FormataData;

public class RevisionAudityListener implements RevisionListener {
	
	
	private GerenteWeb gerente;
	FormataData fd = new FormataData();

	@SuppressWarnings("unused")
	private Object attr;
	
	public void newRevision(Object attr) {
		this.attr = attr;
		RevisionAudity ra = (RevisionAudity) attr;
		
		ra.setDt((Timestamp.valueOf(fd.getdatahora())));

		ra.setUser(gerente.getLogin());
	}

}

2 Respostas

Lucas_Cavalcanti

a classe RevisionAudityListener será instanciada pelo hibernate, então não dá pra usar injeção de dependências…

nesse caso você pode roubar um pouco:

GerenteWeb gerente = (GerenteWeb) VRaptorRequestHolder.currentRequest().getRequest().getSession().getAttribute("gerenteWeb");

não use isso em casos em que vc pode usar injeção de dependências

salmaox

vlw Lucas deu certo.

Entendi...

muito obrigado.

Criado 5 de março de 2012
Ultima resposta 5 de mar. de 2012
Respostas 2
Participantes 2