Search in sources :

Example 1 with Zoo

use of jodd.petite.tst.Zoo in project jodd by oblac.

the class MiscTest method testNoAdd2WithCircDep.

@Test
public void testNoAdd2WithCircDep() {
    Foo.instanceCounter = 0;
    PetiteContainer pc = new PetiteContainer();
    pc.registerPetiteBean(Foo.class, null, null, null, false);
    pc.registerPetiteBean(Zoo.class, null, null, null, false);
    pc.registerPetiteBean(Boo.class, null, null, null, false);
    Boo boo = (Boo) pc.getBean("boo");
    Foo foo = (Foo) pc.getBean("foo");
    Zoo zoo = (Zoo) pc.getBean("zoo");
    assertNotNull(boo.getFoo());
    assertSame(foo, boo.getFoo());
    assertNotNull(zoo.boo);
    assertSame(boo, zoo.boo);
    assertSame(zoo, boo.zoo);
    Boo boo2 = (Boo) pc.getBean("boo");
    assertNotNull(boo2);
    assertSame(boo, boo2);
    assertFalse(boo.orders.isEmpty());
    assertNotNull(boo2.getFoo());
    assertSame(foo, boo2.getFoo());
    assertEquals(1, boo2.getFoo().hello());
    assertEquals(1, boo2.getFoo().getCounter());
    assertEquals("[first, second, third, init, beforeLast, last]", boo.orders.toString());
}
Also used : Boo(jodd.petite.tst.Boo) Foo(jodd.petite.tst.Foo) Zoo(jodd.petite.tst.Zoo) Test(org.junit.Test)

Example 2 with Zoo

use of jodd.petite.tst.Zoo in project jodd by oblac.

the class MiscTest method testAdd2WithCircDep.

@Test
public void testAdd2WithCircDep() {
    Foo.instanceCounter = 0;
    PetiteContainer pc = new PetiteContainer();
    pc.registerPetiteBean(Foo.class, null, null, null, false);
    pc.registerPetiteBean(Zoo.class, null, null, null, false);
    Foo foo = (Foo) pc.getBean("foo");
    Boo boo = new Boo();
    assertNull(boo.getFoo());
    pc.addBean("boo", boo, null);
    assertNotNull(boo.getFoo());
    assertSame(foo, boo.getFoo());
    assertNotNull(boo.zoo);
    Zoo zoo = (Zoo) pc.getBean("zoo");
    assertNotNull(zoo.boo);
    // circular dependency
    assertSame(zoo, boo.zoo);
    assertSame(boo, zoo.boo);
    Boo boo2 = (Boo) pc.getBean("boo");
    assertNotNull(boo2);
    assertSame(boo, boo2);
    assertFalse(boo.orders.isEmpty());
    assertEquals(6, boo.orders.size());
    assertEquals("[first, second, third, init, beforeLast, last]", boo.orders.toString());
    assertNotNull(boo2.getFoo());
    assertSame(foo, boo2.getFoo());
    assertEquals(1, boo2.getFoo().hello());
    assertEquals(1, boo2.getFoo().getCounter());
    pc.addBean("boo", boo);
    boo2 = (Boo) pc.getBean("boo");
    assertNotNull(boo2);
    assertSame(boo, boo2);
    assertNotNull(boo2.getFoo());
    assertSame(foo, boo2.getFoo());
    assertEquals(1, boo2.getFoo().hello());
    assertEquals(2, boo2.getFoo().getCounter());
    // init methods are called again due to re-add
    assertEquals(12, boo.orders.size());
}
Also used : Boo(jodd.petite.tst.Boo) Foo(jodd.petite.tst.Foo) Zoo(jodd.petite.tst.Zoo) Test(org.junit.Test)

Aggregations

Boo (jodd.petite.tst.Boo)2 Foo (jodd.petite.tst.Foo)2 Zoo (jodd.petite.tst.Zoo)2 Test (org.junit.Test)2