@Test void testOptionalAndNotAllReferences() { PetiteContainer pc = new PetiteContainer(); pc.config().setDefaultWiringMode(WiringMode.OPTIONAL); pc.config().setUseFullTypeNames(false); pc.config().setLookupReferences(PetiteReferenceType.NAME); registerBean(pc, Koo.class); registerBean(pc, Joo.class); assertEquals(2, pc.beansCount()); Koo koo = pc.getBean(Koo.class); assertNotNull(koo); Joo joo = pc.getBean(Joo.class); assertNotNull(joo); assertNull(koo.someNoJooName); assertNotNull(koo.joo); koo = pc.getBean(Koo.class.getName()); assertNull(koo); joo = pc.getBean(Joo.class.getName()); assertNull(joo); } }
@Test void testPrototypeInSingleton2() { Small.instanceCounter = 0; PetiteContainer pc = new PetiteContainer(); pc.config().setWireScopedProxy(true); pc.config().setDetectMixedScopes(true); pc.registerPetiteBean(Big2.class, "big", SingletonScope.class, null, false, null); pc.registerPetiteBean(Small.class, "small", ProtoScope.class, null, false, null); Big2 big = pc.getBean("big"); Small small1 = big.getSmall(); Small small2 = big.getSmall(); assertSame(small1, small2); // factory !!! assertEquals(1, Small.instanceCounter); assertEquals("small 1", small1.name()); assertEquals("small 1", small2.name()); assertEquals(1, Small.instanceCounter); assertTrue(small1.toString().equals(small2.toString())); assertEquals(1, Small.instanceCounter); }
@Test void testFullTypeMethodCtor() { PetiteContainer pc = new PetiteContainer(); pc.config().setUseFullTypeNames(true); registerBean(pc, Koo.class); registerBean(pc, Joo.class); Koo koo = pc.getBean(Koo.class.getName()); assertNotNull(koo); Joo joo = pc.getBean(Joo.class.getName()); assertNotNull(joo); assertNotNull(koo.joo); assertNotNull(koo.someNoJooName); assertNotNull(koo.mjoo); assertNotNull(koo.mjoo2); assertNotNull(koo.joojoo); }
@Test void testPrototypeInSingleton() { Small.instanceCounter = 0; PetiteContainer pc = new PetiteContainer(); pc.config().setWireScopedProxy(true); pc.config().setDetectMixedScopes(true); pc.registerPetiteBean(Big.class, "big", SingletonScope.class, null, false, null); pc.registerPetiteBean(Big.class, "big2", SingletonScope.class, null, false, null); pc.registerPetiteBean(Small.class, "small", ProtoScope.class, null, false, null); Big big = pc.getBean("big"); Small small1 = big.getSmall(); Small small2 = big.getSmall(); assertSame(small1, small2); // factory !!! assertEquals(1, Small.instanceCounter); assertTrue(small1.toString().equals(small2.toString())); assertEquals("small 1", small1.name()); assertEquals("small 1", small2.name()); assertEquals(1, Small.instanceCounter); Big big2 = pc.getBean("big2"); Small small3 = big2.getSmall(); assertEquals("small 2", small3.name()); assertEquals(2, Small.instanceCounter); }
@Test void testInjectedParams() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Val.class, null, null, null, false, null); pc.config().setImplicitParamInjection(false); pc.defineParameter("someValue", "173"); pc.defineParameter("jodd.is.cool", "yes!"); Val val = pc.getBean("val"); assertNotNull(val); assertEquals("{foo=173,hello='WOO-yes!173'}", val.toString()); }
@Test void testEmptyParam() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Val.class, null, null, null, false, null); pc.config().setImplicitParamInjection(false); pc.defineParameter("someValue", "173"); pc.defineParameter("justValue", "aaa"); Val val = pc.getBean("val"); assertNotNull(val); assertEquals("aaa", val.getJustValue()); }
@Test void testSingleFactoryInstance() { Small.instanceCounter = 0; PetiteContainer pc = new PetiteContainer(); pc.config().setWireScopedProxy(true); pc.config().setDetectMixedScopes(true); pc.registerPetiteBean(Big.class, "big", SingletonScope.class, null, false, null); pc.registerPetiteBean(Big.class, "big2", SingletonScope.class, null, false, null); pc.registerPetiteBean(Small.class, "small", ProtoScope.class, null, false, null); Big big = pc.getBean("big"); Small small1 = big.getSmall(); Small small2 = big.getSmall(); assertSame(small1, small2); // factory !!! assertEquals(1, Small.instanceCounter); Big big2 = pc.getBean("big2"); Small small3 = big2.getSmall(); Small small4 = big2.getSmall(); assertSame(small3, small4); // factory !!! assertNotSame(small1, small4); }
@Test void testRefParamsNoResolve() { PetiteContainer pc = new PetiteContainer(); pc.config().setResolveReferenceParameters(false); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.defineParameter("foo.name", "${name}"); pc.defineParameter("name", "${name2}"); pc.defineParameter("name2", "FOONAME"); Foo foo = pc.getBean("foo"); assertNotNull(foo); assertEquals("${name}", foo.getName()); }
@Test void testWiringMethodArguments() { PetiteContainer pc = new PetiteContainer(); pc.config().setDefaultWiringMode(WiringMode.OPTIONAL); PetiteRegistry petiteRegistry = pc.createContainerRegistry(); petiteRegistry.bean(DaDrum.class).register(); petiteRegistry.bean(Guitar.class).register(); petiteRegistry.bean(TheBand.class).register(); TheBand theBand = pc.getBean(TheBand.class); assertTrue(theBand.isBandReady()); } }
@Test void testFullTypeProperty() { PetiteContainer pc = new PetiteContainer(); pc.config().setUseFullTypeNames(true); registerBean(pc, Koo.class); registerBean(pc, Joo.class); assertEquals(2, pc.beansCount()); assertNull(pc.getBean("koo")); assertNull(pc.getBean("joo")); Koo koo = pc.getBean(Koo.class); assertNotNull(koo); Joo joo = pc.getBean(Joo.class); assertNotNull(joo); koo = pc.getBean(Koo.class.getName()); assertNotNull(koo); joo = pc.getBean(Joo.class.getName()); assertNotNull(joo); assertNotNull(koo.joo); assertNotNull(koo.someNoJooName); assertEquals(joo, koo.joo); assertEquals(joo, koo.someNoJooName); }
@Test void testCount() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Moo.class, null, null, null, false, null); pc.registerPetiteBean(Joo.class, null, null, null, false, null); Moo moo = pc.getBean(Moo.class); assertNotNull(moo.joo); assertNull(moo.jooNo); BeanDefinition bd = pc.lookupBeanDefinition("moo"); assertEquals(1, bd.properties.length); pc = new PetiteContainer(); pc.config().setDefaultWiringMode(WiringMode.AUTOWIRE); pc.registerPetiteBean(Moo.class, null, null, null, false, null); pc.registerPetiteBean(Joo.class, null, null, null, false, null); moo = pc.getBean(Moo.class); assertNotNull(moo.joo); assertNotNull(moo.jooNo); assertEquals(moo.joo, moo.jooNo); bd = pc.lookupBeanDefinition("moo"); assertEquals(2, bd.properties.length); }
@Test void testAutowire() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Goo.class, null, ProtoScope.class, null, false, null); pc.registerPetiteBean(Loo.class, null, null, null, false, null); assertEquals(2, pc.beansCount()); Goo goo = pc.getBean("goo"); assertNotNull(goo); assertNotNull(goo.looCustom); assertNull(goo.foo); pc.registerPetiteBean(Foo.class, null, null, null, false, null); goo = pc.getBean("goo"); assertNotNull(goo); assertNotNull(goo.looCustom); assertNull(goo.foo); pc = new PetiteContainer(); pc.config().setDefaultWiringMode(WiringMode.AUTOWIRE); pc.registerPetiteBean(Goo.class, null, ProtoScope.class, null, false, null); pc.registerPetiteBean(Loo.class, null, null, null, false, null); pc.registerPetiteBean(Foo.class, null, null, null, false, null); goo = pc.getBean("goo"); assertNotNull(goo); assertNotNull(goo.looCustom); assertNotNull(goo.foo); pc.removeBean(Goo.class); }