Pessoal, estou com um problema muito grande, estou dando manutenção em um sistema aqui e descobri que tem uma classe filter que é tipo um cerebro do sistema, encaminhando e organizando varias coisas pegando as requisições e fazendo os encaminhamentos, só que não entendo nada de filter e gostaria de saber oque esse negocio está realmente fazendo ???? os códigos estão logo abaixo.
public final class MyFilter implements Filter {
public void init(final FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
public void doFilter(final ServletRequest arg0, final ServletResponse arg1, final FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
String uri=request.getRequestURI();
String secao = uri.substring(uri.indexOf("/")+1, uri.lastIndexOf("/"));
String pagina = uri.substring(request.getRequestURI().lastIndexOf("/")+1);
Integer grupoId = MinhasConstantes.MAPA_GRUPOS_INVERSO.get(secao);
MeusUtil.setGrupoAnuncioPesquisa(request, grupoId);
MeusUtil.controleNavegacaoListagem(request, pagina);
if(pagina.equals("index.jsf")){
if (!TSUtil.isEmpty(grupoId)) {
request.getRequestDispatcher(uri+"?grupoId="+grupoId).forward(request, response);
} else {
chain.doFilter(request, response);
}
}else{
chain.doFilter(request, response);
}
gerenciaBreadCrump(request, secao, pagina);
}
private void gerenciaBreadCrump(HttpServletRequest request, String secao, String pagina) {
if(!pagina.equals("detalhe.jsf")){
MeusUtil.limpaBreadCrumpHome(request);
MeusUtil.limpaBreadCrumpListagem(request);
}
if(pagina.equals("index.jsf")){
MeusUtil.setBreadCrumpHome(secao, request);
}
if(pagina.equals("listagem.jsf")){
MeusUtil.setBreadCrumpListagem(secao, request);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
public static final Map<String, Integer> MAPA_GRUPOS_INVERSO = new HashMap<String, Integer>();
static {
MAPA_GRUPOS_INVERSO.put("festas", 1);
MAPA_GRUPOS_INVERSO.put("noticias", 2);
MAPA_GRUPOS_INVERSO.put("baladeiros", 3);
MAPA_GRUPOS_INVERSO.put("carnaval", 4);
MAPA_GRUPOS_INVERSO.put("compras", 5);
}
eu sei que ele pega a seção pela URL e encaminha para a url certa, acho que deveria funcionar assim, mas está rolando um comportamento estranho de os dados chegarem atrazados ou entao exemplo, na pagina inicial eu busca por festas, ele pega a url, captura esse "festas" e ai sabe pra onde encaminhar que seria "/festas/listagem.jsf" porem isso só acontece com uma das seções, para as outras simplesmente chega com o dado atrazado, no caso o dado da ultima página que é "/home/index.jsf" sendo que está exibindo a tela correta, somente na URL que deveria estar "/carnaval/listagem.jsf" fica mostrando "/home/index.jsf", muito estranho, por conta disso vários lugares no site estão com problemas e não consigo resolve-los, dependo muito da URL, mas os dados se chegarem atrazados não posso me utilizar deles, e agora?????
obrigado desde já a quem possa dar essa força.