/** * Adds self instance to the container so internal beans may fetch * container for further usage. No wiring is used and no init methods are invoked. */ public void addSelf(final String name) { addBean(name, this, WiringMode.NONE); }
@Test void testWireMode_strict() { PetiteContainer pc = new PetiteContainer(); final WiringMode wiringMode = WiringMode.STRICT; pc.registerPetiteBean(Green.class, null, null, wiringMode, false, null); pc.registerPetiteBean(Blue.class, null, null, wiringMode, false, null); pc.registerPetiteBean(Yellow.class, null, null, wiringMode, false, null); assertThrows(PetiteException.class, () -> pc.getBean("green")); }
@Override protected ActionResult createResult(final Class<? extends ActionResult> actionResultClass) { return petiteContainer.createBean(actionResultClass); } }
/** * Returns Petite bean instance. Bean name will be resolved from provided type. */ @SuppressWarnings({"unchecked"}) public <T> T getBean(final Class<T> type) { String name = resolveBeanName(type); return (T) getBean(name); }
public MadvocContainer() { madpc = new PetiteContainer(); madpc.addSelf(MADVOC_PETITE_CONTAINER_NAME); }
/** * Registers Madvoc component with given name. */ public <T> void registerComponent(final String name, final Class<T> component, final Consumer<T> consumer) { log.debug(() -> "Madvoc WebApp component: [" + name + "] --> " + component.getName()); madpc.removeBean(name); madpc.registerPetiteBean(component, name, null, null, false, consumer); }
@Test void testRefParams() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.defineParameter("foo.name", "$${name}"); pc.defineParameter("name", "${name${num}}"); pc.defineParameter("num", "2"); pc.defineParameter("name2", "FOONAME"); pc.defineParameter("FOONAME", "aaa"); Foo foo = pc.getBean("foo"); assertNotNull(foo); assertEquals("$FOONAME", foo.getName()); }
@Test void testWire() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(InBean.class); BeBean beBean = new BeBean(); assertNull(beBean.inBean); pc.wire(beBean); assertNotNull(beBean.inBean); assertNotNull(pc.lookupBeanDefinition("inBean")); assertNull(pc.lookupBeanDefinition("beBean")); assertEquals(1, pc.beansCount()); assertEquals(0, pc.externalsCache.size()); }
@Test void testProperties() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); Properties p = new Properties(); p.setProperty("foo.name", "${name}"); p.setProperty("name", "${name2}"); p.setProperty("name2", "FOONAME"); pc.defineParameters(p); Foo foo = pc.getBean("foo"); assertNotNull(foo); assertEquals("FOONAME", foo.getName()); }
@Test void testInstanceMethodProviderManualRegistration() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Solar2.class, null, null, null, false, null); pc.registerPetiteBean(Sun2.class, null, null, null, false, null); pc.registerPetiteProvider("planet", "solar2", "planetProvider", ClassUtil.EMPTY_CLASS_ARRAY); pc.registerPetitePropertyInjectionPoint("sun2", "planet", null); Sun2 sun = pc.getBean(Sun2.class); assertEquals("Sun{Earth}", sun.toString()); }
@Test void testSingleImplementation() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(BizUser.class, null, null, null, false, null); pc.registerPetiteBean(OneBiz.class, null, null, null, false, null); assertEquals(2, pc.beansCount()); final BizUser bizUser = pc.getBean(BizUser.class); assertNotNull(bizUser); assertNotNull(bizUser.biz); assertTrue(bizUser.biz instanceof OneBiz); } }
@Test public void testLookupBiz() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(MyBiz.class); BeanDefinition beanDefinition = pc.lookupBeanDefinition("myBiz"); assertNotNull(beanDefinition); assertEquals("myBiz", beanDefinition.name()); Biz myBiz = pc.getBean("myBiz"); assertNotNull(myBiz); BeanDefinition altBeanDefinition = pc.lookupBeanDefinition("biz"); assertNotNull(altBeanDefinition); assertEquals("myBiz", altBeanDefinition.name()); assertSame(beanDefinition, altBeanDefinition); Biz myBiz2 = pc.getBean("biz"); assertNotNull(myBiz2); assertSame(myBiz, myBiz2); pc.wire(weBiz); assertNotNull(weBiz.biz); assertSame(myBiz, weBiz.biz); pc.registerPetiteBean(MyBiz2.class); beanDefinition = pc.lookupBeanDefinition("myBiz"); assertNotNull(beanDefinition);
@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 testGet() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(PojoBean2.class, null, null, null, false, null); PojoBean2 pojo2 = pc.getBean("pojoBean2"); pojo2.setVal1("value"); pojo2.setVal2(Integer.valueOf(173)); pc.setBeanProperty("pojoBean2.val1", "value"); pc.setBeanProperty("pojoBean2.val2", "173"); assertEquals("value", pc.getBeanProperty("pojoBean2.val1")); assertEquals(Integer.valueOf(173), pc.getBeanProperty("pojoBean2.val2")); }
@Test void testAdd2WithCircDep() { Foo.instanceCounter = 0; PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.registerPetiteBean(Zoo.class, null, null, null, false, null); 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); Boo boo2 = (Boo) pc.getBean("boo"); assertNotNull(boo2); assertSame(boo, boo2); assertEquals(1, boo2.getFoo().getCounter()); pc.addBean("boo", boo); boo2 = (Boo) pc.getBean("boo"); assertNotNull(boo2); assertSame(boo, boo2);
@Test void testConsumer() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(SomeService.class, null, null, null, false, null); pc.registerPetiteBean(PojoBean.class, "pojo", null, null, false, pb -> pb.count = 7); pc.registerPetiteCtorInjectionPoint("pojo", null, null); PojoBean pb = pc.getBean("pojo"); assertEquals(7, pb.count); } }
@Test void testSingletonDestroyMethods() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.registerPetiteBean(Zoo.class, null, null, null, false, null); pc.registerPetiteBean(Boo.class, null, null, null, false, null); Boo boo = (Boo) pc.getBean("boo"); assertEquals(0, boo.getCount2()); pc.shutdown(); assertEquals(2, boo.getCount2()); }
@Test void testScopeRegistration() { final ScopeResolver scopeResolver = new ScopeResolver(); scopeResolver.madpc = new PetiteContainer(); scopeResolver.madpc.addBean("madvocEncoding", new MadvocEncoding()); final MadvocScope requestScope = scopeResolver.defaultOrScopeType(RequestScope.class); final MadvocScope requestScope2 = scopeResolver.defaultOrScopeType(RequestScope.class); assertEquals(requestScope2, requestScope); final MyScope myScope = scopeResolver.defaultOrScopeType(MyScope.class); assertEquals(2, scopeResolver.allScopes.size()); }
@Test void testAdd() { PetiteContainer pc = new PetiteContainer(); Foo foo = new Foo(); pc.addBean("foo", foo); Foo foo2 = (Foo) pc.getBean("foo"); assertNotNull(foo2); assertSame(foo, foo2); }
@Test void testSelf() { PetiteContainer pc = new PetiteContainer(); pc.addSelf(); assertEquals(1, pc.beansCount()); PetiteContainer pc2 = pc.getBean(PetiteContainer.PETITE_CONTAINER_REF_NAME); assertEquals(pc2, pc); }