public static PetiteConfig createPetiteConfig() { PetiteConfig petiteConfig = new PetiteConfig(); petiteConfig.setDetectDuplicatedBeanNames(true); petiteConfig.setWireScopedProxy(true); petiteConfig.setDetectMixedScopes(true); return petiteConfig; }
wiringMode = petiteConfig.getDefaultWiringMode(); if (petiteConfig.getDetectDuplicatedBeanNames()) { throw new PetiteException( "Duplicated bean name detected while registering class '" + type.getName() + "'. Petite bean class '" +
final boolean useParamo = petiteConfig.getUseParamo(); final PetiteReferenceType[] lookupReferences = petiteConfig.getLookupReferences(); MethodParameter[] methodParameters = null;
beans.put(name, beanDefinition); if (!petiteConfig.isUseAltBeanNames()) { return; String altName = annotationResolver.resolveBeanName(anInterface, petiteConfig.getUseFullTypeNames());
name = PetiteUtil.resolveBeanName(type, petiteConfig.getUseFullTypeNames()); wiringMode = petiteConfig.getDefaultWiringMode(); scopeType = petiteConfig.getDefaultScope(); if (petiteConfig.getDetectDuplicatedBeanNames()) { throw new PetiteException( "Duplicated bean name detected while registering class '" + type.getName() + "'. Petite bean class '" +
/** * 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)); }
/** * Creates new Petite container using {@link PetiteConfig default configuration}. */ public PetiteContainer() { this(new PetiteConfig()); }
Scope refBeanScope = refBeanDefinition.scope; boolean detectMixedScopes = petiteContainer.config().isDetectMixedScopes(); boolean wireScopedProxy = petiteContainer.config().isWireScopedProxy();
/** * Resolves bean's name from bean annotation or type name. May be used for resolving bean name * of base type during registration of bean subclass. */ public String resolveBeanName(final Class type) { return annotationResolver.resolveBeanName(type, petiteConfig.getUseFullTypeNames()); }
/** * Builds default field references. */ public BeanReferences buildDefaultReference(final PropertyDescriptor propertyDescriptor) { final PetiteReferenceType[] lookupReferences = petiteConfig.getLookupReferences(); final String[] references = new String[lookupReferences.length]; for (int i = 0; i < references.length; i++) { switch (lookupReferences[i]) { case NAME: references[i] = propertyDescriptor.getName(); break; case TYPE_SHORT_NAME: references[i] = StringUtil.uncapitalize(propertyDescriptor.getType().getSimpleName()); break; case TYPE_FULL_NAME: references[i] = propertyDescriptor.getType().getName(); break; } } return BeanReferences.of(references); }
def.params = paramManager.filterParametersForBeanName(def.name, petiteConfig.getResolveReferenceParameters());
/** * Wires bean, injects parameters and invokes init methods. * Such a loooong name :) */ protected void registerBeanAndWireAndInjectParamsAndInvokeInitMethods(final BeanData beanData) { initBeanDefinition(beanData.definition()); beanData.scopeRegister(); beanData.invokeInitMethods(InitMethodInvocationStrategy.POST_CONSTRUCT); beanData.wireBean(); beanData.invokeInitMethods(InitMethodInvocationStrategy.POST_DEFINE); beanData.injectParams(paramManager, petiteConfig.isImplicitParamInjection()); beanData.invokeInitMethods(InitMethodInvocationStrategy.POST_INITIALIZE); beanData.invokeConsumerIfRegistered(); }
/** * 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 new Petite container using {@link PetiteConfig default configuration}. */ public PetiteContainer() { this(new PetiteConfig()); }
beans.put(name, beanDefinition); if (!petiteConfig.isUseAltBeanNames()) { return; String altName = annotationResolver.resolveBeanName(anInterface, petiteConfig.getUseFullTypeNames());
Scope refBeanScope = refBeanDefinition.scope; boolean detectMixedScopes = petiteContainer.config().isDetectMixedScopes(); boolean wireScopedProxy = petiteContainer.config().isWireScopedProxy();
/** * Resolves bean's name from bean annotation or type name. May be used for resolving bean name * of base type during registration of bean subclass. */ public String resolveBeanName(final Class type) { return annotationResolver.resolveBeanName(type, petiteConfig.getUseFullTypeNames()); }
/** * Builds default field references. */ protected String[] fieldDefaultReferences(Field field) { PetiteReference[] lookupReferences = petiteConfig.getLookupReferences(); String[] references = new String[lookupReferences.length]; for (int i = 0; i < references.length; i++) { switch (lookupReferences[i]) { case NAME: references[i] = field.getName(); break; case TYPE_SHORT_NAME: references[i] = StringUtil.uncapitalize(field.getType().getSimpleName()); break; case TYPE_FULL_NAME: references[i] = field.getType().getName(); break; } } return references; }
/** * Injects all parameters. */ protected void injectParams(Object bean, BeanDefinition def) { if (def.params == null) { def.params = resolveBeanParams(def.name, petiteConfig.getResolveReferenceParameters()); } int len = def.name.length() + 1; for (String param : def.params) { Object value = getParameter(param); String destination = param.substring(len); try { BeanUtil.setDeclaredProperty(bean, destination, value); } catch (Exception ex) { throw new PetiteException("Unable to set parameter: '" + param + "' to bean '" + def.name + "'.", ex); } } }
/** * Wires bean, injects parameters and invokes init methods. * Such a loooong name :) */ protected void registerBeanAndWireAndInjectParamsAndInvokeInitMethods(final BeanData beanData) { initBeanDefinition(beanData.definition()); beanData.scopeRegister(); beanData.invokeInitMethods(InitMethodInvocationStrategy.POST_CONSTRUCT); beanData.wireBean(); beanData.invokeInitMethods(InitMethodInvocationStrategy.POST_DEFINE); beanData.injectParams(paramManager, petiteConfig.isImplicitParamInjection()); beanData.invokeInitMethods(InitMethodInvocationStrategy.POST_INITIALIZE); beanData.invokeConsumerIfRegistered(); }