/sitebricks/src/main/java/com/google/sitebricks/SitebricksServletModule.java

http://github.com/dhanji/sitebricks · Java · 87 lines · 18 code · 10 blank · 59 comment · 0 complexity · 336ec29295a538fe55cec31286df9f76 MD5 · raw file

  1. package com.google.sitebricks;
  2. import com.google.inject.servlet.ServletModule;
  3. /**
  4. * Provides an optional mechanism for users of Sitebricks to supply {@link javax.servlet.Servlet} and
  5. * {@link javax.servlet.Filter} implementations using the standard Guice Servlet APIs.<br/>
  6. * <br/>
  7. * For example:
  8. * <pre>
  9. public Injector getInjector() {
  10. return Guice.createInjector(new SitebricksModule() {
  11. @Override
  12. protected SitebricksServletModule servletModule() {
  13. return new SitebricksServletModule() {
  14. @Override
  15. protected void configurePreFilters() {
  16. filter("/*").through(MyPreFilter.class);
  17. }
  18. @Override
  19. protected void configurePreFilters() {
  20. filter("/*").through(MyPostFilter.class);
  21. }
  22. @Override
  23. protected void configureCustomServlets() {
  24. serve("/foo").with(FooServlet.class);
  25. }
  26. };
  27. }
  28. @Override
  29. protected void configureSitebricks() {
  30. ...
  31. }
  32. }
  33. }
  34. </pre>
  35. */
  36. public class SitebricksServletModule extends ServletModule {
  37. @Override
  38. protected final void configureServlets() {
  39. configurePreFilters();
  40. filter("/*").through(HiddenMethodFilter.class);
  41. filter("/*").through(SitebricksFilter.class);
  42. configurePostFilters();
  43. configureCustomServlets();
  44. }
  45. /**
  46. * Provides a mechanism for users of Sitebricks to register their own {@link javax.servlet.Servlet} implementations
  47. * with Guice Servlet via {@link ServletModule#serve(String, String...) serve} and
  48. * {@link ServletModule#serveRegex(String, String...) serveRegex}.<p>
  49. */
  50. protected void configureCustomServlets() {
  51. }
  52. /**
  53. * Provides a mechanism for users of Sitebricks to register their own {@link javax.servlet.Filter} implementation with
  54. * Guice Servlet via {@link ServletModule#filter(String, String...) filter} and
  55. * {@link ServletModule#filterRegex(String, String...) filterRegex}.<p>
  56. * <br/>
  57. * Filters declared in this method will execute in the filter chain before the Sitebricks filter invokes.
  58. */
  59. protected void configurePreFilters() {
  60. }
  61. /**
  62. * Provides a mechanism for users of Sitebricks to register their own {@link javax.servlet.Filter} implementation with
  63. * Guice Servlet via {@link ServletModule#filter(String, String...) filter} and
  64. * {@link ServletModule#filterRegex(String, String...) filterRegex}.<p>
  65. * <br/>
  66. * Filters declared in this method will execute in the filter chain <b>only if Sitebricks determines it will not
  67. * handle the request.</b>
  68. */
  69. protected void configurePostFilters() {
  70. }
  71. }