package com.nitorcreations.willow.servers;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

import org.apache.shiro.guice.web.ShiroWebModule;
import org.eclipse.sisu.space.SpaceModule;
import org.eclipse.sisu.space.URLClassSpace;
import org.eclipse.sisu.wire.WireModule;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;

public class WillowServletContextListener extends GuiceServletContextListener {
  private ServletContext servletContext;

  @Override
  public void contextInitialized(ServletContextEvent servletContextEvent) {
    this.servletContext = servletContextEvent.getServletContext();
    super.contextInitialized(servletContextEvent);
  }

  @Override
  protected Injector getInjector() {
    ClassLoader classloader = getClass().getClassLoader();
    return  Guice.createInjector(
      new WireModule(new ApplicationServletModule(),
        new WillowShiroModule(servletContext),
        ShiroWebModule.guiceFilterModule(),
        new SpaceModule(
          new URLClassSpace(classloader)
          )));
  }
}

@@ -967,18 +967,11 @@
     
-new Willow
+get
 Shir
@@ -982,32 +982,10 @@
 ule(
-servletContext),%0A       
+),
  Shi
@@ -1102,10 +1102,111 @@
 ));%0A  %7D%0A
+  protected ShiroWebModule getShiroModule() %7B%0A    return new WillowShiroModule(servletContext); %0A  %7D%0A
 %7D%0A

Put shiro module into an easily overridable function