diff --git a/org.springframework.beans/beans.iml b/org.springframework.beans/beans.iml
index 6529a8e08a6..3c72a061f01 100644
--- a/org.springframework.beans/beans.iml
+++ b/org.springframework.beans/beans.iml
@@ -1,28 +1,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java
index 193d411ff3e..b0719aa07db 100644
--- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java
+++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java
@@ -618,7 +618,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = ele.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, META_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, META_ELEMENT)) {
Element metaElement = (Element) node;
String key = metaElement.getAttribute(KEY_ATTRIBUTE);
String value = metaElement.getAttribute(VALUE_ATTRIBUTE);
@@ -677,7 +677,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = beanEle.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, CONSTRUCTOR_ARG_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, CONSTRUCTOR_ARG_ELEMENT)) {
parseConstructorArgElement((Element) node, bd);
}
}
@@ -690,7 +690,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = beanEle.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, PROPERTY_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, PROPERTY_ELEMENT)) {
parsePropertyElement((Element) node, bd);
}
}
@@ -703,7 +703,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = beanEle.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, QUALIFIER_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, QUALIFIER_ELEMENT)) {
parseQualifierElement((Element) node, bd);
}
}
@@ -716,7 +716,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = beanEle.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, LOOKUP_METHOD_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, LOOKUP_METHOD_ELEMENT)) {
Element ele = (Element) node;
String methodName = ele.getAttribute(NAME_ATTRIBUTE);
String beanRef = ele.getAttribute(BEAN_ELEMENT);
@@ -734,7 +734,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = beanEle.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, REPLACED_METHOD_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, REPLACED_METHOD_ELEMENT)) {
Element replacedMethodEle = (Element) node;
String name = replacedMethodEle.getAttribute(NAME_ATTRIBUTE);
String callback = replacedMethodEle.getAttribute(REPLACER_ATTRIBUTE);
@@ -852,7 +852,7 @@ public class BeanDefinitionParserDelegate {
NodeList nl = ele.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && DomUtils.nodeNameEquals(node, QUALIFIER_ATTRIBUTE_ELEMENT)) {
+ if (node instanceof Element && nodeNameEquals(node, QUALIFIER_ATTRIBUTE_ELEMENT)) {
Element attributeEle = (Element) node;
String attributeName = attributeEle.getAttribute(KEY_ATTRIBUTE);
String attributeValue = attributeEle.getAttribute(VALUE_ATTRIBUTE);
@@ -888,8 +888,8 @@ public class BeanDefinitionParserDelegate {
Element subElement = null;
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
- if (node instanceof Element && !DomUtils.nodeNameEquals(node, DESCRIPTION_ELEMENT) &&
- !DomUtils.nodeNameEquals(node, META_ELEMENT)) {
+ if (node instanceof Element && !nodeNameEquals(node, DESCRIPTION_ELEMENT) &&
+ !nodeNameEquals(node, META_ELEMENT)) {
// Child element is what we're looking for.
if (subElement != null) {
error(elementName + " must not contain more than one sub-element", ele);
@@ -944,17 +944,17 @@ public class BeanDefinitionParserDelegate {
* <value> tag that might be created
*/
public Object parsePropertySubElement(Element ele, BeanDefinition bd, String defaultValueType) {
- if (!isDefaultNamespace(ele.getNamespaceURI())) {
+ if (!isDefaultNamespace(getNamespaceURI(ele))) {
return parseNestedCustomElement(ele, bd);
}
- else if (DomUtils.nodeNameEquals(ele, BEAN_ELEMENT)) {
+ else if (nodeNameEquals(ele, BEAN_ELEMENT)) {
BeanDefinitionHolder nestedBd = parseBeanDefinitionElement(ele, bd);
if (nestedBd != null) {
nestedBd = decorateBeanDefinitionIfRequired(ele, nestedBd, bd);
}
return nestedBd;
}
- else if (DomUtils.nodeNameEquals(ele, REF_ELEMENT)) {
+ else if (nodeNameEquals(ele, REF_ELEMENT)) {
// A generic reference to any name of any bean.
String refName = ele.getAttribute(BEAN_REF_ATTRIBUTE);
boolean toParent = false;
@@ -979,32 +979,32 @@ public class BeanDefinitionParserDelegate {
ref.setSource(extractSource(ele));
return ref;
}
- else if (DomUtils.nodeNameEquals(ele, IDREF_ELEMENT)) {
+ else if (nodeNameEquals(ele, IDREF_ELEMENT)) {
return parseIdRefElement(ele);
}
- else if (DomUtils.nodeNameEquals(ele, VALUE_ELEMENT)) {
+ else if (nodeNameEquals(ele, VALUE_ELEMENT)) {
return parseValueElement(ele, defaultValueType);
}
- else if (DomUtils.nodeNameEquals(ele, NULL_ELEMENT)) {
+ else if (nodeNameEquals(ele, NULL_ELEMENT)) {
// It's a distinguished null value. Let's wrap it in a TypedStringValue
// object in order to preserve the source location.
TypedStringValue nullHolder = new TypedStringValue(null);
nullHolder.setSource(extractSource(ele));
return nullHolder;
}
- else if (DomUtils.nodeNameEquals(ele, ARRAY_ELEMENT)) {
+ else if (nodeNameEquals(ele, ARRAY_ELEMENT)) {
return parseArrayElement(ele, bd);
}
- else if (DomUtils.nodeNameEquals(ele, LIST_ELEMENT)) {
+ else if (nodeNameEquals(ele, LIST_ELEMENT)) {
return parseListElement(ele, bd);
}
- else if (DomUtils.nodeNameEquals(ele, SET_ELEMENT)) {
+ else if (nodeNameEquals(ele, SET_ELEMENT)) {
return parseSetElement(ele, bd);
}
- else if (DomUtils.nodeNameEquals(ele, MAP_ELEMENT)) {
+ else if (nodeNameEquals(ele, MAP_ELEMENT)) {
return parseMapElement(ele, bd);
}
- else if (DomUtils.nodeNameEquals(ele, PROPS_ELEMENT)) {
+ else if (nodeNameEquals(ele, PROPS_ELEMENT)) {
return parsePropsElement(ele);
}
else {
@@ -1128,7 +1128,7 @@ public class BeanDefinitionParserDelegate {
for (int i = 0; i < elementNodes.getLength(); i++) {
Node node = elementNodes.item(i);
- if (node instanceof Element && !DomUtils.nodeNameEquals(node, DESCRIPTION_ELEMENT)) {
+ if (node instanceof Element && !nodeNameEquals(node, DESCRIPTION_ELEMENT)) {
target.add(parsePropertySubElement((Element) node, bd, defaultElementType));
}
}
@@ -1158,7 +1158,7 @@ public class BeanDefinitionParserDelegate {
Node node = entrySubNodes.item(j);
if (node instanceof Element) {
Element candidateEle = (Element) node;
- if (DomUtils.nodeNameEquals(candidateEle, KEY_ELEMENT)) {
+ if (nodeNameEquals(candidateEle, KEY_ELEMENT)) {
if (keyEle != null) {
error(" element is only allowed to contain one sub-element", entryEle);
}
@@ -1318,7 +1318,7 @@ public class BeanDefinitionParserDelegate {
}
public BeanDefinition parseCustomElement(Element ele, BeanDefinition containingBd) {
- String namespaceUri = ele.getNamespaceURI();
+ String namespaceUri = getNamespaceURI(ele);
NamespaceHandler handler = this.readerContext.getNamespaceHandlerResolver().resolve(namespaceUri);
if (handler == null) {
error("Unable to locate Spring NamespaceHandler for XML schema namespace [" + namespaceUri + "]", ele);
@@ -1357,7 +1357,7 @@ public class BeanDefinitionParserDelegate {
private BeanDefinitionHolder decorateIfRequired(
Node node, BeanDefinitionHolder originalDef, BeanDefinition containingBd) {
- String namespaceUri = node.getNamespaceURI();
+ String namespaceUri = getNamespaceURI(node);
if (!isDefaultNamespace(namespaceUri)) {
NamespaceHandler handler = this.readerContext.getNamespaceHandlerResolver().resolve(namespaceUri);
if (handler != null) {
@@ -1396,4 +1396,25 @@ public class BeanDefinitionParserDelegate {
return new BeanDefinitionHolder(innerDefinition, id);
}
+ /**
+ * Gets the namespace URI for the supplied node. The default implementation uses {@link Node#getNamespaceURI}.
+ * Subclasses may override the default implementation to provide a different namespace identification mechanism.
+ * @param node the node
+ * @return the namespace URI of the the node.
+ */
+ public String getNamespaceURI(Node node) {
+ return node.getNamespaceURI();
+ }
+
+ /**
+ * Determines whether the name of the supplied node is equal to the supplied name.
+ * The default implementation delegates to {@link DomUtils#nodeNameEquals}.
+ * Subclasses may override the default implementatino to provide a different mechanism for comparing node names.
+ * @param node the node to compare
+ * @param desiredName the name to check for
+ * @return true if the names are equal otherwise false.
+ */
+ public boolean nodeNameEquals(Node node, String desiredName) {
+ return DomUtils.nodeNameEquals(node, desiredName);
+ }
}
diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java
index 8f6508623af..8e50e81007f 100644
--- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java
+++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java
@@ -35,7 +35,6 @@ import org.springframework.core.io.Resource;
import org.springframework.core.io.support.ResourcePatternUtils;
import org.springframework.util.StringUtils;
import org.springframework.util.SystemPropertyUtils;
-import org.springframework.util.xml.DomUtils;
/**
* Default implementation of the {@link BeanDefinitionDocumentReader} interface.
@@ -121,13 +120,13 @@ public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocume
* @param root the DOM root element of the document
*/
protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) {
- if (delegate.isDefaultNamespace(root.getNamespaceURI())) {
+ if (delegate.isDefaultNamespace(delegate.getNamespaceURI(root))) {
NodeList nl = root.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
Element ele = (Element) node;
- String namespaceUri = ele.getNamespaceURI();
+ String namespaceUri = delegate.getNamespaceURI(ele);
if (delegate.isDefaultNamespace(namespaceUri)) {
parseDefaultElement(ele, delegate);
}
@@ -143,13 +142,13 @@ public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocume
}
private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) {
- if (DomUtils.nodeNameEquals(ele, IMPORT_ELEMENT)) {
+ if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {
importBeanDefinitionResource(ele);
}
- else if (DomUtils.nodeNameEquals(ele, ALIAS_ELEMENT)) {
+ else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {
processAliasRegistration(ele);
}
- else if (DomUtils.nodeNameEquals(ele, BEAN_ELEMENT)) {
+ else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {
processBeanDefinition(ele, delegate);
}
}