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
+    }
   }
 }