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


Reply via email to