Package jodd.petite
Class PetiteBeans
- java.lang.Object
-
- jodd.petite.PetiteBeans
-
- Direct Known Subclasses:
PetiteContainer
public abstract class PetiteBeans extends java.lang.ObjectBase layer ofPetite Container. Holds beans and scopes definitions.
-
-
Field Summary
Fields Modifier and Type Field Description protected AnnotationResolverannotationResolverprotected jodd.util.TypeCache<java.lang.String[]>beanCollectionsMap of all bean collections.protected java.util.Map<java.lang.String,BeanDefinition>beansMap of all beans definitions.protected java.util.Map<java.lang.String,BeanDefinition>beansAltMap of alternative beans names.protected jodd.util.TypeCache<BeanDefinition>externalsCacheCache used for storing the internals about the external types that are not registered withing the container.protected ParamManagerparamManagerprotected PetiteConfigpetiteConfigprotected PetiteResolverspetiteResolversprotected java.util.Map<java.lang.String,ProviderDefinition>providersMap of all providers.protected ReferencesResolverreferencesResolverprotected jodd.util.TypeCache<Scope>scopesMap of all bean scopes.
-
Constructor Summary
Constructors Modifier Constructor Description protectedPetiteBeans(PetiteConfig petiteConfig)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<java.lang.String>beanNames()Returns set of all bean names.intbeansCount()Returns total number of registered beans.PetiteConfigconfig()ReturnsPetite configuration.protected <T> BeanDefinitioncreateBeandDefinitionForExternalBeans(java.lang.Class<T> type, WiringMode wiringMode)CreatesBeanDefinitionfor all external beans.protected <T> BeanDefinitioncreateBeanDefinitionForRegistration(java.lang.String name, java.lang.Class<T> type, Scope scope, WiringMode wiringMode, java.util.function.Consumer<T> consumer)CreatesBeanDefinitiononbean registration.voiddefineParameter(java.lang.String name, java.lang.Object value)Defines new parameter.voiddefineParameters(java.util.Map<?,?> properties)Defines many parameters at once.voiddefineParameters(jodd.props.Props props)Defines many parameters at once fromProps.voidforEachBean(java.util.function.Consumer<BeanDefinition> beanDefinitionConsumer)Iterates all beans.voidforEachBeanType(java.lang.Class type, java.util.function.Consumer<java.lang.String> beanNameConsumer)Iterates all beans that are of given type.java.lang.ObjectgetParameter(java.lang.String name)Returns defined parameter.booleanisBeanNameRegistered(java.lang.String name)Returnstrueif bean name is registered.BeanDefinitionlookupBeanDefinition(java.lang.String name)Lookups forbean definition.protected BeanDefinitionlookupBeanDefinitions(BeanReferences beanReferences)Lookups for first foundedbean definition.protected BeanDefinitionlookupExistingBeanDefinition(java.lang.String name)Lookups for existingbean definition.ParamManagerparamManager()Returns parameter manager.protected voidregisterBean(java.lang.String name, BeanDefinition beanDefinition)Registers bean definition by putting it in the beans map.BeanDefinitionregisterPetiteBean(java.lang.Class type)Registers a bean using provided class that is annotated.<T> BeanDefinition<T>registerPetiteBean(java.lang.Class<T> type, java.lang.String name, java.lang.Class<? extends Scope> scopeType, WiringMode wiringMode, boolean define, java.util.function.Consumer<T> consumer)Registers or defines a bean.<T> BeanDefinition<T>registerPetiteBean(java.lang.Class<T> type, java.util.function.Consumer<T> consumer)Registers a bean using provided class that is annotated.voidregisterPetiteCtorInjectionPoint(java.lang.String beanName, java.lang.Class[] paramTypes, java.lang.String[] references)Registers constructor injection point.voidregisterPetiteDestroyMethods(java.lang.String beanName, java.lang.String... destroyMethodNames)Registers destroy method.voidregisterPetiteInitMethods(java.lang.String beanName, InitMethodInvocationStrategy invocationStrategy, java.lang.String... initMethodNames)Registers init method.voidregisterPetiteMethodInjectionPoint(java.lang.String beanName, java.lang.String methodName, java.lang.Class[] arguments, java.lang.String[] references)Registers method injection point.voidregisterPetitePropertyInjectionPoint(java.lang.String beanName, java.lang.String property, java.lang.String reference)Registers property injection point.voidregisterPetiteProvider(java.lang.String providerName, java.lang.Class type, java.lang.String staticMethodName, java.lang.Class[] arguments)Registers static method provider.voidregisterPetiteProvider(java.lang.String providerName, java.lang.String beanName, java.lang.String methodName, java.lang.Class[] arguments)Registers instance method provider.voidregisterPetiteSetInjectionPoint(java.lang.String beanName, java.lang.String property)Registers set injection point.voidregisterScope(java.lang.Class<? extends Scope> scopeType, Scope scope)Registers new scope.voidremoveBean(java.lang.Class type)Removes all petite beans of provided type.BeanDefinitionremoveBean(java.lang.String name)Removes bean and returns definition of removed bean.java.lang.StringresolveBeanName(java.lang.Class type)Resolves bean's name from bean annotation or type name.protected java.lang.String[]resolveBeanNamesForType(java.lang.Class type)Resolves bean names for give type.<S extends Scope>
SresolveScope(java.lang.Class<S> scopeType)Resolves and registers scope from a scope type.intscopesCount()Returns total number of used scopes.voidsetExternalsCache(jodd.util.TypeCache<BeanDefinition> typeCacheImplementation)Sets the type of cache used for storing the configurations for external types that are not part of the container.
-
-
-
Field Detail
-
beans
protected final java.util.Map<java.lang.String,BeanDefinition> beans
Map of all beans definitions.
-
beansAlt
protected final java.util.Map<java.lang.String,BeanDefinition> beansAlt
Map of alternative beans names.
-
scopes
protected final jodd.util.TypeCache<Scope> scopes
Map of all bean scopes.
-
providers
protected final java.util.Map<java.lang.String,ProviderDefinition> providers
Map of all providers.
-
beanCollections
protected final jodd.util.TypeCache<java.lang.String[]> beanCollections
Map of all bean collections.
-
externalsCache
protected jodd.util.TypeCache<BeanDefinition> externalsCache
Cache used for storing the internals about the external types that are not registered withing the container.
-
petiteConfig
protected final PetiteConfig petiteConfig
-
referencesResolver
protected final ReferencesResolver referencesResolver
-
petiteResolvers
protected final PetiteResolvers petiteResolvers
-
paramManager
protected final ParamManager paramManager
-
annotationResolver
protected final AnnotationResolver annotationResolver
-
-
Constructor Detail
-
PetiteBeans
protected PetiteBeans(PetiteConfig petiteConfig)
-
-
Method Detail
-
setExternalsCache
public void setExternalsCache(jodd.util.TypeCache<BeanDefinition> typeCacheImplementation)
Sets the type of cache used for storing the configurations for external types that are not part of the container. This affects usages of the methods likePetiteContainer.wire(Object)andPetiteContainer.invokeMethod(Object, Method).
-
paramManager
public ParamManager paramManager()
Returns parameter manager.
-
config
public PetiteConfig config()
ReturnsPetite configuration. All changes on config should be done before beans registration process starts.
-
resolveScope
public <S extends Scope> S resolveScope(java.lang.Class<S> scopeType)
Resolves and registers scope from a scope type.
-
registerScope
public void registerScope(java.lang.Class<? extends Scope> scopeType, Scope scope)
Registers new scope. It is not necessary to manually register scopes, since they become registered on first scope resolving. However, it is possible to pre-register some scopes, or to replace one scope type with another. Replacing may be important for testing purposes when using container-depended scopes.
-
lookupBeanDefinition
public BeanDefinition lookupBeanDefinition(java.lang.String name)
Lookups forbean definition. Returnsnullif bean name doesn't exist.
-
lookupBeanDefinitions
protected BeanDefinition lookupBeanDefinitions(BeanReferences beanReferences)
Lookups for first foundedbean definition. Returnsnullif none of the beans is found.
-
lookupExistingBeanDefinition
protected BeanDefinition lookupExistingBeanDefinition(java.lang.String name)
Lookups for existingbean definition. Throws exception if bean is not found.
-
isBeanNameRegistered
public boolean isBeanNameRegistered(java.lang.String name)
Returnstrueif bean name is registered.
-
resolveBeanName
public java.lang.String resolveBeanName(java.lang.Class type)
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.
-
createBeanDefinitionForRegistration
protected <T> BeanDefinition createBeanDefinitionForRegistration(java.lang.String name, java.lang.Class<T> type, Scope scope, WiringMode wiringMode, java.util.function.Consumer<T> consumer)
CreatesBeanDefinitiononbean registration. This is a hook for modifying the bean data, like passing proxifed class etc. By default returns new instance ofBeanDefinition.
-
createBeandDefinitionForExternalBeans
protected <T> BeanDefinition createBeandDefinitionForExternalBeans(java.lang.Class<T> type, WiringMode wiringMode)
CreatesBeanDefinitionfor all external beans.
-
registerPetiteBean
public BeanDefinition registerPetiteBean(java.lang.Class type)
Registers a bean using provided class that is annotated.
-
registerPetiteBean
public <T> BeanDefinition<T> registerPetiteBean(java.lang.Class<T> type, java.util.function.Consumer<T> consumer)
Registers a bean using provided class that is annotated.
-
registerPetiteBean
public <T> BeanDefinition<T> registerPetiteBean(java.lang.Class<T> type, java.lang.String name, java.lang.Class<? extends Scope> scopeType, WiringMode wiringMode, boolean define, java.util.function.Consumer<T> consumer)
Registers or defines a bean.- Parameters:
type- bean type, must be specifiedname- bean name, ifnullit will be resolved from the class (name or annotation)scopeType- bean scope, ifnullit will be resolved from the class (annotation or default one)wiringMode- wiring mode, ifnullit will be resolved from the class (annotation or default one)define- when set totruebean will be defined - all injection points will be set to none
-
registerBean
protected void registerBean(java.lang.String name, BeanDefinition beanDefinition)Registers bean definition by putting it in the beans map. If bean does not have petite name explicitly defined, alternative bean names will be registered.
-
removeBean
public void removeBean(java.lang.Class type)
Removes all petite beans of provided type. Bean name is not resolved from a type! Instead, all beans are iterated and only beans with equal types are removed.- See Also:
removeBean(String)
-
removeBean
public BeanDefinition removeBean(java.lang.String name)
Removes bean and returns definition of removed bean. All resolvers references are deleted, too. Returns bean definition of removed bean ornull.
-
resolveBeanNamesForType
protected java.lang.String[] resolveBeanNamesForType(java.lang.Class type)
Resolves bean names for give type.
-
registerPetiteCtorInjectionPoint
public void registerPetiteCtorInjectionPoint(java.lang.String beanName, java.lang.Class[] paramTypes, java.lang.String[] references)Registers constructor injection point.- Parameters:
beanName- bean nameparamTypes- constructor parameter types, may benullreferences- references for arguments
-
registerPetitePropertyInjectionPoint
public void registerPetitePropertyInjectionPoint(java.lang.String beanName, java.lang.String property, java.lang.String reference)Registers property injection point.- Parameters:
beanName- bean nameproperty- property namereference- explicit injection reference, may benull
-
registerPetiteSetInjectionPoint
public void registerPetiteSetInjectionPoint(java.lang.String beanName, java.lang.String property)Registers set injection point.- Parameters:
beanName- bean nameproperty- set property name
-
registerPetiteMethodInjectionPoint
public void registerPetiteMethodInjectionPoint(java.lang.String beanName, java.lang.String methodName, java.lang.Class[] arguments, java.lang.String[] references)Registers method injection point.- Parameters:
beanName- bean namemethodName- method namearguments- method arguments, may benullreferences- injection references
-
registerPetiteInitMethods
public void registerPetiteInitMethods(java.lang.String beanName, InitMethodInvocationStrategy invocationStrategy, java.lang.String... initMethodNames)Registers init method.- Parameters:
beanName- bean nameinvocationStrategy- moment of invocationinitMethodNames- init method names
-
registerPetiteDestroyMethods
public void registerPetiteDestroyMethods(java.lang.String beanName, java.lang.String... destroyMethodNames)Registers destroy method.- Parameters:
beanName- bean namedestroyMethodNames- destroy method names
-
registerPetiteProvider
public void registerPetiteProvider(java.lang.String providerName, java.lang.String beanName, java.lang.String methodName, java.lang.Class[] arguments)Registers instance method provider.- Parameters:
providerName- provider namebeanName- bean namemethodName- instance method namearguments- method argument types
-
registerPetiteProvider
public void registerPetiteProvider(java.lang.String providerName, java.lang.Class type, java.lang.String staticMethodName, java.lang.Class[] arguments)Registers static method provider.- Parameters:
providerName- provider nametype- class typestaticMethodName- static method namearguments- method argument types
-
beansCount
public int beansCount()
Returns total number of registered beans.
-
scopesCount
public int scopesCount()
Returns total number of used scopes.
-
beanNames
public java.util.Set<java.lang.String> beanNames()
Returns set of all bean names. The returned set is a safe snapshot of all bean names.
-
forEachBean
public void forEachBean(java.util.function.Consumer<BeanDefinition> beanDefinitionConsumer)
Iterates all beans. Iteration occurs over thesnapshot of bean names.
-
forEachBeanType
public void forEachBeanType(java.lang.Class type, java.util.function.Consumer<java.lang.String> beanNameConsumer)Iterates all beans that are of given type.
-
defineParameter
public void defineParameter(java.lang.String name, java.lang.Object value)Defines new parameter. Parameters with same name will be replaced.
-
getParameter
public java.lang.Object getParameter(java.lang.String name)
Returns defined parameter.
-
defineParameters
public void defineParameters(java.util.Map<?,?> properties)
Defines many parameters at once.
-
defineParameters
public void defineParameters(jodd.props.Props props)
Defines many parameters at once fromProps.
-
-