@OnClick(R.id.add_view_button) public void addView() { DaggerInjector.extend(getScoop(), new NestedViewModule()) .inflate(R.layout.nested_view, nestedLayoutParent, true); button.setVisibility(View.GONE); }
@Override protected Scoop addServices(Scoop.Builder scoopBuilder, Screen screen, Scoop parentScoop) { DaggerInjector parentDagger = DaggerInjector.fromScoop(parentScoop); DaggerModule daggerModule = screen.getClass().getAnnotation(DaggerModule.class); if (daggerModule == null) { return scoopBuilder.service(DaggerInjector.SERVICE_NAME, parentDagger).build(); } DaggerInjector screenInjector; try { final Object module = daggerModule.value().newInstance(); screenInjector = parentDagger.extend(module); } catch (Throwable e) { throw new RuntimeException("Failed to instantiate module for screen: " + screen.getClass().getSimpleName(), e); } return scoopBuilder .service(DaggerInjector.SERVICE_NAME, screenInjector).build(); } }
public static Scoop extend(final Scoop parentScoop, final Object... modules) { final Screen parentScreen = Screen.fromScoop(parentScoop); final Scoop.Builder scoopBuilder = new Scoop.Builder(parentScreen.getClass().getSimpleName(), parentScoop) .service(Screen.SERVICE_NAME, parentScreen); final DaggerInjector daggerInjector = DaggerInjector.fromScoop(parentScoop).extend(modules); return scoopBuilder .service(DaggerInjector.SERVICE_NAME, daggerInjector).build(); } }
@Test public void testExtend() { when(mockObjectGraph.plus(eq(TEST_STRING))).thenReturn(mockObjectGraph); assertNotNull(daggerInjector.extend(TEST_STRING)); verify(mockObjectGraph, times(1)).plus(eq(TEST_STRING)); } }
@Test public void testAddModule() { when(mockDaggerInjector.extend(any(TestModule.class))).thenReturn(mockDaggerInjector); assertNotNull(daggerScreenScooper.addServices(scoopBuilder, new TestScreen(), scoop)); }