public abstract class NamespaceHandlerSupport extends java.lang.Object implements NamespaceHandler
NamespaceHandlers
.
Parsing and decorating of individual Nodes
is done via BeanDefinitionParser
and BeanDefinitionDecorator
strategy interfaces, respectively.
Provides the registerBeanDefinitionParser(java.lang.String, org.springframework.beans.factory.xml.BeanDefinitionParser)
and registerBeanDefinitionDecorator(java.lang.String, org.springframework.beans.factory.xml.BeanDefinitionDecorator)
methods for registering a BeanDefinitionParser
or BeanDefinitionDecorator
to handle a specific element.
registerBeanDefinitionParser(String, BeanDefinitionParser)
,
registerBeanDefinitionDecorator(String, BeanDefinitionDecorator)
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,BeanDefinitionDecorator> |
attributeDecorators
Stores the
BeanDefinitionDecorator implementations keyed by the local
name of the Attrs they handle. |
private java.util.Map<java.lang.String,BeanDefinitionDecorator> |
decorators
Stores the
BeanDefinitionDecorator implementations keyed by the
local name of the Elements they handle. |
private java.util.Map<java.lang.String,BeanDefinitionParser> |
parsers
Stores the
BeanDefinitionParser implementations keyed by the
local name of the Elements they handle. |
Constructor and Description |
---|
NamespaceHandlerSupport() |
Modifier and Type | Method and Description |
---|---|
BeanDefinitionHolder |
decorate(org.w3c.dom.Node node,
BeanDefinitionHolder definition,
ParserContext parserContext)
Decorates the supplied
Node by delegating to the BeanDefinitionDecorator that
is registered to handle that Node . |
private BeanDefinitionDecorator |
findDecoratorForNode(org.w3c.dom.Node node,
ParserContext parserContext)
Locates the
BeanDefinitionParser from the register implementations using
the local name of the supplied Node . |
private BeanDefinitionParser |
findParserForElement(org.w3c.dom.Element element,
ParserContext parserContext)
Locates the
BeanDefinitionParser from the register implementations using
the local name of the supplied Element . |
BeanDefinition |
parse(org.w3c.dom.Element element,
ParserContext parserContext)
Parses the supplied
Element by delegating to the BeanDefinitionParser that is
registered for that Element . |
protected void |
registerBeanDefinitionDecorator(java.lang.String elementName,
BeanDefinitionDecorator dec)
Subclasses can call this to register the supplied
BeanDefinitionDecorator to
handle the specified element. |
protected void |
registerBeanDefinitionDecoratorForAttribute(java.lang.String attrName,
BeanDefinitionDecorator dec)
Subclasses can call this to register the supplied
BeanDefinitionDecorator to
handle the specified attribute. |
protected void |
registerBeanDefinitionParser(java.lang.String elementName,
BeanDefinitionParser parser)
Subclasses can call this to register the supplied
BeanDefinitionParser to
handle the specified element. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
init
private final java.util.Map<java.lang.String,BeanDefinitionParser> parsers
BeanDefinitionParser
implementations keyed by the
local name of the Elements
they handle.private final java.util.Map<java.lang.String,BeanDefinitionDecorator> decorators
BeanDefinitionDecorator
implementations keyed by the
local name of the Elements
they handle.private final java.util.Map<java.lang.String,BeanDefinitionDecorator> attributeDecorators
BeanDefinitionDecorator
implementations keyed by the local
name of the Attrs
they handle.@Nullable public BeanDefinition parse(org.w3c.dom.Element element, ParserContext parserContext)
Element
by delegating to the BeanDefinitionParser
that is
registered for that Element
.parse
in interface NamespaceHandler
element
- the element that is to be parsed into one or more BeanDefinitions
parserContext
- the object encapsulating the current state of the parsing processBeanDefinition
(can be null
as explained above)@Nullable private BeanDefinitionParser findParserForElement(org.w3c.dom.Element element, ParserContext parserContext)
BeanDefinitionParser
from the register implementations using
the local name of the supplied Element
.@Nullable public BeanDefinitionHolder decorate(org.w3c.dom.Node node, BeanDefinitionHolder definition, ParserContext parserContext)
Node
by delegating to the BeanDefinitionDecorator
that
is registered to handle that Node
.decorate
in interface NamespaceHandler
node
- the source element or attribute that is to be parseddefinition
- the current bean definitionparserContext
- the object encapsulating the current state of the parsing processnull
value is strictly speaking invalid, but will be leniently
treated like the case where the original bean definition gets returned.@Nullable private BeanDefinitionDecorator findDecoratorForNode(org.w3c.dom.Node node, ParserContext parserContext)
BeanDefinitionParser
from the register implementations using
the local name of the supplied Node
. Supports both Elements
and Attrs
.protected final void registerBeanDefinitionParser(java.lang.String elementName, BeanDefinitionParser parser)
BeanDefinitionParser
to
handle the specified element. The element name is the local (non-namespace qualified)
name.protected final void registerBeanDefinitionDecorator(java.lang.String elementName, BeanDefinitionDecorator dec)
BeanDefinitionDecorator
to
handle the specified element. The element name is the local (non-namespace qualified)
name.protected final void registerBeanDefinitionDecoratorForAttribute(java.lang.String attrName, BeanDefinitionDecorator dec)
BeanDefinitionDecorator
to
handle the specified attribute. The attribute name is the local (non-namespace qualified)
name.