org.apache.xbean.spring.context.impl
Class XBeanXmlBeanDefinitionParser

java.lang.Object
  extended byorg.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser
      extended byorg.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionParser
All Implemented Interfaces:
org.springframework.beans.factory.xml.XmlBeanDefinitionParser

public class XBeanXmlBeanDefinitionParser
extends org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser

An enhanced XML parser capable of handling custom XML schemas.

Since:
2.0
Version:
$Id$
Author:
James Strachan

Field Summary
protected  NamedConstructorArgs namedConstructorArgs
           
protected static java.lang.String[] RESERVED_BEAN_ATTRIBUTE_NAMES
           
protected static java.lang.String[] RESERVED_ELEMENT_NAMES
          All the reserved Spring XML element names which cannot be overloaded by an XML extension
static java.lang.String SPRING_SCHEMA
           
static java.lang.String SPRING_SCHEMA_COMPAT
           
 
Fields inherited from class org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser
ABSTRACT_ATTRIBUTE, ALIAS_ATTRIBUTE, ALIAS_ELEMENT, ARG_TYPE_ELEMENT, ARG_TYPE_MATCH_ATTRIBUTE, AUTOWIRE_ATTRIBUTE, AUTOWIRE_AUTODETECT_VALUE, AUTOWIRE_BY_NAME_VALUE, AUTOWIRE_BY_TYPE_VALUE, AUTOWIRE_CONSTRUCTOR_VALUE, BEAN_ELEMENT, BEAN_NAME_DELIMITERS, BEAN_REF_ATTRIBUTE, CLASS_ATTRIBUTE, CONSTRUCTOR_ARG_ELEMENT, DEFAULT_AUTOWIRE_ATTRIBUTE, DEFAULT_DEPENDENCY_CHECK_ATTRIBUTE, DEFAULT_DESTROY_METHOD_ATTRIBUTE, DEFAULT_INIT_METHOD_ATTRIBUTE, DEFAULT_LAZY_INIT_ATTRIBUTE, DEFAULT_VALUE, DEPENDENCY_CHECK_ALL_ATTRIBUTE_VALUE, DEPENDENCY_CHECK_ATTRIBUTE, DEPENDENCY_CHECK_OBJECTS_ATTRIBUTE_VALUE, DEPENDENCY_CHECK_SIMPLE_ATTRIBUTE_VALUE, DEPENDS_ON_ATTRIBUTE, DESCRIPTION_ELEMENT, DESTROY_METHOD_ATTRIBUTE, ENTRY_ELEMENT, FACTORY_BEAN_ATTRIBUTE, FACTORY_METHOD_ATTRIBUTE, ID_ATTRIBUTE, IDREF_ELEMENT, IMPORT_ELEMENT, INDEX_ATTRIBUTE, INIT_METHOD_ATTRIBUTE, KEY_ATTRIBUTE, KEY_ELEMENT, KEY_REF_ATTRIBUTE, LAZY_INIT_ATTRIBUTE, LIST_ELEMENT, LOCAL_REF_ATTRIBUTE, logger, LOOKUP_METHOD_ELEMENT, MAP_ELEMENT, NAME_ATTRIBUTE, NULL_ELEMENT, PARENT_ATTRIBUTE, PARENT_REF_ATTRIBUTE, PROP_ELEMENT, PROPERTY_ELEMENT, PROPS_ELEMENT, REF_ATTRIBUTE, REF_ELEMENT, REPLACED_METHOD_ELEMENT, REPLACER_ATTRIBUTE, RESOURCE_ATTRIBUTE, SET_ELEMENT, SINGLETON_ATTRIBUTE, TRUE_VALUE, TYPE_ATTRIBUTE, VALUE_ATTRIBUTE, VALUE_ELEMENT, VALUE_REF_ATTRIBUTE
 
Constructor Summary
XBeanXmlBeanDefinitionParser()
           
 
Method Summary
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  org.w3c.dom.Element cloneElement(org.w3c.dom.Element element)
          Creates a clone of the element and its attribute (though not its content)
protected  void coerceNamespaceAwarePropertyValues(org.springframework.beans.factory.config.BeanDefinitionHolder definitionHolder, org.w3c.dom.Element element)
          Any namespace aware property values (such as QNames) need to be coerced while we still have access to the XML Element from which its value comes - so lets do that now before we trash the DOM and just have the bean definition.
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  void declareLifecycleMethods(org.springframework.beans.factory.config.BeanDefinitionHolder definitionHolder, MappingMetaData metaData, org.w3c.dom.Element element)
           
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.beans.BeanInfo getBeanInfo(java.lang.String className)
           
protected  java.lang.String getElementText(org.w3c.dom.Element element)
          Returns the text of the 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)
           
protected  boolean isCollection(java.lang.Class type)
          Returns true if the given type is a collection type or an array
protected  boolean isEmpty(java.lang.String uri)
           
protected  boolean isMap(java.lang.Class type)
           
protected  boolean isQnameIsOnClassPath()
           
protected  java.lang.Class loadClass(java.lang.String name)
          Attempts to load the class on the current thread context class loader or the class loader which loaded us
protected  java.io.InputStream loadResource(java.lang.String uri)
          Loads the resource from the given URI
protected  org.springframework.beans.factory.config.BeanDefinitionHolder parseBeanDefinitionElement(org.w3c.dom.Element ele, boolean isInnerBean)
           
protected  int parseBeanDefinitions(org.w3c.dom.Element root)
           
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 parseNestedPropertyViaIntrospection(MappingMetaData metadata, java.lang.String className, org.w3c.dom.Element element, java.beans.PropertyDescriptor descriptor)
          Attempts to use introspection to parse the nested property element.
protected  java.lang.Object parsePropertySubElement(org.w3c.dom.Element element, java.lang.String beanName)
           
protected  java.lang.Object parseQNameElement(org.w3c.dom.Element element)
           
static void registerCustomEditors(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory)
          Registers whatever custom editors we need
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 org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser
getAutowireMode, getBeanDefinitionReader, getDefaultAutowire, getDefaultDependencyCheck, getDefaultDestroyMethod, getDefaultInitMethod, getDefaultLazyInit, getDependencyCheck, getResource, importBeanDefinitionResource, initDefaults, parseBeanDefinitionElement, parseConstructorArgElement, parseConstructorArgElements, parseKeyElement, parseListElement, parseLookupOverrideSubElements, parseMapElement, parsePropertyElement, parsePropertyElements, parsePropertyValue, parsePropsElement, parseReplacedMethodSubElements, parseSetElement, postProcessXml, preProcessXml, registerBeanDefinitions, setDefaultAutowire, setDefaultDependencyCheck, setDefaultDestroyMethod, setDefaultInitMethod, setDefaultLazyInit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SPRING_SCHEMA

public static final java.lang.String SPRING_SCHEMA
See Also:
Constant Field Values

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

namedConstructorArgs

protected final NamedConstructorArgs namedConstructorArgs
Constructor Detail

XBeanXmlBeanDefinitionParser

public XBeanXmlBeanDefinitionParser()
Method Detail

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


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)

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.


coerceNamespaceAwarePropertyValues

protected void coerceNamespaceAwarePropertyValues(org.springframework.beans.factory.config.BeanDefinitionHolder definitionHolder,
                                                  org.w3c.dom.Element element)
Any namespace aware property values (such as QNames) need to be coerced while we still have access to the XML Element from which its value comes - so lets do that now before we trash the DOM and just have the bean definition.


isQnameIsOnClassPath

protected boolean isQnameIsOnClassPath()

getBeanInfo

protected java.beans.BeanInfo getBeanInfo(java.lang.String className)
                                   throws org.springframework.beans.factory.BeanDefinitionStoreException
Throws:
org.springframework.beans.factory.BeanDefinitionStoreException

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


parseNestedPropertyViaIntrospection

protected java.lang.Object parseNestedPropertyViaIntrospection(MappingMetaData metadata,
                                                               java.lang.String className,
                                                               org.w3c.dom.Element element,
                                                               java.beans.PropertyDescriptor descriptor)
Attempts to use introspection to parse the nested property element.


parseCustomMapElement

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

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


loadClass

protected java.lang.Class loadClass(java.lang.String name)
                             throws java.lang.ClassNotFoundException
Attempts to load the class on the current thread context class loader or the class loader which loaded us

Throws:
java.lang.ClassNotFoundException

isEmpty

protected boolean isEmpty(java.lang.String uri)

declareLifecycleMethods

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

parseBeanDefinitions

protected int parseBeanDefinitions(org.w3c.dom.Element root)
                            throws org.springframework.beans.factory.BeanDefinitionStoreException
Throws:
org.springframework.beans.factory.BeanDefinitionStoreException

parseBeanDefinitionElement

protected org.springframework.beans.factory.config.BeanDefinitionHolder parseBeanDefinitionElement(org.w3c.dom.Element ele,
                                                                                                   boolean isInnerBean)
                                                                                            throws org.springframework.beans.factory.BeanDefinitionStoreException
Throws:
org.springframework.beans.factory.BeanDefinitionStoreException

parsePropertySubElement

protected java.lang.Object parsePropertySubElement(org.w3c.dom.Element element,
                                                   java.lang.String beanName)
                                            throws org.springframework.beans.factory.BeanDefinitionStoreException
Throws:
org.springframework.beans.factory.BeanDefinitionStoreException

parseQNameElement

protected java.lang.Object parseQNameElement(org.w3c.dom.Element element)

getElementText

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



Copyright © {inceptionYear}-2006 Apache Software Foundation. All Rights Reserved.