/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.urlrewrite;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
* Helps to integrate internal VirtualHostFilter with urlrewritefilter.
*/
public class UrlRewriterHttpServletRequestWrapper
extends HttpServletRequestWrapper
{
private String fullTargetPath;
public UrlRewriterHttpServletRequestWrapper( HttpServletRequest req, String fullTargetPath )
{
super( req );
this.fullTargetPath = fullTargetPath;
}
public String getRequestURI()
{
String s = fullTargetPath;
if ( s == null )
{
s = super.getRequestURI();
}
return s;
}
public String getPathInfo()
{
return getRequestURI();
}
public String getServletPath()
{
return "";
}
/**
* <p>If someone calls getRequestDispatcher on some path (like urlrewritefilter does) he
* is probably going to forward to the path, so fullTargetPath must be updated.</p>
*
* <p>It is better to update fullTargetPath inside forward or include but current
* solution is enough for urlrewritefilter</p>
*
* <p>Tested with urlrewritefilter-3.0.4</p>
*
* @see org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl
*/
public RequestDispatcher getRequestDispatcher( final String path )
{
fullTargetPath = path;
return super.getRequestDispatcher( path );
}
}