package com.google.sitebricks; import com.google.inject.servlet.ServletModule; /** * Provides an optional mechanism for users of Sitebricks to supply {@link javax.servlet.Servlet} and * {@link javax.servlet.Filter} implementations using the standard Guice Servlet APIs.
*
* For example: *
  public Injector getInjector() {
    return Guice.createInjector(new SitebricksModule() {

      @Override
      protected SitebricksServletModule servletModule() {
        return new SitebricksServletModule() {

          @Override
          protected void configurePreFilters() {
            filter("/*").through(MyPreFilter.class);
          }

          @Override
          protected void configurePreFilters() {
            filter("/*").through(MyPostFilter.class);
          }

          @Override
          protected void configureCustomServlets() {
            serve("/foo").with(FooServlet.class);
          }
        };
      }


      @Override
      protected void configureSitebricks() {
        ...
      }
    }
 }
*/ public class SitebricksServletModule extends ServletModule { @Override protected final void configureServlets() { configurePreFilters(); filter("/*").through(HiddenMethodFilter.class); filter("/*").through(SitebricksFilter.class); configurePostFilters(); configureCustomServlets(); } /** * Provides a mechanism for users of Sitebricks to register their own {@link javax.servlet.Servlet} implementations * with Guice Servlet via {@link ServletModule#serve(String, String...) serve} and * {@link ServletModule#serveRegex(String, String...) serveRegex}.

*/ protected void configureCustomServlets() { } /** * Provides a mechanism for users of Sitebricks to register their own {@link javax.servlet.Filter} implementation with * Guice Servlet via {@link ServletModule#filter(String, String...) filter} and * {@link ServletModule#filterRegex(String, String...) filterRegex}.

*
* Filters declared in this method will execute in the filter chain before the Sitebricks filter invokes. */ protected void configurePreFilters() { } /** * Provides a mechanism for users of Sitebricks to register their own {@link javax.servlet.Filter} implementation with * Guice Servlet via {@link ServletModule#filter(String, String...) filter} and * {@link ServletModule#filterRegex(String, String...) filterRegex}.

*
* Filters declared in this method will execute in the filter chain only if Sitebricks determines it will not * handle the request. */ protected void configurePostFilters() { } }