org.springframework.beans.factory.xml

Class BeanDefinitionParserDelegate

  • java.lang.Object
    • org.springframework.beans.factory.xml.BeanDefinitionParserDelegate
    • Field Detail

      • BEANS_NAMESPACE_URI

        public static final java.lang.String BEANS_NAMESPACE_URI
        See Also:
        Constant Field Values
      • MULTI_VALUE_ATTRIBUTE_DELIMITERS

        public static final java.lang.String MULTI_VALUE_ATTRIBUTE_DELIMITERS
        See Also:
        Constant Field Values
      • TRUE_VALUE

        public static final java.lang.String TRUE_VALUE
        Value of a T/F attribute that represents true. Anything else represents false. Case seNsItive.
        See Also:
        Constant Field Values
      • DESCRIPTION_ELEMENT

        public static final java.lang.String DESCRIPTION_ELEMENT
        See Also:
        Constant Field Values
      • AUTOWIRE_NO_VALUE

        public static final java.lang.String AUTOWIRE_NO_VALUE
        See Also:
        Constant Field Values
      • AUTOWIRE_BY_NAME_VALUE

        public static final java.lang.String AUTOWIRE_BY_NAME_VALUE
        See Also:
        Constant Field Values
      • AUTOWIRE_BY_TYPE_VALUE

        public static final java.lang.String AUTOWIRE_BY_TYPE_VALUE
        See Also:
        Constant Field Values
      • AUTOWIRE_CONSTRUCTOR_VALUE

        public static final java.lang.String AUTOWIRE_CONSTRUCTOR_VALUE
        See Also:
        Constant Field Values
      • AUTOWIRE_AUTODETECT_VALUE

        public static final java.lang.String AUTOWIRE_AUTODETECT_VALUE
        See Also:
        Constant Field Values
      • PARENT_ATTRIBUTE

        public static final java.lang.String PARENT_ATTRIBUTE
        See Also:
        Constant Field Values
      • ABSTRACT_ATTRIBUTE

        public static final java.lang.String ABSTRACT_ATTRIBUTE
        See Also:
        Constant Field Values
      • LAZY_INIT_ATTRIBUTE

        public static final java.lang.String LAZY_INIT_ATTRIBUTE
        See Also:
        Constant Field Values
      • AUTOWIRE_ATTRIBUTE

        public static final java.lang.String AUTOWIRE_ATTRIBUTE
        See Also:
        Constant Field Values
      • AUTOWIRE_CANDIDATE_ATTRIBUTE

        public static final java.lang.String AUTOWIRE_CANDIDATE_ATTRIBUTE
        See Also:
        Constant Field Values
      • PRIMARY_ATTRIBUTE

        public static final java.lang.String PRIMARY_ATTRIBUTE
        See Also:
        Constant Field Values
      • DEPENDS_ON_ATTRIBUTE

        public static final java.lang.String DEPENDS_ON_ATTRIBUTE
        See Also:
        Constant Field Values
      • INIT_METHOD_ATTRIBUTE

        public static final java.lang.String INIT_METHOD_ATTRIBUTE
        See Also:
        Constant Field Values
      • DESTROY_METHOD_ATTRIBUTE

        public static final java.lang.String DESTROY_METHOD_ATTRIBUTE
        See Also:
        Constant Field Values
      • FACTORY_METHOD_ATTRIBUTE

        public static final java.lang.String FACTORY_METHOD_ATTRIBUTE
        See Also:
        Constant Field Values
      • FACTORY_BEAN_ATTRIBUTE

        public static final java.lang.String FACTORY_BEAN_ATTRIBUTE
        See Also:
        Constant Field Values
      • CONSTRUCTOR_ARG_ELEMENT

        public static final java.lang.String CONSTRUCTOR_ARG_ELEMENT
        See Also:
        Constant Field Values
      • VALUE_TYPE_ATTRIBUTE

        public static final java.lang.String VALUE_TYPE_ATTRIBUTE
        See Also:
        Constant Field Values
      • KEY_TYPE_ATTRIBUTE

        public static final java.lang.String KEY_TYPE_ATTRIBUTE
        See Also:
        Constant Field Values
      • PROPERTY_ELEMENT

        public static final java.lang.String PROPERTY_ELEMENT
        See Also:
        Constant Field Values
      • LOOKUP_METHOD_ELEMENT

        public static final java.lang.String LOOKUP_METHOD_ELEMENT
        See Also:
        Constant Field Values
      • REPLACED_METHOD_ELEMENT

        public static final java.lang.String REPLACED_METHOD_ELEMENT
        See Also:
        Constant Field Values
      • REPLACER_ATTRIBUTE

        public static final java.lang.String REPLACER_ATTRIBUTE
        See Also:
        Constant Field Values
      • ARG_TYPE_ELEMENT

        public static final java.lang.String ARG_TYPE_ELEMENT
        See Also:
        Constant Field Values
      • ARG_TYPE_MATCH_ATTRIBUTE

        public static final java.lang.String ARG_TYPE_MATCH_ATTRIBUTE
        See Also:
        Constant Field Values
      • BEAN_REF_ATTRIBUTE

        public static final java.lang.String BEAN_REF_ATTRIBUTE
        See Also:
        Constant Field Values
      • PARENT_REF_ATTRIBUTE

        public static final java.lang.String PARENT_REF_ATTRIBUTE
        See Also:
        Constant Field Values
      • KEY_REF_ATTRIBUTE

        public static final java.lang.String KEY_REF_ATTRIBUTE
        See Also:
        Constant Field Values
      • VALUE_REF_ATTRIBUTE

        public static final java.lang.String VALUE_REF_ATTRIBUTE
        See Also:
        Constant Field Values
      • QUALIFIER_ELEMENT

        public static final java.lang.String QUALIFIER_ELEMENT
        See Also:
        Constant Field Values
      • QUALIFIER_ATTRIBUTE_ELEMENT

        public static final java.lang.String QUALIFIER_ATTRIBUTE_ELEMENT
        See Also:
        Constant Field Values
      • DEFAULT_LAZY_INIT_ATTRIBUTE

        public static final java.lang.String DEFAULT_LAZY_INIT_ATTRIBUTE
        See Also:
        Constant Field Values
      • DEFAULT_MERGE_ATTRIBUTE

        public static final java.lang.String DEFAULT_MERGE_ATTRIBUTE
        See Also:
        Constant Field Values
      • DEFAULT_AUTOWIRE_ATTRIBUTE

        public static final java.lang.String DEFAULT_AUTOWIRE_ATTRIBUTE
        See Also:
        Constant Field Values
      • DEFAULT_AUTOWIRE_CANDIDATES_ATTRIBUTE

        public static final java.lang.String DEFAULT_AUTOWIRE_CANDIDATES_ATTRIBUTE
        See Also:
        Constant Field Values
      • DEFAULT_INIT_METHOD_ATTRIBUTE

        public static final java.lang.String DEFAULT_INIT_METHOD_ATTRIBUTE
        See Also:
        Constant Field Values
      • DEFAULT_DESTROY_METHOD_ATTRIBUTE

        public static final java.lang.String DEFAULT_DESTROY_METHOD_ATTRIBUTE
        See Also:
        Constant Field Values
      • logger

        protected final Log logger
    • Constructor Detail

      • BeanDefinitionParserDelegate

        public BeanDefinitionParserDelegate(XmlReaderContext readerContext)
        Create a new BeanDefinitionParserDelegate associated with the supplied XmlReaderContext.
    • Method Detail

      • extractSource

        @Nullable
        protected java.lang.Object extractSource(org.w3c.dom.Element ele)
        Invoke the SourceExtractor to pull the source metadata from the supplied Element.
      • error

        protected void error(java.lang.String message,
                             org.w3c.dom.Node source)
        Report an error with the given message for the given source element.
      • error

        protected void error(java.lang.String message,
                             org.w3c.dom.Element source)
        Report an error with the given message for the given source element.
      • error

        protected void error(java.lang.String message,
                             org.w3c.dom.Element source,
                             java.lang.Throwable cause)
        Report an error with the given message for the given source element.
      • initDefaults

        public void initDefaults(org.w3c.dom.Element root)
        Initialize the default settings assuming a null parent delegate.
      • populateDefaults

        protected void populateDefaults(DocumentDefaultsDefinition defaults,
                                        @Nullable
                                        DocumentDefaultsDefinition parentDefaults,
                                        org.w3c.dom.Element root)
        Populate the given DocumentDefaultsDefinition instance with the default lazy-init, autowire, dependency check settings, init-method, destroy-method and merge settings. Support nested 'beans' element use cases by falling back to parentDefaults in case the defaults are not explicitly set locally.
        Parameters:
        defaults - the defaults to populate
        parentDefaults - the parent BeanDefinitionParserDelegate (if any) defaults to fall back to
        root - the root element of the current bean definition document (or nested beans element)
      • getBeanDefinitionDefaults

        public BeanDefinitionDefaults getBeanDefinitionDefaults()
        Return the default settings for bean definitions as indicated within the attributes of the top-level <beans/> element.
      • getAutowireCandidatePatterns

        @Nullable
        public java.lang.String[] getAutowireCandidatePatterns()
        Return any patterns provided in the 'default-autowire-candidates' attribute of the top-level <beans/> element.
      • parseBeanDefinitionElement

        @Nullable
        public BeanDefinitionHolder parseBeanDefinitionElement(org.w3c.dom.Element ele)
        Parses the supplied <bean> element. May return null if there were errors during parse. Errors are reported to the ProblemReporter.
      • checkNameUniqueness

        protected void checkNameUniqueness(java.lang.String beanName,
                                           java.util.List<java.lang.String> aliases,
                                           org.w3c.dom.Element beanElement)
        Validate that the specified bean name and aliases have not been used already within the current level of beans element nesting.
      • parseBeanDefinitionElement

        @Nullable
        public AbstractBeanDefinition parseBeanDefinitionElement(org.w3c.dom.Element ele,
                                                                           java.lang.String beanName,
                                                                           @Nullable
                                                                           BeanDefinition containingBean)
        Parse the bean definition itself, without regard to name or aliases. May return null if problems occurred during the parsing of the bean definition.
      • parseBeanDefinitionAttributes

        public AbstractBeanDefinition parseBeanDefinitionAttributes(org.w3c.dom.Element ele,
                                                                    java.lang.String beanName,
                                                                    @Nullable
                                                                    BeanDefinition containingBean,
                                                                    AbstractBeanDefinition bd)
        Apply the attributes of the given bean element to the given bean * definition.
        Parameters:
        ele - bean declaration element
        beanName - bean name
        containingBean - containing bean definition
        Returns:
        a bean definition initialized according to the bean element attributes
      • createBeanDefinition

        protected AbstractBeanDefinition createBeanDefinition(@Nullable
                                                              java.lang.String className,
                                                              @Nullable
                                                              java.lang.String parentName)
                                                       throws java.lang.ClassNotFoundException
        Create a bean definition for the given class name and parent name.
        Parameters:
        className - the name of the bean class
        parentName - the name of the bean's parent bean
        Returns:
        the newly created bean definition
        Throws:
        java.lang.ClassNotFoundException - if bean class resolution was attempted but failed
      • getAutowireMode

        public int getAutowireMode(java.lang.String attValue)
      • parseConstructorArgElements

        public void parseConstructorArgElements(org.w3c.dom.Element beanEle,
                                                BeanDefinition bd)
        Parse constructor-arg sub-elements of the given bean element.
      • parsePropertyElements

        public void parsePropertyElements(org.w3c.dom.Element beanEle,
                                          BeanDefinition bd)
        Parse property sub-elements of the given bean element.
      • parseQualifierElements

        public void parseQualifierElements(org.w3c.dom.Element beanEle,
                                           AbstractBeanDefinition bd)
        Parse qualifier sub-elements of the given bean element.
      • parseLookupOverrideSubElements

        public void parseLookupOverrideSubElements(org.w3c.dom.Element beanEle,
                                                   MethodOverrides overrides)
        Parse lookup-override sub-elements of the given bean element.
      • parseReplacedMethodSubElements

        public void parseReplacedMethodSubElements(org.w3c.dom.Element beanEle,
                                                   MethodOverrides overrides)
        Parse replaced-method sub-elements of the given bean element.
      • parseConstructorArgElement

        public void parseConstructorArgElement(org.w3c.dom.Element ele,
                                               BeanDefinition bd)
        Parse a constructor-arg element.
      • parsePropertyElement

        public void parsePropertyElement(org.w3c.dom.Element ele,
                                         BeanDefinition bd)
        Parse a property element.
      • parseQualifierElement

        public void parseQualifierElement(org.w3c.dom.Element ele,
                                          AbstractBeanDefinition bd)
        Parse a qualifier element.
      • parsePropertyValue

        @Nullable
        public java.lang.Object parsePropertyValue(org.w3c.dom.Element ele,
                                                             BeanDefinition bd,
                                                             @Nullable
                                                             java.lang.String propertyName)
        Get the value of a property element. May be a list etc. Also used for constructor arguments, "propertyName" being null in this case.
      • parsePropertySubElement

        @Nullable
        public java.lang.Object parsePropertySubElement(org.w3c.dom.Element ele,
                                                                  @Nullable
                                                                  BeanDefinition bd,
                                                                  @Nullable
                                                                  java.lang.String defaultValueType)
        Parse a value, ref or collection sub-element of a property or constructor-arg element.
        Parameters:
        ele - subelement of property element; we don't know which yet
        defaultValueType - the default type (class name) for any <value> tag that might be created
      • parseIdRefElement

        @Nullable
        public java.lang.Object parseIdRefElement(org.w3c.dom.Element ele)
        Return a typed String value Object for the given 'idref' element.
      • parseValueElement

        public java.lang.Object parseValueElement(org.w3c.dom.Element ele,
                                                  @Nullable
                                                  java.lang.String defaultTypeName)
        Return a typed String value Object for the given value element.
      • buildTypedStringValue

        protected TypedStringValue buildTypedStringValue(java.lang.String value,
                                                         @Nullable
                                                         java.lang.String targetTypeName)
                                                  throws java.lang.ClassNotFoundException
        Build a typed String value Object for the given raw value.
        Throws:
        java.lang.ClassNotFoundException
        See Also:
        TypedStringValue
      • parseArrayElement

        public java.lang.Object parseArrayElement(org.w3c.dom.Element arrayEle,
                                                  @Nullable
                                                  BeanDefinition bd)
        Parse an array element.
      • parseListElement

        public java.util.List<java.lang.Object> parseListElement(org.w3c.dom.Element collectionEle,
                                                                 @Nullable
                                                                 BeanDefinition bd)
        Parse a list element.
      • parseSetElement

        public java.util.Set<java.lang.Object> parseSetElement(org.w3c.dom.Element collectionEle,
                                                               @Nullable
                                                               BeanDefinition bd)
        Parse a set element.
      • parseCollectionElements

        protected void parseCollectionElements(org.w3c.dom.NodeList elementNodes,
                                               java.util.Collection<java.lang.Object> target,
                                               @Nullable
                                               BeanDefinition bd,
                                               java.lang.String defaultElementType)
      • parseMapElement

        public java.util.Map<java.lang.Object,java.lang.Object> parseMapElement(org.w3c.dom.Element mapEle,
                                                                                @Nullable
                                                                                BeanDefinition bd)
        Parse a map element.
      • buildTypedStringValueForMap

        protected final java.lang.Object buildTypedStringValueForMap(java.lang.String value,
                                                                     java.lang.String defaultTypeName,
                                                                     org.w3c.dom.Element entryEle)
        Build a typed String value Object for the given raw value.
        See Also:
        TypedStringValue
      • parseKeyElement

        @Nullable
        protected java.lang.Object parseKeyElement(org.w3c.dom.Element keyEle,
                                                             @Nullable
                                                             BeanDefinition bd,
                                                             java.lang.String defaultKeyTypeName)
        Parse a key sub-element of a map element.
      • parsePropsElement

        public java.util.Properties parsePropsElement(org.w3c.dom.Element propsEle)
        Parse a props element.
      • parseMergeAttribute

        public boolean parseMergeAttribute(org.w3c.dom.Element collectionElement)
        Parse the merge attribute of a collection element, if any.
      • getNamespaceURI

        @Nullable
        public java.lang.String getNamespaceURI(org.w3c.dom.Node node)
        Get the namespace URI for the supplied node.

        The default implementation uses Node.getNamespaceURI(). Subclasses may override the default implementation to provide a different namespace identification mechanism.

        Parameters:
        node - the node
      • getLocalName

        public java.lang.String getLocalName(org.w3c.dom.Node node)
        Get the local name for the supplied Node.

        The default implementation calls Node.getLocalName(). Subclasses may override the default implementation to provide a different mechanism for getting the local name.

        Parameters:
        node - the Node
      • nodeNameEquals

        public boolean nodeNameEquals(org.w3c.dom.Node node,
                                      java.lang.String desiredName)
        Determine whether the name of the supplied node is equal to the supplied name.

        The default implementation checks the supplied desired name against both Node.getNodeName() and Node.getLocalName().

        Subclasses may override the default implementation to provide a different mechanism for comparing node names.

        Parameters:
        node - the node to compare
        desiredName - the name to check for
      • isDefaultNamespace

        public boolean isDefaultNamespace(@Nullable
                                          java.lang.String namespaceUri)
      • isDefaultNamespace

        public boolean isDefaultNamespace(org.w3c.dom.Node node)