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.<br/> * <br/> * For example: * <pre> 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() { ... } } } </pre> */ 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}.<p> */ 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}.<p> * <br/> * 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}.<p> * <br/> * Filters declared in this method will execute in the filter chain <b>only if Sitebricks determines it will not * handle the request.</b> */ protected void configurePostFilters() { } }