[utilities COMMIT] in /java-support/trunk/src: main/java/net/shibboleth/utilities/java/support/xml/ElementSupport.jav...

noreply at shibboleth.net noreply at shibboleth.net
Tue Jan 17 18:10:24 GMT 2012


Author: rdw
Date: Tue Jan 17 18:10:24 2012
New Revision: 208

URL: http://svn.shibboleth.net/view/utilities?rev=208&view=rev
Log:
Add new function ElementSupport#getElementContentAsString, use it where needed/  Also add appropriate tests

Modified:
    java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/ElementSupport.java
    java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/ElementSupportTest.java
    java-support/trunk/src/test/resources/data/net/shibboleth/utilities/java/support/xml/elementSupportTest.xml

Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/ElementSupport.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/ElementSupport.java?rev=208&r1=207&r2=208&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/ElementSupport.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/xml/ElementSupport.java Tue Jan 17 18:10:24 2012
@@ -277,6 +277,36 @@
         }
         return null;
     }
+    
+    /**
+     * Gets the text content for this Element only.  Whereas {@link Node#getTextContent()} will return all text for this
+     * element and all children, this just grabs the text for this element (which may be spread over multiple lines).  
+     * 
+     * @param element The element to look at.
+     * @return The text content, or "" if there is none, never null.
+     * 
+     */
+    @Nonnull public static String getElementContentAsString(@Nullable final Element element){
+        if (element == null) {
+            return "";
+        }
+        StringBuilder builder = new StringBuilder();
+
+        final NodeList nodeList = element.getChildNodes();
+        Node node;
+        boolean first = true;
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            node = nodeList.item(i);
+            if (node.getNodeType() == Node.TEXT_NODE) {
+                if (!first) {
+                    builder.append(XmlConstants.LIST_DELIMITERS.charAt(0));
+                }
+                String s = ((Text) node).getWholeText();
+                builder.append(s);
+            }
+        }
+        return builder.toString();
+    }
 
     /**
      * Gets the value of a list-type element as a list.
@@ -289,7 +319,7 @@
         if (element == null) {
             return Collections.emptyList();
         }
-        return StringSupport.stringToList(element.getTextContent(), XmlConstants.LIST_DELIMITERS);
+        return StringSupport.stringToList(getElementContentAsString(element), XmlConstants.LIST_DELIMITERS);
     }
 
     /**
@@ -303,17 +333,7 @@
         if (element == null) {
             return null;
         }
-
-        final NodeList nodeList = element.getChildNodes();
-        String elementContent = null;
-        Node node;
-        for (int i = 0; i < nodeList.getLength(); i++) {
-            node = nodeList.item(i);
-            if (node.getNodeType() == Node.TEXT_NODE) {
-                elementContent = StringSupport.trimOrNull(((Text) node).getWholeText());
-                break;
-            }
-        }
+        String elementContent = StringSupport.trimOrNull(getElementContentAsString(element));
 
         if (elementContent == null) {
             return null;

Modified: java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/ElementSupportTest.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/ElementSupportTest.java?rev=208&r1=207&r2=208&view=diff
==============================================================================
--- java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/ElementSupportTest.java (original)
+++ java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/xml/ElementSupportTest.java Tue Jan 17 18:10:24 2012
@@ -160,10 +160,29 @@
         Assert.assertEquals(ElementSupport.getElementAncestor(grandChild), child, "getElementAncestor for grand child");
 
     }
+    
+    @Test(dependsOnMethods = {"testGetChildElementsByTagName"}) public void testGetElementContentAsString() {
+        Assert.assertTrue(ElementSupport.getElementContentAsString(null).isEmpty(),
+                "getElementContentAsList: Null element should provide empty result");
+        
+        Assert.assertTrue(StringSupport.trim(ElementSupport.getElementContentAsString(rootElement)).isEmpty(),
+                "getElementContentAsList: Empty element should provide empty result");
+
+        Element interesting =
+                ElementSupport.getChildElementsByTagName(
+                        ElementSupport.getChildElementsByTagName(rootElement, "Element4").get(0), "Element1").get(0);
+
+        Assert.assertEquals(ElementSupport.getElementContentAsString(interesting),
+                "Some Random" +"\n" + "test");
+    }
+
 

[... 34 lines stripped ...]


More information about the commits mailing list