private void injectApplication() { if (shouldInjectApplication()) { graph.inject(this); graph.injectStatics(); } }
/** * Given an object passed as argument uses the object graph associated to the Activity scope * to resolve all the dependencies needed by the object and inject them. */ @Override public final void inject(Object object) { if (shouldInitializeActivityScopeGraph()) { injectActivityModules(); } activityScopeGraph.inject(object); activityScopeGraph.injectStatics(); }
/** * Given an object passed as argument uses the object graph associated to the Activity scope * to resolve all the dependencies needed by the object and inject them. */ @Override public final void inject(Object object) { if (shouldInitializeActivityScopeGraph()) { injectActivityModules(); } activityScopeGraph.inject(object); activityScopeGraph.injectStatics(); }
@Test public void childModuleWithStaticInjection() { @Module(includes = ModuleWithStaticInjection.class) class TestModule { @Provides String provideString() { return "injected"; } } ObjectGraph objectGraph = ObjectGraph.createWith(new TestingLoader(), new TestModule()); TestStaticInjection.s = null; objectGraph.injectStatics(); assertThat(TestStaticInjection.s).isEqualTo("injected"); }
@Test public void injectStatics() { @Module(staticInjections = InjectsOneField.class) class TestModule { @Provides String provideString() { return "static"; } } ObjectGraph graph = ObjectGraph.createWith(new TestingLoader(),new TestModule()); assertThat(InjectsOneField.staticField).isNull(); graph.injectStatics(); assertThat(InjectsOneField.staticField).isEqualTo("static"); }
@Test public void instanceFieldsNotInjectedByInjectStatics() { @Module( staticInjections = InjectsStaticAndNonStatic.class, injects = InjectsStaticAndNonStatic.class) class TestModule { @Provides String provideString() { return "static"; } @Provides Integer provideInteger() { throw new AssertionError(); } } ObjectGraph graph = ObjectGraph.createWith(new TestingLoader(), new TestModule()); assertThat(InjectsStaticAndNonStatic.staticField).isNull(); graph.injectStatics(); assertThat(InjectsStaticAndNonStatic.staticField).isEqualTo("static"); }
objectGraph.injectStatics();
public final class Injector { private static ObjectGraph objectGraph = null; public static void init(final Object... modules) { if (objectGraph == null) { objectGraph = ObjectGraph.create(modules); } else { objectGraph = objectGraph.plus(modules); } // Inject statics objectGraph.injectStatics(); } public static final void inject(final Object target) { objectGraph.inject(target); } public static <T> T resolve(Class<T> type) { return objectGraph.get(type); } }
objectGraph.injectStatics();