[jbossws-commits] JBossWS SVN: r8573 - common/trunk/src/main/java/org/jboss/wsf/common.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Tue Oct 28 11:34:26 EDT 2008
Author: alessio.soldano at jboss.com
Date: 2008-10-28 11:34:25 -0400 (Tue, 28 Oct 2008)
New Revision: 8573
Modified:
common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java
Log:
[JBWS-2346] Adding recursive flavour to many DOMUtil methods
Modified: common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java
===================================================================
--- common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java 2008-10-28 09:33:38 UTC (rev 8572)
+++ common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java 2008-10-28 15:34:25 UTC (rev 8573)
@@ -62,6 +62,7 @@
* DOM2 utilites
*
* @author Thomas.Diesler at jboss.org
+ * @author alessio.soldano at jboss.com
*/
public final class DOMUtils
{
@@ -483,32 +484,53 @@
}
return (hasTextContent ? buffer.toString() : null);
}
-
+
/** Gets the first child element
*/
public static Element getFirstChildElement(Node node)
{
- return getFirstChildElementIntern(node, null);
+ return getFirstChildElement(node, false);
}
+ /** Gets the first child element
+ */
+ public static Element getFirstChildElement(Node node, boolean recursive)
+ {
+ return getFirstChildElementIntern(node, null, recursive);
+ }
+
/** Gets the first child element for a given local name without namespace
*/
public static Element getFirstChildElement(Node node, String nodeName)
{
- return getFirstChildElementIntern(node, new QName(nodeName));
+ return getFirstChildElement(node, nodeName, false);
}
-
+
+ /** Gets the first child element for a given local name without namespace
+ */
+ public static Element getFirstChildElement(Node node, String nodeName, boolean recursive)
+ {
+ return getFirstChildElementIntern(node, new QName(nodeName), recursive);
+ }
+
/** Gets the first child element for a given qname
*/
public static Element getFirstChildElement(Node node, QName nodeName)
{
- return getFirstChildElementIntern(node, nodeName);
+ return getFirstChildElement(node, nodeName, false);
}
- private static Element getFirstChildElementIntern(Node node, QName nodeName)
+ /** Gets the first child element for a given qname
+ */
+ public static Element getFirstChildElement(Node node, QName nodeName, boolean recursive)
{
+ return getFirstChildElementIntern(node, nodeName, recursive);
+ }
+
+ private static Element getFirstChildElementIntern(Node node, QName nodeName, boolean recursive)
+ {
Element childElement = null;
- Iterator it = getChildElementsIntern(node, nodeName);
+ Iterator it = getChildElementsIntern(node, nodeName, recursive);
if (it.hasNext())
{
childElement = (Element)it.next();
@@ -520,28 +542,52 @@
*/
public static Iterator getChildElements(Node node, String nodeName)
{
- return getChildElementsIntern(node, new QName(nodeName));
+ return getChildElements(node, nodeName, false);
}
-
+
+ /** Gets the child elements for a given local name without namespace
+ */
+ public static Iterator getChildElements(Node node, String nodeName, boolean recursive)
+ {
+ return getChildElementsIntern(node, new QName(nodeName), recursive);
+ }
+
/** Gets the child element for a given qname
*/
public static Iterator getChildElements(Node node, QName nodeName)
{
- return getChildElementsIntern(node, nodeName);
+ return getChildElements(node, nodeName, false);
}
+
+ /** Gets the child element for a given qname
+ */
+ public static Iterator getChildElements(Node node, QName nodeName, boolean recursive)
+ {
+ return getChildElementsIntern(node, nodeName, recursive);
+ }
public static List<Element> getChildElementsAsList(Node node, String nodeName)
{
- return getChildElementsAsListIntern(node, new QName(nodeName));
+ return getChildElementsAsList(node, nodeName, false);
}
+ public static List<Element> getChildElementsAsList(Node node, String nodeName, boolean recursive)
+ {
+ return getChildElementsAsListIntern(node, new QName(nodeName), recursive);
+ }
+
public static List<Element> getChildElementsAsList(Node node, QName nodeName)
{
- return getChildElementsAsListIntern(node, nodeName);
+ return getChildElementsAsList(node, nodeName, false);
}
- private static List<Element> getChildElementsAsListIntern(Node node, QName nodeName)
+ public static List<Element> getChildElementsAsList(Node node, QName nodeName, boolean recursive)
{
+ return getChildElementsAsListIntern(node, nodeName, recursive);
+ }
+
+ private static List<Element> getChildElementsAsListIntern(Node node, QName nodeName, boolean recursive)
+ {
List<Element> list = new LinkedList<Element>();
NodeList nlist = node.getChildNodes();
for (int i = 0; i < nlist.getLength(); i++)
@@ -549,34 +595,51 @@
Node child = nlist.item(i);
if (child.getNodeType() == Node.ELEMENT_NODE)
{
- if (nodeName == null)
+ search(list, (Element)child, nodeName, recursive);
+ }
+ }
+ return list;
+ }
+
+ private static void search(List<Element> list, Element baseElement, QName nodeName, boolean recursive)
+ {
+ if (nodeName == null)
+ {
+ list.add(baseElement);
+ }
+ else
+ {
+ QName qname;
+ if (nodeName.getNamespaceURI().length() > 0)
+ {
+ qname = new QName(baseElement.getNamespaceURI(), baseElement.getLocalName());
+ }
+ else
+ {
+ qname = new QName(baseElement.getLocalName());
+ }
+ if (qname.equals(nodeName))
+ {
+ list.add(baseElement);
+ }
+ }
+ if (recursive)
+ {
+ NodeList nlist = baseElement.getChildNodes();
+ for (int i = 0; i < nlist.getLength(); i++)
+ {
+ Node child = nlist.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE)
{
- list.add((Element)child);
+ search(list, (Element)child, nodeName, recursive);
}
- else
- {
- QName qname;
- if (nodeName.getNamespaceURI().length() > 0)
- {
- qname = new QName(child.getNamespaceURI(), child.getLocalName());
- }
- else
- {
- qname = new QName(child.getLocalName());
- }
- if (qname.equals(nodeName))
- {
- list.add((Element)child);
- }
- }
}
}
- return list;
}
-
- private static Iterator getChildElementsIntern(Node node, QName nodeName)
+
+ private static Iterator getChildElementsIntern(Node node, QName nodeName, boolean recursive)
{
- return getChildElementsAsListIntern(node, nodeName).iterator();
+ return getChildElementsAsListIntern(node, nodeName, recursive).iterator();
}
/** Gets parent element or null if there is none
More information about the jbossws-commits
mailing list