[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