Author: ngn
Date: Tue Sep 8 15:18:27 2009
New Revision: 812547
URL: http://svn.apache.org/viewvc?rev=812547&view=rev
Log:
Allow for getting inner elements by name and namespace URI
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java?rev=812547&r1=812546&r2=812547&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
(original)
+++
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElement.java
Tue Sep 8 15:18:27 2009
@@ -195,6 +195,15 @@
* @param name - must not be NULL
*/
public List<XMLElement> getInnerElementsNamed(String name) {
+ return getInnerElementsNamed(name, null);
+ }
+
+ /**
+ * collects all inner elements named as given parameter
+ * @param name - must not be NULL
+ * @param namespaceUri The namespace URI used for matching. Null if
namespace URIs should not be considered
+ */
+ public List<XMLElement> getInnerElementsNamed(String name, String
namespaceUri) {
if (name == null) return null;
List<XMLElement> innerElements = getInnerElements();
if (innerElements == null) return null;
@@ -202,19 +211,28 @@
Iterator<XMLElement> elementIterator = innerElements.iterator(); //
this List will be modified now!
while (elementIterator.hasNext()) {
XMLElement xmlElement = elementIterator.next();
- if (!name.equals(xmlElement.getName())) elementIterator.remove();
+ if (!name.equals(xmlElement.getName())
+ || (namespaceUri != null &&
!namespaceUri.equals(xmlElement.getNamespaceURI()))) {
+ elementIterator.remove();
+ }
}
return innerElements;
}
+
public XMLElement getSingleInnerElementsNamed(String name) throws
XMLSemanticError {
- List<XMLElement> innerElements = getInnerElementsNamed(name);
+ return getSingleInnerElementsNamed(name, null);
+ }
+
+ public XMLElement getSingleInnerElementsNamed(String name, String
namespaceUri) throws XMLSemanticError {
+ List<XMLElement> innerElements = getInnerElementsNamed(name,
namespaceUri);
if (innerElements == null) return null;
if (innerElements.isEmpty()) return null;
if (innerElements.size() > 1) throw new XMLSemanticError("element has
more than one inner element named: " + name);
return innerElements.get(0);
}
+
/**
* collects all inner elements with given name and puts them in a map
indexed by
* @param name