killbill-uncached

server: expose injector from KillbillGuiceListener Use

2/6/2013 10:59:30 PM

Details

diff --git a/server/src/main/java/com/ning/billing/server/listeners/KillbillGuiceListener.java b/server/src/main/java/com/ning/billing/server/listeners/KillbillGuiceListener.java
index f8c1567..aaf22b7 100644
--- a/server/src/main/java/com/ning/billing/server/listeners/KillbillGuiceListener.java
+++ b/server/src/main/java/com/ning/billing/server/listeners/KillbillGuiceListener.java
@@ -37,6 +37,7 @@ import com.ning.billing.util.svcsapi.bus.InternalBus;
 import com.ning.jetty.base.modules.ServerModuleBuilder;
 import com.ning.jetty.core.listeners.SetupServer;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.Injector;
 import com.google.inject.Module;
 import net.sf.ehcache.CacheManager;
@@ -47,6 +48,7 @@ public class KillbillGuiceListener extends SetupServer {
     public static final Logger logger = LoggerFactory.getLogger(KillbillGuiceListener.class);
     public static final String KILLBILL_MULTITENANT_PROPERTY = "killbill.server.multitenant";
 
+    private Injector injector;
     private DefaultLifecycle killbillLifecycle;
     private BusService killbillBusService;
     private KillbillEventHandler killbilleventHandler;
@@ -86,12 +88,15 @@ public class KillbillGuiceListener extends SetupServer {
         super.contextInitialized(event);
 
         logger.info("KillbillLifecycleListener : contextInitialized");
-        final Injector theInjector = injector(event);
-        killbillLifecycle = theInjector.getInstance(DefaultLifecycle.class);
-        killbillBusService = theInjector.getInstance(BusService.class);
-        killbilleventHandler = theInjector.getInstance(KillbillEventHandler.class);
 
-        registerMBeansForCache(theInjector.getInstance(CacheManager.class));
+        injector = injector(event);
+        event.getServletContext().setAttribute(Injector.class.getName(), injector);
+
+        killbillLifecycle = injector.getInstance(DefaultLifecycle.class);
+        killbillBusService = injector.getInstance(BusService.class);
+        killbilleventHandler = injector.getInstance(KillbillEventHandler.class);
+
+        registerMBeansForCache(injector.getInstance(CacheManager.class));
 
         /*
                 ObjectMapper mapper = theInjector.getInstance(ObjectMapper.class);
@@ -137,4 +142,9 @@ public class KillbillGuiceListener extends SetupServer {
         // Complete shutdown sequence
         killbillLifecycle.fireShutdownSequencePostEventUnRegistration();
     }
+
+    @VisibleForTesting
+    public Injector getInstantiatedInjector() {
+        return injector;
+    }
 }
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
index 25e1f10..7c6d2c2 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -248,6 +248,8 @@ public class TestJaxrsBase extends KillbillClient {
         server.configure(config, getListeners(), getFilters());
 
         server.start();
+
+        listener.getInstantiatedInjector().injectMembers(this);
     }
 
     protected Iterable<EventListener> getListeners() {