I have a jsf based web application using hibernate for persistence. I also use Hibernate envers for auditing, therefore I want to implement a custom RevisionListener to save the current username in revision information. But FacesContext.getCurrentInstance()
returns null.
What's the best approach to get the username in a org.hibernate.envers.RevisionListener
implementation.
public class RevisionListener implements org.hibernate.envers.RevisionListener {
@Override
public void newRevision(Object object) {
Revinfo revInfo = (Revinfo)object;
revInfo.setUsername(getUserName());
}
private String getUserName() {
//FacesContext.getCurrentInstance() throws Nullpointerexception
Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request instanceof HttpServletRequest) {
return ((HttpServletRequest)request).getRemoteUser();
}
return null;
}
}