Class 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
    • 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

      • 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 interface javax.servlet.Filter
        Throws:
        IOException
        javax.servlet.ServletException
        See Also:
        Filter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
      • init

        public final void init​(javax.servlet.FilterConfig filterConfig)
                        throws javax.servlet.ServletException
        If you do have a need to subclass, you may subclass init(boolean, FilterConfig)
        Specified by:
        init in interface javax.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 Filter
        filterConfig -
        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 interface javax.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 '/'.