Package jodd.petite

Class PetiteBeans

  • Direct Known Subclasses:
    PetiteContainer

    public abstract class PetiteBeans
    extends java.lang.Object
    Base layer of Petite Container. Holds beans and scopes definitions.
    • 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.
    • Constructor Detail

      • PetiteBeans

        protected PetiteBeans​(PetiteConfig petiteConfig)
    • Method Detail

      • paramManager

        public ParamManager paramManager()
        Returns parameter manager.
      • 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 for bean definition. Returns null if bean name doesn't exist.
      • lookupExistingBeanDefinition

        protected BeanDefinition lookupExistingBeanDefinition​(java.lang.String name)
        Lookups for existing bean definition. Throws exception if bean is not found.
      • isBeanNameRegistered

        public boolean isBeanNameRegistered​(java.lang.String name)
        Returns true if 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)
        Creates BeanDefinition on bean registration. This is a hook for modifying the bean data, like passing proxifed class etc. By default returns new instance of BeanDefinition.
      • createBeandDefinitionForExternalBeans

        protected <T> BeanDefinition createBeandDefinitionForExternalBeans​(java.lang.Class<T> type,
                                                                           WiringMode wiringMode)
        Creates BeanDefinition for 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 specified
        name - bean name, if null it will be resolved from the class (name or annotation)
        scopeType - bean scope, if null it will be resolved from the class (annotation or default one)
        wiringMode - wiring mode, if null it will be resolved from the class (annotation or default one)
        define - when set to true bean 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 or null.
      • 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 name
        paramTypes - constructor parameter types, may be null
        references - 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 name
        property - property name
        reference - explicit injection reference, may be null
      • registerPetiteSetInjectionPoint

        public void registerPetiteSetInjectionPoint​(java.lang.String beanName,
                                                    java.lang.String property)
        Registers set injection point.
        Parameters:
        beanName - bean name
        property - 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 name
        methodName - method name
        arguments - method arguments, may be null
        references - injection references
      • registerPetiteInitMethods

        public void registerPetiteInitMethods​(java.lang.String beanName,
                                              InitMethodInvocationStrategy invocationStrategy,
                                              java.lang.String... initMethodNames)
        Registers init method.
        Parameters:
        beanName - bean name
        invocationStrategy - moment of invocation
        initMethodNames - init method names
      • registerPetiteDestroyMethods

        public void registerPetiteDestroyMethods​(java.lang.String beanName,
                                                 java.lang.String... destroyMethodNames)
        Registers destroy method.
        Parameters:
        beanName - bean name
        destroyMethodNames - 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 name
        beanName - bean name
        methodName - instance method name
        arguments - 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 name
        type - class type
        staticMethodName - static method name
        arguments - 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 the snapshot 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 from Props.