You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by jo...@apache.org on 2008/08/19 02:11:22 UTC
svn commit: r686903 - in /incubator/shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
Author: johnh
Date: Mon Aug 18 17:11:22 2008
New Revision: 686903
URL: http://svn.apache.org/viewvc?rev=686903&view=rev
Log:
Adding helper method clearChildren(), and fixing getChildren() semantics. The latter should return a copy/view
of the children at call time, not an unmodifiable version of the internal child list.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java?rev=686903&r1=686902&r2=686903&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlNode.java Mon Aug 18 17:11:22 2008
@@ -17,6 +17,7 @@
*/
package org.apache.shindig.gadgets.parse;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
@@ -227,6 +228,17 @@
}
/**
+ * Helper method that removes all children from
+ * the current node.
+ */
+ public void clearChildren() {
+ validateNodeType(NodeType.TAG);
+ for (GadgetHtmlNode child : getChildren()) {
+ removeChild(child);
+ }
+ }
+
+ /**
* Returns this nodes parent, or null if none exists.
* @return
*/
@@ -240,12 +252,15 @@
}
/**
- * Returns an unmodifiable list of current child nodes.
+ * Returns an unmodifiable view of current child nodes.
+ * While the list itself is unmodifiable, this node's contents
+ * can be modified using list entries.
* @return
*/
public List<GadgetHtmlNode> getChildren() {
validateNodeType(NodeType.TAG);
- return Collections.unmodifiableList(children);
+ return Collections.unmodifiableList(
+ new ArrayList<GadgetHtmlNode>(children));
}
/**
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java?rev=686903&r1=686902&r2=686903&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/GadgetHtmlNodeTest.java Mon Aug 18 17:11:22 2008
@@ -281,6 +281,12 @@
assertEquals(1, remainingKids.size());
assertSame(parentNode, afterNode.getParentNode());
assertSame(afterNode, remainingKids.get(0));
+
+ // clear nodes
+ parentNode.clearChildren();
+ List<GadgetHtmlNode> clearedKids = parentNode.getChildren();
+ assertNotNull(clearedKids);
+ assertEquals(0, clearedKids.size());
}
// Test: text setter
@@ -417,5 +423,12 @@
} catch (UnsupportedOperationException e) {
// Expected condition
}
+
+ try {
+ textNode.clearChildren();
+ fail("Text nodes shouldn't be able to use setTagName()");
+ } catch (UnsupportedOperationException e) {
+ // Expected condition
+ }
}
}