Class XBeanNamespaceHandler
- java.lang.Object
-
- org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler
-
- All Implemented Interfaces:
org.springframework.beans.factory.xml.NamespaceHandler
public class XBeanNamespaceHandler extends java.lang.Object implements org.springframework.beans.factory.xml.NamespaceHandlerAn enhanced XML parser capable of handling custom XML schemas.- Since:
- 2.0
- Version:
- $Id$
- Author:
- James Strachan
-
-
Field Summary
Fields Modifier and Type Field Description protected NamedConstructorArgsnamedConstructorArgsprotected static java.lang.String[]RESERVED_BEAN_ATTRIBUTE_NAMESprotected static java.lang.String[]RESERVED_ELEMENT_NAMESAll the reserved Spring XML element names which cannot be overloaded by an XML extensionstatic java.lang.StringSPRING_SCHEMAstatic java.lang.StringSPRING_SCHEMA_COMPAT
-
Constructor Summary
Constructors Constructor Description XBeanNamespaceHandler()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddAttributeProperties(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 expressionsprotected voidaddAttributeProperty(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, org.w3c.dom.Element element, org.w3c.dom.Attr attribute)protected voidaddContentProperty(org.springframework.beans.factory.config.BeanDefinitionHolder definition, MappingMetaData metadata, org.w3c.dom.Element element)protected voidaddNestedPropertyElements(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 propertiesprotected voidaddProperty(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 voidaddSpringAttributeValues(java.lang.String className, org.w3c.dom.Element element)protected voidaddValueToMap(java.util.Map map, java.lang.Object keyValue, java.lang.Object value, java.lang.String dups)protected org.w3c.dom.ElementcloneElement(org.w3c.dom.Element element)Creates a clone of the element and its attribute (though not its content)static voidconfigure(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.PropertyEditorcreatePropertyEditor(java.lang.String propertyEditor)protected voiddeclareLifecycleMethods(org.springframework.beans.factory.config.BeanDefinitionHolder definitionHolder, MappingMetaData metaData, org.w3c.dom.Element element)org.springframework.beans.factory.config.BeanDefinitionHolderdecorate(org.w3c.dom.Node node, org.springframework.beans.factory.config.BeanDefinitionHolder definition, org.springframework.beans.factory.xml.ParserContext parserContext)protected MappingMetaDatafindNamespaceProperties(java.lang.String namespaceURI, java.lang.String localName)Uses META-INF/services discovery to find a Properties file with the XML marshaling configurationprotected java.lang.StringgetElementText(org.w3c.dom.Element element)Returns the text of the elementprotected org.w3c.dom.ElementgetFirstChildElement(org.w3c.dom.Element element)protected java.lang.StringgetLocalName(org.w3c.dom.Element element)protected java.beans.PropertyDescriptorgetPropertyDescriptor(java.lang.String className, java.lang.String localName)Looks up the property decriptor for the given class and property nameprotected java.lang.ObjectgetValue(java.lang.String value, java.lang.String propertyEditor)voidinit()protected booleanisCollection(java.lang.Class type)Returns true if the given type is a collection type or an arrayprotected booleanisDefaultNamespace(java.lang.String namespaceUri)protected booleanisEmpty(java.lang.String uri)protected booleanisMap(java.lang.Class type)protected java.io.InputStreamloadResource(java.lang.String uri)Loads the resource from the given URIorg.springframework.beans.factory.config.BeanDefinitionparse(org.w3c.dom.Element element, org.springframework.beans.factory.xml.ParserContext parserContext)protected org.springframework.beans.factory.config.BeanDefinitionHolderparseBeanFromExtensionElement(org.w3c.dom.Element element)Parses the non-standard XML element as a Spring bean definitionprotected org.springframework.beans.factory.config.BeanDefinitionHolderparseBeanFromExtensionElement(org.w3c.dom.Element element, java.lang.String parentClass, java.lang.String property)Parses the non-standard XML element as a Spring bean definitionprotected java.lang.ObjectparseChildExtensionBean(org.w3c.dom.Element element)Iterates the children of this element to find the first nested beanprotected java.lang.ObjectparseCustomMapElement(MappingMetaData metadata, org.w3c.dom.Element element, java.lang.String name)protected java.lang.ObjectparseListElement(org.w3c.dom.Element element, java.lang.String name)static voidregisterCustomEditors(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory)Registers whatever custom editors we needprotected java.lang.ClassresolveBeanClass(org.springframework.beans.factory.support.AbstractBeanDefinition bd, java.lang.String beanName)protected java.lang.ObjecttryParseNestedPropertyViaIntrospection(MappingMetaData metadata, java.lang.String className, org.w3c.dom.Element element)Attempts to use introspection to parse the nested property element.
-
-
-
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
-
-
Method Detail
-
init
public void init()
- Specified by:
initin interfaceorg.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:
parsein interfaceorg.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:
decoratein interfaceorg.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 elementlocalName- 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
-
-