X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Finject%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Finject%2FInjectorFactoryBuilder.java;h=197311a8b262927ee39d9b45e6a9fcea79940217;hb=66baeeee93acd1da563063313179996c32bf1eaa;hp=13db8412d886a54474b808aa329ff69792aa7327;hpb=9e31cb496862c1fb2256332e0e12f03cfcabae8d;p=utils diff --git a/support/inject/src/main/java/org/wamblee/inject/InjectorFactoryBuilder.java b/support/inject/src/main/java/org/wamblee/inject/InjectorFactoryBuilder.java index 13db8412..197311a8 100644 --- a/support/inject/src/main/java/org/wamblee/inject/InjectorFactoryBuilder.java +++ b/support/inject/src/main/java/org/wamblee/inject/InjectorFactoryBuilder.java @@ -20,13 +20,21 @@ import java.util.ServiceLoader; /** * Utility for obtaining an implementation of the {@link InjectorFactory} using - * {@link ServiceLoader}. + * {@link ServiceLoader} and for obtaining a {@link SimpleInjector}. + * + * The builder takes care that the factory and simple injector are built only once. + * For test code, make sure to call {@link #setInjectorFactory(InjectorFactory)} + * before each test case to force the retrieval of a new factory and injector. This + * is important because if the simple injector is not created again it will use + * cached {@link Injector} instances from other tests. * * @author Erik Brakkee */ public class InjectorFactoryBuilder { private static InjectorFactory FACTORY; + + private static SimpleInjector INJECTOR; /** * Sets the injector factory. This is useful for testing. @@ -34,6 +42,7 @@ public class InjectorFactoryBuilder { */ public static void setInjectorFactory(InjectorFactory aFactory) { FACTORY = aFactory; + INJECTOR = new SimpleInjector(aFactory); } /** @@ -45,9 +54,15 @@ public class InjectorFactoryBuilder { public static InjectorFactory getInjectorFactory() { if (FACTORY == null) { FACTORY = findInjectorFactory(); + INJECTOR = new SimpleInjector(FACTORY); } return FACTORY; } + + public static SimpleInjector getInjector() { + getInjectorFactory(); + return INJECTOR; + } /** * Finds the injector factory musing ServiceLoader