public final Scoop createScreenScoop(Screen screen, Scoop parentScoop) { Scoop.Builder scoopBuilder = new Scoop.Builder(screen.getClass().getSimpleName(), parentScoop) .service(Screen.SERVICE_NAME, screen); return addServices(scoopBuilder, screen, parentScoop); }
@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(); } }
protected Scoop addServices(Scoop.Builder scoopBuilder, Screen screen, Scoop parentScoop) { return scoopBuilder.build(); } }
public final Scoop createScreenScoop(Screen screen, Scoop parentScoop) { Scoop.Builder scoopBuilder = new Scoop.Builder(screen.getClass().getSimpleName(), parentScoop) .service(Screen.SERVICE_NAME, screen); return addServices(scoopBuilder, screen, parentScoop); }
public void destroyRootScoop() { FooService service1 = new FooService(); Scoop rootScoop = new Scoop.Builder("root") .service("foo_service_1", service1) .build(); Scoop childScoop1 = new Scoop.Builder("child1", rootScoop) .service("child_service_1", childService1) .build(); Scoop childScoop2 = new Scoop.Builder("child2", rootScoop) .service("child_service_2", childService2) .build(); Scoop grandChildScoop = new Scoop.Builder("grand_child", childScoop1) .service("foo_service_3", service3) .build();
@Test public void destroyChildScoop() { FooService service1 = new FooService(); Scoop rootScoop = new Scoop.Builder("root") .service("foo_service_1", service1) .build(); FooService service2 = new FooService(); Scoop childScoop = new Scoop.Builder("child", rootScoop) .service("foo_service_2", service2) .build(); FooService service3 = new FooService(); Scoop grandChildScoop = new Scoop.Builder("grand_child", childScoop) .service("foo_service_3", service3) .build(); childScoop.destroy(); Assert.assertFalse(rootScoop.isDestroyed()); assertNull(rootScoop.findChild("child")); Assert.assertNotNull(rootScoop.findService("foo_service_1")); Assert.assertTrue(childScoop.isDestroyed()); Assert.assertNotNull(childScoop.getParent()); assertNull(childScoop.findChild("grand_child")); Assert.assertNotNull(childScoop.findService("foo_service_1")); Assert.assertNotNull(childScoop.findService("foo_service_2")); Assert.assertTrue(grandChildScoop.isDestroyed()); Assert.assertNotNull(grandChildScoop.getParent()); Assert.assertNotNull(grandChildScoop.findService("foo_service_1")); Assert.assertNotNull(grandChildScoop.findService("foo_service_2")); Assert.assertNotNull(grandChildScoop.findService("foo_service_3")); }
protected Scoop addServices(Scoop.Builder scoopBuilder, Screen screen, Scoop parentScoop) { return scoopBuilder.build(); } }
protected Scoop addServices(Scoop.Builder scoopBuilder, Screen screen, Scoop parentScoop) { return scoopBuilder.build(); } }
@Test public void createChildScoop() { Scoop rootScoop = new Scoop.Builder("root").build(); Scoop childScoop = new Scoop.Builder("child", rootScoop) .build(); Assert.assertEquals("child", childScoop.getName()); Assert.assertEquals(rootScoop, childScoop.getParent()); Assert.assertEquals(childScoop, rootScoop.findChild("child")); }
@Test public void screenAddedToScoop() { ScreenScoopFactory screenScoopFactory = new ScreenScoopFactory(); Scoop parentScoop = new Scoop.Builder("root").build(); Screen screen = new TestScreen(); Scoop childScoop = screenScoopFactory.createScreenScoop(screen, parentScoop); Assert.assertEquals(screen, Screen.fromScoop(childScoop)); }
@Before public void setUp() { screenScoopFactory = new ScreenScoopFactory(); screenScooper = new ScreenScooper(screenScoopFactory); rootScoop = new Scoop.Builder("root").build(); }
@Test public void findServiceInParent() { FooService service = new FooService(); Scoop rootScoop = new Scoop.Builder("root") .service("foo_service", service) .build(); Scoop childScoop = new Scoop.Builder("child", rootScoop) .build(); Assert.assertEquals(service, childScoop.findService("foo_service")); }
@Test public void createRootScoop() { FooService service = new FooService(); Scoop scoop = new Scoop.Builder("root") .service("foo_service", service) .build(); Assert.assertEquals("root", scoop.getName()); assertNull(scoop.getParent()); Assert.assertEquals(service, scoop.findService("foo_service")); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); daggerScreenScooper = new DaggerScreenScoopFactory(); scoop = new Scoop.Builder("root").service(DaggerInjector.SERVICE_NAME, mockDaggerInjector).build(); scoopBuilder = new Scoop.Builder("child"); }
private Scoop getActivityScoop() { if (activityScoop == null) { Timber.d("getActivityScoop"); ObjectGraph activityGraph = getApp().getApplicationGraph().plus(new MainActivityModule(this)); DaggerInjector activityInjector = new DaggerInjector(activityGraph); activityScoop = new Scoop.Builder("activity_scoop") .service(DaggerInjector.SERVICE_NAME, activityInjector) .build(); } return activityScoop; }
public final Scoop createScreenScoop(Screen screen, Scoop parentScoop) { Scoop.Builder scoopBuilder = new Scoop.Builder(screen.getClass().getSimpleName(), parentScoop) .service(Screen.SERVICE_NAME, screen); return addServices(scoopBuilder, screen, parentScoop); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); daggerViewControllerInflater = new DaggerViewControllerInflater(); scoop = new Scoop.Builder("root").service(DaggerInjector.SERVICE_NAME, mockDaggerInjector).build(); scoopBuilder = new Scoop.Builder("child"); }
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 findService() { FooService service = new FooService(); Scoop rootScoop = new Scoop.Builder("root") .service("foo_service", service) .build(); Assert.assertEquals(service, rootScoop.findService("foo_service")); }