[SPR-6017] a few more tweaks to how getLocalName is handled
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1876 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
6d2192067a
commit
f809d37db3
|
|
@ -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 {
|
|||
* '<code>before</code>', '<code>after</code>', '<code>after-returning</code>',
|
||||
* '<code>after-throwing</code>' or '<code>around</code>'.
|
||||
*/
|
||||
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<BeanDefinition> beanDefinitions, List<BeanReference> 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<BeanDefinition> beanDefinitions, List<BeanReference> 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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue