Class XBeanNamespaceHandler

  • All Implemented Interfaces:
    org.springframework.beans.factory.xml.NamespaceHandler

    public class XBeanNamespaceHandler
    extends java.lang.Object
    implements org.springframework.beans.factory.xml.NamespaceHandler
    An enhanced XML parser capable of handling custom XML schemas.
    Since:
    2.0
    Version:
    $Id$
    Author:
    James Strachan
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addAttributeProperties​(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, java.lang.String className, org.w3c.dom.Element element)
      Parses attribute names and values as being bean property expressions
      protected void addAttributeProperty​(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, org.w3c.dom.Element element, org.w3c.dom.Attr attribute)  
      protected void addContentProperty​(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, org.w3c.dom.Element element)  
      protected void addNestedPropertyElements​(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, java.lang.String className, org.w3c.dom.Element element)
      Lets iterate through the children of this element and create any nested child properties
      protected void addProperty​(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, org.w3c.dom.Element element, java.lang.String localName, java.lang.String value)
      Add a property onto the current BeanDefinition.
      protected void addSpringAttributeValues​(java.lang.String className, org.w3c.dom.Element element)  
      protected void addValueToMap​(java.util.Map map, java.lang.Object keyValue, java.lang.Object value, java.lang.String dups)  
      protected org.w3c.dom.Element cloneElement​(org.w3c.dom.Element element)
      Creates a clone of the element and its attribute (though not its content)
      static void configure​(org.springframework.context.support.AbstractApplicationContext context, org.springframework.beans.factory.xml.XmlBeanDefinitionReader reader)
      Configures the XmlBeanDefinitionReader to work nicely with extensible XML using this reader implementation.
      protected java.beans.PropertyEditor createPropertyEditor​(java.lang.String propertyEditor)  
      protected void declareLifecycleMethods​(org.springframework.beans.factory.config.BeanDefinitionHolder definitionHolder, MappingMetaData metaData, org.w3c.dom.Element element)  
      org.springframework.beans.factory.config.BeanDefinitionHolder decorate​(org.w3c.dom.Node node, org.springframework.beans.factory.config.BeanDefinitionHolder definition, org.springframework.beans.factory.xml.ParserContext parserContext)  
      protected MappingMetaData findNamespaceProperties​(java.lang.String namespaceURI, java.lang.String localName)
      Uses META-INF/services discovery to find a Properties file with the XML marshaling configuration
      protected java.lang.String getElementText​(org.w3c.dom.Element element)
      Returns the text of the element
      protected org.w3c.dom.Element getFirstChildElement​(org.w3c.dom.Element element)  
      protected java.lang.String getLocalName​(org.w3c.dom.Element element)  
      protected java.beans.PropertyDescriptor getPropertyDescriptor​(java.lang.String className, java.lang.String localName)
      Looks up the property decriptor for the given class and property name
      protected java.lang.Object getValue​(java.lang.String value, java.lang.String propertyEditor)  
      void init()  
      protected boolean isCollection​(java.lang.Class type)
      Returns true if the given type is a collection type or an array
      protected boolean isDefaultNamespace​(java.lang.String namespaceUri)  
      protected boolean isEmpty​(java.lang.String uri)  
      protected boolean isMap​(java.lang.Class type)  
      protected java.io.InputStream loadResource​(java.lang.String uri)
      Loads the resource from the given URI
      org.springframework.beans.factory.config.BeanDefinition parse​(org.w3c.dom.Element element, org.springframework.beans.factory.xml.ParserContext parserContext)  
      protected org.springframework.beans.factory.config.BeanDefinitionHolder parseBeanFromExtensionElement​(org.w3c.dom.Element element)
      Parses the non-standard XML element as a Spring bean definition
      protected org.springframework.beans.factory.config.BeanDefinitionHolder parseBeanFromExtensionElement​(org.w3c.dom.Element element, java.lang.String parentClass, java.lang.String property)
      Parses the non-standard XML element as a Spring bean definition
      protected java.lang.Object parseChildExtensionBean​(org.w3c.dom.Element element)
      Iterates the children of this element to find the first nested bean
      protected java.lang.Object parseCustomMapElement​(MappingMetaData metadata, org.w3c.dom.Element element, java.lang.String name)  
      protected java.lang.Object parseListElement​(org.w3c.dom.Element element, java.lang.String name)  
      static void registerCustomEditors​(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory)
      Registers whatever custom editors we need
      protected java.lang.Class resolveBeanClass​(org.springframework.beans.factory.support.AbstractBeanDefinition bd, java.lang.String beanName)  
      protected java.lang.Object tryParseNestedPropertyViaIntrospection​(MappingMetaData metadata, java.lang.String className, org.w3c.dom.Element element)
      Attempts to use introspection to parse the nested property element.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • SPRING_SCHEMA_COMPAT

        public static final java.lang.String SPRING_SCHEMA_COMPAT
        See Also:
        Constant Field Values
      • RESERVED_ELEMENT_NAMES

        protected static final java.lang.String[] RESERVED_ELEMENT_NAMES
        All the reserved Spring XML element names which cannot be overloaded by an XML extension
      • RESERVED_BEAN_ATTRIBUTE_NAMES

        protected static final java.lang.String[] RESERVED_BEAN_ATTRIBUTE_NAMES
    • Constructor Detail

      • XBeanNamespaceHandler

        public XBeanNamespaceHandler()
    • Method Detail

      • init

        public void init()
        Specified by:
        init in interface org.springframework.beans.factory.xml.NamespaceHandler
      • parse

        public org.springframework.beans.factory.config.BeanDefinition parse​(org.w3c.dom.Element element,
                                                                             org.springframework.beans.factory.xml.ParserContext parserContext)
        Specified by:
        parse in interface org.springframework.beans.factory.xml.NamespaceHandler
      • decorate

        public org.springframework.beans.factory.config.BeanDefinitionHolder decorate​(org.w3c.dom.Node node,
                                                                                      org.springframework.beans.factory.config.BeanDefinitionHolder definition,
                                                                                      org.springframework.beans.factory.xml.ParserContext parserContext)
        Specified by:
        decorate in interface org.springframework.beans.factory.xml.NamespaceHandler
      • configure

        public static void configure​(org.springframework.context.support.AbstractApplicationContext context,
                                     org.springframework.beans.factory.xml.XmlBeanDefinitionReader reader)
        Configures the XmlBeanDefinitionReader to work nicely with extensible XML using this reader implementation.
      • registerCustomEditors

        public static void registerCustomEditors​(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory)
        Registers whatever custom editors we need
      • parseBeanFromExtensionElement

        protected org.springframework.beans.factory.config.BeanDefinitionHolder parseBeanFromExtensionElement​(org.w3c.dom.Element element,
                                                                                                              java.lang.String parentClass,
                                                                                                              java.lang.String property)
        Parses the non-standard XML element as a Spring bean definition
      • resolveBeanClass

        protected java.lang.Class resolveBeanClass​(org.springframework.beans.factory.support.AbstractBeanDefinition bd,
                                                   java.lang.String beanName)
      • parseBeanFromExtensionElement

        protected org.springframework.beans.factory.config.BeanDefinitionHolder parseBeanFromExtensionElement​(org.w3c.dom.Element element)
        Parses the non-standard XML element as a Spring bean definition
      • addSpringAttributeValues

        protected void addSpringAttributeValues​(java.lang.String className,
                                                org.w3c.dom.Element element)
      • cloneElement

        protected org.w3c.dom.Element cloneElement​(org.w3c.dom.Element element)
        Creates a clone of the element and its attribute (though not its content)
      • addAttributeProperties

        protected void addAttributeProperties​(org.springframework.beans.factory.config.BeanDefinitionHolder definition,
                                              MappingMetaData metadata,
                                              java.lang.String className,
                                              org.w3c.dom.Element element)
        Parses attribute names and values as being bean property expressions
      • addContentProperty

        protected void addContentProperty​(org.springframework.beans.factory.config.BeanDefinitionHolder definition,
                                          MappingMetaData metadata,
                                          org.w3c.dom.Element element)
      • addAttributeProperty

        protected void addAttributeProperty​(org.springframework.beans.factory.config.BeanDefinitionHolder definition,
                                            MappingMetaData metadata,
                                            org.w3c.dom.Element element,
                                            org.w3c.dom.Attr attribute)
      • addProperty

        protected void addProperty​(org.springframework.beans.factory.config.BeanDefinitionHolder definition,
                                   MappingMetaData metadata,
                                   org.w3c.dom.Element element,
                                   java.lang.String localName,
                                   java.lang.String value)
        Add a property onto the current BeanDefinition.
      • getValue

        protected java.lang.Object getValue​(java.lang.String value,
                                            java.lang.String propertyEditor)
      • createPropertyEditor

        protected java.beans.PropertyEditor createPropertyEditor​(java.lang.String propertyEditor)
      • getLocalName

        protected java.lang.String getLocalName​(org.w3c.dom.Element element)
      • addNestedPropertyElements

        protected void addNestedPropertyElements​(org.springframework.beans.factory.config.BeanDefinitionHolder definition,
                                                 MappingMetaData metadata,
                                                 java.lang.String className,
                                                 org.w3c.dom.Element element)
        Lets iterate through the children of this element and create any nested child properties
      • tryParseNestedPropertyViaIntrospection

        protected java.lang.Object tryParseNestedPropertyViaIntrospection​(MappingMetaData metadata,
                                                                          java.lang.String className,
                                                                          org.w3c.dom.Element element)
        Attempts to use introspection to parse the nested property element.
      • getPropertyDescriptor

        protected java.beans.PropertyDescriptor getPropertyDescriptor​(java.lang.String className,
                                                                      java.lang.String localName)
        Looks up the property decriptor for the given class and property name
      • parseListElement

        protected java.lang.Object parseListElement​(org.w3c.dom.Element element,
                                                    java.lang.String name)
      • parseCustomMapElement

        protected java.lang.Object parseCustomMapElement​(MappingMetaData metadata,
                                                         org.w3c.dom.Element element,
                                                         java.lang.String name)
      • addValueToMap

        protected void addValueToMap​(java.util.Map map,
                                     java.lang.Object keyValue,
                                     java.lang.Object value,
                                     java.lang.String dups)
      • getFirstChildElement

        protected org.w3c.dom.Element getFirstChildElement​(org.w3c.dom.Element element)
      • isMap

        protected boolean isMap​(java.lang.Class type)
      • isCollection

        protected boolean isCollection​(java.lang.Class type)
        Returns true if the given type is a collection type or an array
      • parseChildExtensionBean

        protected java.lang.Object parseChildExtensionBean​(org.w3c.dom.Element element)
        Iterates the children of this element to find the first nested bean
      • findNamespaceProperties

        protected MappingMetaData findNamespaceProperties​(java.lang.String namespaceURI,
                                                          java.lang.String localName)
        Uses META-INF/services discovery to find a Properties file with the XML marshaling configuration
        Parameters:
        namespaceURI - the namespace URI of the element
        localName - the local name of the element
        Returns:
        the properties configuration of the namespace or null if none could be found
      • loadResource

        protected java.io.InputStream loadResource​(java.lang.String uri)
        Loads the resource from the given URI
      • isEmpty

        protected boolean isEmpty​(java.lang.String uri)
      • isDefaultNamespace

        protected boolean isDefaultNamespace​(java.lang.String namespaceUri)
      • declareLifecycleMethods

        protected void declareLifecycleMethods​(org.springframework.beans.factory.config.BeanDefinitionHolder definitionHolder,
                                               MappingMetaData metaData,
                                               org.w3c.dom.Element element)
      • getElementText

        protected java.lang.String getElementText​(org.w3c.dom.Element element)
        Returns the text of the element