From 3f885d03021c42df9c8d5f1decbc660ee716a1fa Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Fri, 14 May 2010 16:07:39 +0000 Subject: [PATCH] Added DomUtils.getChildElements() method. Also refactored ConfigBeanDefinitionParser.parse() to use it. --- .../config/ConfigBeanDefinitionParser.java | 25 ++++++++----------- org.springframework.core/build.xml | 1 + .../springframework/util/xml/DomUtils.java | 20 +++++++++++++++ org.springframework.oxm/.classpath | 2 +- org.springframework.web.servlet/.classpath | 1 - org.springframework.web/.classpath | 1 - 6 files changed, 33 insertions(+), 17 deletions(-) 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 e3df259fdc2..de8beff487c 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 @@ -102,20 +102,17 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser { configureAutoProxyCreator(parserContext, element); - NodeList childNodes = element.getChildNodes(); - for (int i = 0; i < childNodes.getLength(); i++) { - Node node = childNodes.item(i); - if (node.getNodeType() == Node.ELEMENT_NODE) { - String localName = parserContext.getDelegate().getLocalName(node); - if (POINTCUT.equals(localName)) { - parsePointcut((Element) node, parserContext); - } - else if (ADVISOR.equals(localName)) { - parseAdvisor((Element) node, parserContext); - } - else if (ASPECT.equals(localName)) { - parseAspect((Element) node, parserContext); - } + List childElts = DomUtils.getChildElements(element); + for (Element elt: childElts) { + String localName = parserContext.getDelegate().getLocalName(elt); + if (POINTCUT.equals(localName)) { + parsePointcut(elt, parserContext); + } + else if (ADVISOR.equals(localName)) { + parseAdvisor(elt, parserContext); + } + else if (ASPECT.equals(localName)) { + parseAspect(elt, parserContext); } } diff --git a/org.springframework.core/build.xml b/org.springframework.core/build.xml index 9ec442705ab..54975892df1 100644 --- a/org.springframework.core/build.xml +++ b/org.springframework.core/build.xml @@ -22,3 +22,4 @@ + \ No newline at end of file diff --git a/org.springframework.core/src/main/java/org/springframework/util/xml/DomUtils.java b/org.springframework.core/src/main/java/org/springframework/util/xml/DomUtils.java index 7696d6b23b6..62e1328fcfd 100644 --- a/org.springframework.core/src/main/java/org/springframework/util/xml/DomUtils.java +++ b/org.springframework.core/src/main/java/org/springframework/util/xml/DomUtils.java @@ -38,6 +38,7 @@ import org.springframework.util.Assert; * @author Rob Harrop * @author Costin Leau * @author Arjen Poutsma + * @author Luke Taylor * @see org.w3c.dom.Node * @see org.w3c.dom.Element * @since 1.2 @@ -117,6 +118,25 @@ public abstract class DomUtils { return (child != null ? getTextValue(child) : null); } + /** + * Retrieve all child elements of the given DOM element + + * @param ele the DOM element to analyze + * @return a List of child org.w3c.dom.Element instances + */ + public static List getChildElements(Element ele) { + Assert.notNull(ele, "Element must not be null"); + NodeList nl = ele.getChildNodes(); + List childEles = new ArrayList(); + for (int i = 0; i < nl.getLength(); i++) { + Node node = nl.item(i); + if (node instanceof Element) { + childEles.add((Element) node); + } + } + return childEles; + } + /** * Extract the text value from the given DOM element, ignoring XML comments.

Appends all CharacterData nodes and * EntityReference nodes into a single String value, excluding Comment nodes. diff --git a/org.springframework.oxm/.classpath b/org.springframework.oxm/.classpath index 7ad7981795b..4b30faa179a 100644 --- a/org.springframework.oxm/.classpath +++ b/org.springframework.oxm/.classpath @@ -5,7 +5,7 @@ - + diff --git a/org.springframework.web.servlet/.classpath b/org.springframework.web.servlet/.classpath index 6e73dff6a98..9f097da290e 100644 --- a/org.springframework.web.servlet/.classpath +++ b/org.springframework.web.servlet/.classpath @@ -12,7 +12,6 @@ - diff --git a/org.springframework.web/.classpath b/org.springframework.web/.classpath index 72ec67a2cea..7752d416850 100644 --- a/org.springframework.web/.classpath +++ b/org.springframework.web/.classpath @@ -9,7 +9,6 @@ -