TrinidadDialogFilter.java
// license-header java merge-point
// Generated by andromda-jsf cartridge (utils\TrinidadDialogFilter.java.vsl) DO NOT EDIT!
package org.andromda.presentation.jsf;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Solution to the Trinidad bug https://issues.apache.org/jira/browse/TRINIDAD-119
*
* @author Walter Mourao
*/
public class TrinidadDialogFilter implements Filter
{
/**
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
@Override
public void init(FilterConfig config) throws ServletException
{
// Empty method
}
/**
* @see javax.servlet.Filter#destroy()
*/
@Override
public void destroy()
{
// Empty method
}
/**
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
if (request instanceof HttpServletRequest && response instanceof HttpServletResponse)
{
HttpServletRequest httpRequest = (HttpServletRequest) request;
String requestURI = httpRequest.getRequestURI();
if (requestURI != null && requestURI.contains("__ADFv__") && !requestURI.contains(".jsf")) {
String context = httpRequest.getContextPath();
String replacedURI = requestURI.replace("__ADFv__", "__ADFv__" + ".jsf" + "?" + httpRequest.getQueryString());
replacedURI = replacedURI.replaceFirst("^" + context, "");
RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(replacedURI);
dispatcher.forward(request, response);
}
else
{
chain.doFilter(request, response);
}
}
}
}