/** * Adds object instance to the container as singleton bean. */ public void addBean(final String name, final Object bean, WiringMode wiringMode) { wiringMode = petiteConfig.resolveWiringMode(wiringMode); registerPetiteBean(bean.getClass(), name, SingletonScope.class, wiringMode, false, null); BeanDefinition def = lookupExistingBeanDefinition(name); registerBeanAndWireAndInjectParamsAndInvokeInitMethods(new BeanData(this, def, bean)); }
/** * Wires provided bean with the container and optionally invokes init methods. * Bean is <b>not</b> registered withing container. */ public void wire(final Object bean, final WiringMode wiringMode) { final WiringMode finalWiringMode = petiteConfig.resolveWiringMode(wiringMode); final BeanDefinition def = externalsCache.get( bean.getClass(), () -> { final BeanDefinition beanDefinition = createBeandDefinitionForExternalBeans(bean.getClass(), finalWiringMode); initBeanDefinition(beanDefinition); return beanDefinition; }); registerBeanAndWireAndInjectParamsAndInvokeInitMethods(new BeanData(this, def, bean)); }
/** * Invokes the method of some bean with the container, when its parameters requires to be injected into. * The bean is <b>not</b> registered within container. */ public <T> T invokeMethod(final Object bean, final Method method) { final WiringMode wiringMode = petiteConfig.resolveWiringMode(null); final BeanDefinition def = externalsCache.get( bean.getClass(), () -> { final BeanDefinition beanDefinition = createBeandDefinitionForExternalBeans(bean.getClass(), wiringMode); initBeanDefinition(beanDefinition); return beanDefinition; }); final BeanData beanData = new BeanData(this, def, bean); for (MethodInjectionPoint methodInjectionPoint : def.methods) { if (methodInjectionPoint.method.equals(method)) { return (T) beanData.invokeMethodInjectionPoint(methodInjectionPoint); } } try { return (T) method.invoke(bean); } catch (Exception e) { throw new PetiteException(e); } }
/** * Creates and wires a bean within the container and optionally invokes init methods. However, bean is * <b>not</b> registered. */ @SuppressWarnings({"unchecked"}) public <E> E createBean(final Class<E> type, final WiringMode wiringMode) { final WiringMode finalWiringMode = petiteConfig.resolveWiringMode(wiringMode); final BeanDefinition def = externalsCache.get( type, () -> { final BeanDefinition beanDefinition = createBeandDefinitionForExternalBeans(type, finalWiringMode); initBeanDefinition(beanDefinition); return beanDefinition; }); final BeanData<E> beanData = new BeanData(this, def); registerBeanAndWireAndInjectParamsAndInvokeInitMethods(beanData); return beanData.bean(); }
/** * Wires provided bean with the container and optionally invokes init methods. * Bean is not registered. */ public void wire(Object bean, WiringMode wiringMode, boolean init) { wiringMode = petiteConfig.resolveWiringMode(wiringMode); BeanDefinition def = new BeanDefinition(null, bean.getClass(), null, wiringMode); wireBean(bean, def, new HashMap<String, Object>()); if (init) { invokeInitMethods(bean, def, null); } }
/** * Adds object instance to the container as singleton bean. */ public void addBean(final String name, final Object bean, WiringMode wiringMode) { wiringMode = petiteConfig.resolveWiringMode(wiringMode); registerPetiteBean(bean.getClass(), name, SingletonScope.class, wiringMode, false, null); BeanDefinition def = lookupExistingBeanDefinition(name); registerBeanAndWireAndInjectParamsAndInvokeInitMethods(new BeanData(this, def, bean)); }
/** * Wires provided bean with the container and optionally invokes init methods. * Bean is <b>not</b> registered withing container. */ public void wire(final Object bean, final WiringMode wiringMode) { final WiringMode finalWiringMode = petiteConfig.resolveWiringMode(wiringMode); final BeanDefinition def = externalsCache.get( bean.getClass(), () -> { final BeanDefinition beanDefinition = createBeandDefinitionForExternalBeans(bean.getClass(), finalWiringMode); initBeanDefinition(beanDefinition); return beanDefinition; }); registerBeanAndWireAndInjectParamsAndInvokeInitMethods(new BeanData(this, def, bean)); }
/** * Creates and wires a bean within the container and optionally invokes init methods. However, bean is * <b>not</b> registered. */ @SuppressWarnings({"unchecked"}) public <E> E createBean(Class<E> type, WiringMode wiringMode, boolean init) { wiringMode = petiteConfig.resolveWiringMode(wiringMode); BeanDefinition def = new BeanDefinition(null, type, null, wiringMode); Map<String, Object> acquiredBeans = new HashMap<String, Object>(); Object bean = newBeanInstance(def, acquiredBeans); wireBean(bean, def, acquiredBeans); if (init) { invokeInitMethods(bean, def, null); } return (E) bean; }
/** * Adds object instance to the container as singleton bean. */ public void addBean(String name, Object bean, WiringMode wiringMode) { wiringMode = petiteConfig.resolveWiringMode(wiringMode); registerBean(name, bean.getClass(), SingletonScope.class, wiringMode); BeanDefinition def = lookupExistingBeanDefinition(name); Map<String, Object> acquiredBeans = new HashMap<String, Object>(); acquiredBeans.put(name, bean); wireBean(bean, def, acquiredBeans); invokeInitMethods(bean, def, Boolean.TRUE); injectParams(bean, def); invokeInitMethods(bean, def, Boolean.FALSE); def.scopeRegister(bean); }
/** * Invokes the method of some bean with the container, when its parameters requires to be injected into. * The bean is <b>not</b> registered within container. */ public <T> T invokeMethod(final Object bean, final Method method) { final WiringMode wiringMode = petiteConfig.resolveWiringMode(null); final BeanDefinition def = externalsCache.get( bean.getClass(), () -> { final BeanDefinition beanDefinition = createBeandDefinitionForExternalBeans(bean.getClass(), wiringMode); initBeanDefinition(beanDefinition); return beanDefinition; }); final BeanData beanData = new BeanData(this, def, bean); for (MethodInjectionPoint methodInjectionPoint : def.methods) { if (methodInjectionPoint.method.equals(method)) { return (T) beanData.invokeMethodInjectionPoint(methodInjectionPoint); } } try { return (T) method.invoke(bean); } catch (Exception e) { throw new PetiteException(e); } }
/** * Creates and wires a bean within the container and optionally invokes init methods. However, bean is * <b>not</b> registered. */ @SuppressWarnings({"unchecked"}) public <E> E createBean(final Class<E> type, final WiringMode wiringMode) { final WiringMode finalWiringMode = petiteConfig.resolveWiringMode(wiringMode); final BeanDefinition def = externalsCache.get( type, () -> { final BeanDefinition beanDefinition = createBeandDefinitionForExternalBeans(type, finalWiringMode); initBeanDefinition(beanDefinition); return beanDefinition; }); final BeanData<E> beanData = new BeanData(this, def); registerBeanAndWireAndInjectParamsAndInvokeInitMethods(beanData); return beanData.bean(); }