Continuando a discussão do Continuação da classe authenticationaction:
package com.intelinet.servlet.filter;
import java.io.IOException;
import javax.persistence.EntityManager;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jboss.seam.Component;
import org.jboss.seam.Seam;
import org.jboss.seam.security.Identity;
import com.intelinet.biz.User;
import com.intelinet.biz.onbyte.Caixas;
import com.intelinet.seam.security.AuthenticatorAction;
@WebFilter(filterName = “SecurityFilter”, urlPatterns = “/private/*”)
public class SecurityFilter implements Filter {
private String encoding = "utf-8";
//@In Identity identity;
@Override
public void destroy() {
// Empty
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
if (!(request instanceof HttpServletRequest)) {
throw new ServletException("This filter can only process HttpServletRequest requests");
}
request.setCharacterEncoding(encoding);
HttpServletRequest httpRequest = (HttpServletRequest) request;
Identity identity = (Identity) httpRequest.getSession().getAttribute( Seam.getComponentName(Identity.class) );
User user = (User) httpRequest.getSession().getAttribute( "user");
Boolean liberacao = (Boolean) httpRequest.getSession().getAttribute( "sistemaLiberado");
Boolean dadosEnviados = (Boolean) httpRequest.getSession().getAttribute( "dadosEnviados");
Boolean informarIdCliente = (Boolean) httpRequest.getSession().getAttribute( "informarIdCliente");
AuthenticatorAction authenticatorAction = (AuthenticatorAction) httpRequest.getSession().getAttribute( Seam.getComponentName(AuthenticatorAction.class) );
Caixas caixa=null;
if (authenticatorAction!=null){
caixa = authenticatorAction.getCaixa(); **//O erro ocorre aqui depois de algum tempo em execução**
}
if (caixa!=null){
//Component.getInstance("entityManager");Component.getInstance("org.jboss.seam.core.conversation");
//org.jboss.seam.contexts.ServletLifecycle.beginReinitialization((HttpServletRequest) request, request.getServletContext());
//Collections.list(request.getServletContext().getAttributeNames());
//((org.jboss.seam.Component) request.getServletContext().getAttribute("org.jboss.seam.core.conversation.component"));
//((ServerConversationContext)Contexts.getConversationContext()).get("entityManager");
//ContextAdaptor.getRequest(javax.servlet.ServletRequest request)
//Context ctx = new SessionContext( new ServletRequestSessionMap((HttpServletRequest) request) );
//ServerConversationContext ctx2 = new ServerConversationContext(new ServletRequestMap((HttpServletRequest) request));
org.jboss.seam.contexts.ServletLifecycle.beginReinitialization((HttpServletRequest)request, request.getServletContext());
org.jboss.seam.contexts.ServletLifecycle.resumeConversation((HttpServletRequest) request);
EntityManager entityManager = ((EntityManager)Component.getInstance("entityManager", false));
if (entityManager!=null){
caixa = entityManager.find(Caixas.class, caixa.getNumero());
authenticatorAction.setCaixa(caixa);
}
}
String pageSetFuncionario = ((HttpServletRequest) request).getContextPath() + "/private/onbyte/SetFuncionario.jsf";
String pageCaixasAbertura = ((HttpServletRequest) request).getContextPath() + "/private/onbyte/CaixasAbertura.jsf";
String pageLiberacao = ((HttpServletRequest) request).getContextPath() + "/private/onbyte/LiberacaoSistema.jsf";
String pageMovcaixaList = ((HttpServletRequest) request).getContextPath() + "/private/onbyte/MovcaixaList.jsf";
request.getCharacterEncoding();
/*Enumeration<String> e = ((HttpServletRequest) request).getSession().getAttributeNames();
while (e.hasMoreElements()){
System.out.println(e.nextElement());
}*/
boolean logout = false;
String action = ((HttpServletRequest) request).getParameter("actionMethod");
if (action!=null && action.indexOf("authenticatorAction.logout")!=-1){
logout = true;
}
if (!logout && !identity.isLoggedIn()) {
((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath() + "/index.jsf");
}else if (!logout && (liberacao==null || !liberacao) && !((HttpServletRequest) request).getRequestURI().equals(pageLiberacao) ){
((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath() + "/index.jsf");
}else if (!logout && (dadosEnviados==null || !dadosEnviados) ){
((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath() + "/index.jsf");
}else if (!logout && (informarIdCliente==null || informarIdCliente) ){
((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath() + "/index.jsf");
}else if (!logout && user==null && !((HttpServletRequest) request).getRequestURI().equals(pageSetFuncionario) ){
((HttpServletResponse) response).sendRedirect(pageSetFuncionario);
}else if (!logout && (caixa==null || caixa.getDtFecha()!=null) && !((HttpServletRequest) request).getRequestURI().equals(pageSetFuncionario) && !((HttpServletRequest) request).getRequestURI().equals(pageCaixasAbertura) && !((HttpServletRequest) request).getRequestURI().equals(pageMovcaixaList) ){
//chain.doFilter(request, response);
((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath() + "/index.jsf");
}else {
chain.doFilter(request, response);
}
//chain.doFilter(request, response); //request instanceof javax.servlet.http.HttpServletRequest request.getServletContext().//((Identity) org.jboss.seam.Seam.getComponentName(Identity.class)).getCredentials().getUsername()
}catch (ServletException e) {
e.printStackTrace();
throw e;
}
}
@Override
public void init(FilterConfig config) throws ServletException {
// Empty
String encodingParam = config.getInitParameter("encoding");
if (encodingParam != null) {
encoding = encodingParam;
}
}
}