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.NamespaceHandler
An 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 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 extensionstatic java.lang.String
SPRING_SCHEMA
static java.lang.String
SPRING_SCHEMA_COMPAT
-
Constructor Summary
Constructors Constructor Description XBeanNamespaceHandler()
-
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 expressionsprotected 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 propertiesprotected 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 configurationprotected java.lang.String
getElementText(org.w3c.dom.Element element)
Returns the text of the elementprotected 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 nameprotected 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 arrayprotected 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 URIorg.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 definitionprotected 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 definitionprotected java.lang.Object
parseChildExtensionBean(org.w3c.dom.Element element)
Iterates the children of this element to find the first nested beanprotected 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 needprotected 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.
-
-
-
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:
init
in 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:
parse
in 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:
decorate
in 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
-
-