Package org.apache.wicket.protocol.http
Class WicketFilter
- java.lang.Object
-
- org.apache.wicket.protocol.http.WicketFilter
-
- All Implemented Interfaces:
javax.servlet.Filter
- Direct Known Subclasses:
AbstractUpgradeFilter
,ReloadingWicketFilter
public class WicketFilter extends Object implements javax.servlet.Filter
Filter for initiating handling of Wicket requests.The advantage of a filter is that, unlike a servlet, it can choose not to process the request and let whatever is next in chain try. So when using a Wicket filter and a request comes in for foo.gif the filter can choose not to process it because it knows it is not a wicket-related request. Since the filter didn't process it, it falls on to the application server to try, and then it works."
- Author:
- Jonathan Locke, Timur Mehrvarz, Juergen Donnerstag, Igor Vaynberg (ivaynberg), Al Maw, jcompagner, Matej Knopp
- See Also:
for documentation
-
-
Field Summary
Fields Modifier and Type Field Description static String
APP_FACT_PARAM
The name of the context parameter that specifies application factory classstatic String
FILTER_MAPPING_PARAM
The name of the root path parameter that specifies the root dir of the app.static String
IGNORE_PATHS_PARAM
Name of parameter used to express a comma separated list of paths that should be ignored
-
Constructor Summary
Constructors Constructor Description WicketFilter()
default constructor, usually invoked through the servlet container by the web.xml configurationWicketFilter(WebApplication application)
constructor supporting programmatic setup of the filter
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected String
checkIfRedirectRequired(String requestURI, String contextPath)
Try to determine as fast as possible if a redirect is necessaryvoid
destroy()
void
doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)
protected WebApplication
getApplication()
protected IWebApplicationFactory
getApplicationFactory()
Creates the web application factory instance.protected ClassLoader
getClassLoader()
javax.servlet.FilterConfig
getFilterConfig()
String
getFilterPath()
Provide a standard getter for filterPath.protected String
getFilterPath(javax.servlet.http.HttpServletRequest request)
Either get the filterPath retrieved from web.xml, or if not found the old (1.3) way via a filter mapping param.protected String
getFilterPathFromAnnotation(boolean isServlet)
Stub method that lets subclasses configure filter path from annotations.protected String
getFilterPathFromConfig(javax.servlet.FilterConfig filterConfig)
protected String
getFilterPathFromWebXml(boolean isServlet, javax.servlet.FilterConfig filterConfig)
String
getRelativePath(javax.servlet.http.HttpServletRequest request)
Returns a relative path to the filter path and context root from an HttpServletRequest - use this to resolve a Wicket request.void
init(boolean isServlet, javax.servlet.FilterConfig filterConfig)
Servlets and Filters are treated essentially the same with Wicket.void
init(javax.servlet.FilterConfig filterConfig)
If you do have a need to subclass, you may subclassinit(boolean, FilterConfig)
protected boolean
processRequestCycle(RequestCycle requestCycle, WebResponse webResponse, javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse, javax.servlet.FilterChain chain)
Process the request cyclevoid
setFilterPath(String filterPath)
Sets the filter path instead of reading it from web.xml.
-
-
-
Field Detail
-
FILTER_MAPPING_PARAM
public static final String FILTER_MAPPING_PARAM
The name of the root path parameter that specifies the root dir of the app.- See Also:
- Constant Field Values
-
APP_FACT_PARAM
public static final String APP_FACT_PARAM
The name of the context parameter that specifies application factory class- See Also:
- Constant Field Values
-
IGNORE_PATHS_PARAM
public static final String IGNORE_PATHS_PARAM
Name of parameter used to express a comma separated list of paths that should be ignored- See Also:
- Constant Field Values
-
-
Constructor Detail
-
WicketFilter
public WicketFilter()
default constructor, usually invoked through the servlet container by the web.xml configuration
-
WicketFilter
public WicketFilter(WebApplication application)
constructor supporting programmatic setup of the filter this can be useful for programmatically creating and appending the wicket filter to the servlet context using servlet 3 features.- Parameters:
application
- web application
-
-
Method Detail
-
getClassLoader
protected ClassLoader getClassLoader()
- Returns:
- The class loader
-
processRequestCycle
protected boolean processRequestCycle(RequestCycle requestCycle, WebResponse webResponse, javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
Process the request cycle- Parameters:
requestCycle
-webResponse
-httpServletRequest
-httpServletResponse
-chain
-- Returns:
- false, if the request could not be processed
- Throws:
IOException
javax.servlet.ServletException
-
doFilter
public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
- Specified by:
doFilter
in interfacejavax.servlet.Filter
- Throws:
IOException
javax.servlet.ServletException
- See Also:
Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
-
getApplicationFactory
protected IWebApplicationFactory getApplicationFactory()
Creates the web application factory instance. If no APP_FACT_PARAM is specified in web.xml ContextParamWebApplicationFactory will be used by default.- Returns:
- application factory instance
- See Also:
ContextParamWebApplicationFactory
-
init
public final void init(javax.servlet.FilterConfig filterConfig) throws javax.servlet.ServletException
If you do have a need to subclass, you may subclassinit(boolean, FilterConfig)
- Specified by:
init
in interfacejavax.servlet.Filter
- Throws:
javax.servlet.ServletException
- See Also:
Filter.init(javax.servlet.FilterConfig)
-
init
public void init(boolean isServlet, javax.servlet.FilterConfig filterConfig) throws javax.servlet.ServletException
Servlets and Filters are treated essentially the same with Wicket. This is the entry point for both of them.- Parameters:
isServlet
- True if Servlet, false if FilterfilterConfig
-- Throws:
javax.servlet.ServletException
- See Also:
init(FilterConfig)
-
getFilterPathFromAnnotation
protected String getFilterPathFromAnnotation(boolean isServlet)
Stub method that lets subclasses configure filter path from annotations.- Parameters:
isServlet
-- Returns:
- Filter path from annotation
-
getFilterPathFromWebXml
protected String getFilterPathFromWebXml(boolean isServlet, javax.servlet.FilterConfig filterConfig)
- Parameters:
isServlet
-filterConfig
-- Returns:
- filter path from web.xml
-
getFilterConfig
public javax.servlet.FilterConfig getFilterConfig()
- Returns:
- filter config
-
getFilterPath
protected String getFilterPath(javax.servlet.http.HttpServletRequest request)
Either get the filterPath retrieved from web.xml, or if not found the old (1.3) way via a filter mapping param.- Parameters:
request
-- Returns:
- filterPath
-
getFilterPath
public String getFilterPath()
Provide a standard getter for filterPath.- Returns:
- The configured filterPath.
-
getFilterPathFromConfig
protected String getFilterPathFromConfig(javax.servlet.FilterConfig filterConfig)
- Parameters:
filterConfig
-- Returns:
- filter path
-
destroy
public void destroy()
- Specified by:
destroy
in interfacejavax.servlet.Filter
- See Also:
Filter.destroy()
-
checkIfRedirectRequired
protected final String checkIfRedirectRequired(String requestURI, String contextPath)
Try to determine as fast as possible if a redirect is necessary- Parameters:
requestURI
-contextPath
-- Returns:
- null, if no redirect is necessary. Else the redirect URL
-
setFilterPath
public final void setFilterPath(String filterPath)
Sets the filter path instead of reading it from web.xml. Please note that you must subclass WicketFilter.init(FilterConfig) and set your filter path before you call super.init(filterConfig).- Parameters:
filterPath
-
-
getRelativePath
public String getRelativePath(javax.servlet.http.HttpServletRequest request)
Returns a relative path to the filter path and context root from an HttpServletRequest - use this to resolve a Wicket request.- Parameters:
request
-- Returns:
- Path requested, minus query string, context path, and filterPath. Relative, no leading '/'.
-
getApplication
protected WebApplication getApplication()
-
-