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 827ce97566a..eee0e160c62 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -621,7 +621,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 && nodeNameEquals(node, META_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, META_ELEMENT)) { Element metaElement = (Element) node; String key = metaElement.getAttribute(KEY_ATTRIBUTE); String value = metaElement.getAttribute(VALUE_ATTRIBUTE); @@ -680,7 +680,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 && nodeNameEquals(node, CONSTRUCTOR_ARG_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, CONSTRUCTOR_ARG_ELEMENT)) { parseConstructorArgElement((Element) node, bd); } } @@ -693,7 +693,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 && nodeNameEquals(node, PROPERTY_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, PROPERTY_ELEMENT)) { parsePropertyElement((Element) node, bd); } } @@ -706,7 +706,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 && nodeNameEquals(node, QUALIFIER_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, QUALIFIER_ELEMENT)) { parseQualifierElement((Element) node, bd); } } @@ -719,7 +719,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 && nodeNameEquals(node, LOOKUP_METHOD_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, LOOKUP_METHOD_ELEMENT)) { Element ele = (Element) node; String methodName = ele.getAttribute(NAME_ATTRIBUTE); String beanRef = ele.getAttribute(BEAN_ELEMENT); @@ -737,7 +737,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 && nodeNameEquals(node, REPLACED_METHOD_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, REPLACED_METHOD_ELEMENT)) { Element replacedMethodEle = (Element) node; String name = replacedMethodEle.getAttribute(NAME_ATTRIBUTE); String callback = replacedMethodEle.getAttribute(REPLACER_ATTRIBUTE); @@ -860,7 +860,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 && nodeNameEquals(node, QUALIFIER_ATTRIBUTE_ELEMENT)) { + if (isDefaultElement(node) && nodeNameEquals(node, QUALIFIER_ATTRIBUTE_ELEMENT)) { Element attributeEle = (Element) node; String attributeName = attributeEle.getAttribute(KEY_ATTRIBUTE); String attributeValue = attributeEle.getAttribute(VALUE_ATTRIBUTE); @@ -952,7 +952,7 @@ public class BeanDefinitionParserDelegate { * <value> tag that might be created */ public Object parsePropertySubElement(Element ele, BeanDefinition bd, String defaultValueType) { - if (!isDefaultNamespace(getNamespaceURI(ele))) { + if (!isDefaultNamespace(ele)) { return parseNestedCustomElement(ele, bd); } else if (nodeNameEquals(ele, BEAN_ELEMENT)) { @@ -1384,10 +1384,6 @@ public class BeanDefinitionParserDelegate { return originalDef; } - public boolean isDefaultNamespace(String namespaceUri) { - return (!StringUtils.hasLength(namespaceUri) || BEANS_NAMESPACE_URI.equals(namespaceUri)); - } - private BeanDefinitionHolder parseNestedCustomElement(Element ele, BeanDefinition containingBd) { BeanDefinition innerDefinition = parseCustomElement(ele, containingBd); if (innerDefinition == null) { @@ -1404,8 +1400,9 @@ public class BeanDefinitionParserDelegate { return new BeanDefinitionHolder(innerDefinition, id); } + /** - * Gets the namespace URI for the supplied node. The default implementation uses {@link Node#getNamespaceURI}. + * Get 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. @@ -1415,7 +1412,17 @@ public class BeanDefinitionParserDelegate { } /** - * Determines whether the name of the supplied node is equal to the supplied name. + * Ges the local name for the supplied {@link Node}. The default implementation calls {@link Node#getLocalName}. + * Subclasses may override the default implementation to provide a different mechanism for getting the local name. + * @param node the Node + * @return the local name of the supplied Node. + */ + public String getLocalName(Node node) { + return node.getLocalName(); + } + + /** + * Determine whether the name of the supplied node is equal to the supplied name. * The default implementation checks the supplied desired name against both {@link Node#getNodeName) * and {@link #getLoclName}. * Subclasses may override the default implementation to provide a different mechanism for comparing node names. @@ -1427,13 +1434,16 @@ public class BeanDefinitionParserDelegate { return desiredName.equals(node.getNodeName()) || desiredName.equals(getLocalName(node)); } - /** - * Gets the local name for the supplied {@link Node}. The default implementation calls {@link Node#getLocalName}. - * Subclasses may override the default implementation to provide a different mechanism for getting the local name. - * @param node the Node - * @return the local name of the supplied Node. - */ - public String getLocalName(Node node) { - return node.getLocalName(); + public boolean isDefaultNamespace(String namespaceUri) { + return (!StringUtils.hasLength(namespaceUri) || BEANS_NAMESPACE_URI.equals(namespaceUri)); } + + public boolean isDefaultNamespace(Node node) { + return isDefaultNamespace(getNamespaceURI(node)); + } + + private boolean isDefaultElement(Node node) { + return (node instanceof Element && isDefaultNamespace(node)); + } + } 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 300fe225b44..e5447ada681 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -122,14 +122,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(delegate.getNamespaceURI(root))) { + if (delegate.isDefaultNamespace(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 = delegate.getNamespaceURI(ele); - if (delegate.isDefaultNamespace(namespaceUri)) { + if (delegate.isDefaultNamespace(ele)) { parseDefaultElement(ele, delegate); } else {