diff --git a/org.springframework.aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java b/org.springframework.aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java
index 55e24954224..a669b3b861f 100644
--- a/org.springframework.aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java
+++ b/org.springframework.aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java
@@ -106,7 +106,7 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
for (int i = 0; i < childNodes.getLength(); i++) {
Node node = childNodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
- String localName = node.getLocalName();
+ String localName = parserContext.getDelegate().getLocalName(node);
if (POINTCUT.equals(localName)) {
parsePointcut((Element) node, parserContext);
}
@@ -216,7 +216,7 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
boolean adviceFoundAlready = false;
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
- if (isAdviceNode(node)) {
+ if (isAdviceNode(node, parserContext)) {
if (!adviceFoundAlready) {
adviceFoundAlready = true;
if (!StringUtils.hasText(aspectName)) {
@@ -264,12 +264,12 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
* 'before', 'after', 'after-returning',
* 'after-throwing' or 'around'.
*/
- private boolean isAdviceNode(Node aNode) {
+ private boolean isAdviceNode(Node aNode, ParserContext parserContext) {
if (!(aNode instanceof Element)) {
return false;
}
else {
- String name = aNode.getLocalName();
+ String name = parserContext.getDelegate().getLocalName(aNode);
return (BEFORE.equals(name) || AFTER.equals(name) || AFTER_RETURNING_ELEMENT.equals(name) ||
AFTER_THROWING_ELEMENT.equals(name) || AROUND.equals(name));
}
@@ -317,7 +317,7 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
List beanDefinitions, List beanReferences) {
try {
- this.parseState.push(new AdviceEntry(adviceElement.getLocalName()));
+ this.parseState.push(new AdviceEntry(parserContext.getDelegate().getLocalName(adviceElement)));
// create the method factory bean
RootBeanDefinition methodDefinition = new RootBeanDefinition(MethodLocatingFactoryBean.class);
@@ -366,7 +366,7 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
RootBeanDefinition methodDef, RootBeanDefinition aspectFactoryDef,
List beanDefinitions, List beanReferences) {
- RootBeanDefinition adviceDefinition = new RootBeanDefinition(getAdviceClass(adviceElement));
+ RootBeanDefinition adviceDefinition = new RootBeanDefinition(getAdviceClass(adviceElement, parserContext));
adviceDefinition.setSource(parserContext.extractSource(adviceElement));
adviceDefinition.getPropertyValues().addPropertyValue(ASPECT_NAME_PROPERTY, aspectName);
@@ -407,8 +407,8 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
/**
* Gets the advice implementation class corresponding to the supplied {@link Element}.
*/
- private Class getAdviceClass(Element adviceElement) {
- String elementName = adviceElement.getLocalName();
+ private Class getAdviceClass(Element adviceElement, ParserContext parserContext) {
+ String elementName = parserContext.getDelegate().getLocalName(adviceElement);
if (BEFORE.equals(elementName)) {
return AspectJMethodBeforeAdvice.class;
}
diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java
index d94cb58937b..4fb7a661436 100644
--- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java
+++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java
@@ -59,7 +59,8 @@ public abstract class AbstractBeanDefinitionParser implements BeanDefinitionPars
String id = resolveId(element, definition, parserContext);
if (!StringUtils.hasText(id)) {
parserContext.getReaderContext().error(
- "Id is required for element '" + element.getLocalName() + "' when used as a top-level tag", element);
+ "Id is required for element '" + parserContext.getDelegate().getLocalName(element)
+ + "' when used as a top-level tag", element);
}
BeanDefinitionHolder holder = new BeanDefinitionHolder(definition, id);
registerBeanDefinition(holder, parserContext.getRegistry());
diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java
index 8516d37a887..dad2032796a 100644
--- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java
+++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/SimplePropertyNamespaceHandler.java
@@ -63,7 +63,7 @@ public class SimplePropertyNamespaceHandler implements NamespaceHandler {
public BeanDefinitionHolder decorate(Node node, BeanDefinitionHolder definition, ParserContext parserContext) {
if (node instanceof Attr) {
Attr attr = (Attr) node;
- String propertyName = attr.getLocalName();
+ String propertyName = parserContext.getDelegate().getLocalName(attr);
String propertyValue = attr.getValue();
MutablePropertyValues pvs = definition.getBeanDefinition().getPropertyValues();
if (pvs.contains(propertyName)) {
diff --git a/org.springframework.context/src/main/java/org/springframework/scheduling/config/ScheduledTasksBeanDefinitionParser.java b/org.springframework.context/src/main/java/org/springframework/scheduling/config/ScheduledTasksBeanDefinitionParser.java
index 4dffba517d1..01f575fa3ab 100644
--- a/org.springframework.context/src/main/java/org/springframework/scheduling/config/ScheduledTasksBeanDefinitionParser.java
+++ b/org.springframework.context/src/main/java/org/springframework/scheduling/config/ScheduledTasksBeanDefinitionParser.java
@@ -35,6 +35,8 @@ import org.w3c.dom.NodeList;
*/
public class ScheduledTasksBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
+ private static final String ELEMENT_SCHEDULED = "scheduled";
+
@Override
protected boolean shouldGenerateId() {
return true;
@@ -53,7 +55,7 @@ public class ScheduledTasksBeanDefinitionParser extends AbstractSingleBeanDefini
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node child = childNodes.item(i);
- if (!(child instanceof Element) || !child.getLocalName().equals("scheduled")) {
+ if (!isScheduledElement(child, parserContext)) {
continue;
}
Element taskElement = (Element) child;
@@ -99,6 +101,11 @@ public class ScheduledTasksBeanDefinitionParser extends AbstractSingleBeanDefini
builder.addPropertyValue("fixedRateTasks", fixedRateTaskMap);
}
+ private boolean isScheduledElement(Node node, ParserContext parserContext) {
+ return node.getNodeType() == Node.ELEMENT_NODE &&
+ ELEMENT_SCHEDULED.equals(parserContext.getDelegate().getLocalName(node));
+ }
+
private String createRunnableBean(String ref, String method, Element taskElement, ParserContext parserContext) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
"org.springframework.scheduling.support.MethodInvokingRunnable");
diff --git a/org.springframework.jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java b/org.springframework.jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java
index dd5776970ba..72badaad30b 100644
--- a/org.springframework.jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java
+++ b/org.springframework.jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java
@@ -95,7 +95,7 @@ abstract class AbstractListenerContainerParser implements BeanDefinitionParser {
for (int i = 0; i < childNodes.getLength(); i++) {
Node child = childNodes.item(i);
if (child.getNodeType() == Node.ELEMENT_NODE) {
- String localName = child.getLocalName();
+ String localName = parserContext.getDelegate().getLocalName(child);
if (LISTENER_ELEMENT.equals(localName)) {
parseListener((Element) child, element, parserContext);
}