Class BeanDefinitionParserDelegate

java.lang.Object
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate

public class BeanDefinitionParserDelegate extends Object
Stateful delegate class used to parse XML bean definitions. Intended for use by both the main parser and any extension BeanDefinitionParsers or BeanDefinitionDecorators.
Since:
2.0
Author:
Rob Harrop, Juergen Hoeller, Rod Johnson, Mark Fisher, Gary Russell
See Also:
  • Field Details

  • Constructor Details

    • BeanDefinitionParserDelegate

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

    • getReaderContext

      public final XmlReaderContext getReaderContext()
      Get the XmlReaderContext associated with this helper instance.
    • extractSource

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

      protected void error(String message, Node source)
      Report an error with the given message for the given source element.
    • error

      protected void error(String message, Element source)
      Report an error with the given message for the given source element.
    • error

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

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

      public void initDefaults(Element root, @Nullable BeanDefinitionParserDelegate parent)
      Initialize 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 the given parent in case the defaults are not explicitly set locally.
      See Also:
    • populateDefaults

      protected void populateDefaults(DocumentDefaultsDefinition defaults, @Nullable DocumentDefaultsDefinition parentDefaults, 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)
    • getDefaults

      public DocumentDefaultsDefinition getDefaults()
      Return the defaults definition object.
    • 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 String[] getAutowireCandidatePatterns()
      Return any patterns provided in the 'default-autowire-candidates' attribute of the top-level <beans/> element.
    • parseBeanDefinitionElement

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

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

      protected void checkNameUniqueness(String beanName, List<String> aliases, 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(Element ele, 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(Element ele, 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 String className, @Nullable String parentName) throws 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:
      ClassNotFoundException - if bean class resolution was attempted but failed
    • parseMetaElements

      public void parseMetaElements(Element ele, BeanMetadataAttributeAccessor attributeAccessor)
      Parse the meta elements underneath the given element, if any.
    • getAutowireMode

      public int getAutowireMode(String attrValue)
      Parse the given autowire attribute value into AbstractBeanDefinition autowire constants.
    • parseConstructorArgElements

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

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

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

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

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

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

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

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

      @Nullable public Object parsePropertyValue(Element ele, BeanDefinition bd, @Nullable 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 Object parsePropertySubElement(Element ele, @Nullable BeanDefinition bd)
      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
      bd - the current bean definition (if any)
    • parsePropertySubElement

      @Nullable public Object parsePropertySubElement(Element ele, @Nullable BeanDefinition bd, @Nullable 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
      bd - the current bean definition (if any)
      defaultValueType - the default type (class name) for any <value> tag that might be created
    • parseIdRefElement

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

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

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

      public Object parseArrayElement(Element arrayEle, @Nullable BeanDefinition bd)
      Parse an array element.
    • parseListElement

      public List<Object> parseListElement(Element collectionEle, @Nullable BeanDefinition bd)
      Parse a list element.
    • parseSetElement

      public Set<Object> parseSetElement(Element collectionEle, @Nullable BeanDefinition bd)
      Parse a set element.
    • parseCollectionElements

      protected void parseCollectionElements(NodeList elementNodes, Collection<Object> target, @Nullable BeanDefinition bd, String defaultElementType)
    • parseMapElement

      public Map<Object,Object> parseMapElement(Element mapEle, @Nullable BeanDefinition bd)
      Parse a map element.
    • buildTypedStringValueForMap

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

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

      public Properties parsePropsElement(Element propsEle)
      Parse a props element.
    • parseMergeAttribute

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

      @Nullable public BeanDefinition parseCustomElement(Element ele)
      Parse a custom element (outside the default namespace).
      Parameters:
      ele - the element to parse
      Returns:
      the resulting bean definition
    • parseCustomElement

      @Nullable public BeanDefinition parseCustomElement(Element ele, @Nullable BeanDefinition containingBd)
      Parse a custom element (outside the default namespace).
      Parameters:
      ele - the element to parse
      containingBd - the containing bean definition (if any)
      Returns:
      the resulting bean definition
    • decorateBeanDefinitionIfRequired

      public BeanDefinitionHolder decorateBeanDefinitionIfRequired(Element ele, BeanDefinitionHolder originalDef)
      Decorate the given bean definition through a namespace handler, if applicable.
      Parameters:
      ele - the current element
      originalDef - the current bean definition
      Returns:
      the decorated bean definition
    • decorateBeanDefinitionIfRequired

      public BeanDefinitionHolder decorateBeanDefinitionIfRequired(Element ele, BeanDefinitionHolder originalDef, @Nullable BeanDefinition containingBd)
      Decorate the given bean definition through a namespace handler, if applicable.
      Parameters:
      ele - the current element
      originalDef - the current bean definition
      containingBd - the containing bean definition (if any)
      Returns:
      the decorated bean definition
    • decorateIfRequired

      public BeanDefinitionHolder decorateIfRequired(Node node, BeanDefinitionHolder originalDef, @Nullable BeanDefinition containingBd)
      Decorate the given bean definition through a namespace handler, if applicable.
      Parameters:
      node - the current child node
      originalDef - the current bean definition
      containingBd - the containing bean definition (if any)
      Returns:
      the decorated bean definition
    • getNamespaceURI

      @Nullable public String getNamespaceURI(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 String getLocalName(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(Node node, 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 String namespaceUri)
      Determine whether the given URI indicates the default namespace.
    • isDefaultNamespace

      public boolean isDefaultNamespace(Node node)
      Determine whether the given node indicates the default namespace.