You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/08/31 12:31:13 UTC
svn commit: r991145 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitor.java
test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java
Author: lindner
Date: Tue Aug 31 10:31:12 2010
New Revision: 991145
URL: http://svn.apache.org/viewvc?rev=991145&view=rev
Log:
new test case for StyleAdjacency, and fix
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitor.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitor.java?rev=991145&r1=991144&r2=991145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitor.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitor.java Tue Aug 31 10:31:12 2010
@@ -18,6 +18,8 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import com.google.common.base.Objects;
+import com.google.common.collect.Iterables;
import org.apache.shindig.common.xml.DomUtil;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.rewrite.DomWalker.Visitor;
@@ -60,20 +62,24 @@ public class StyleAdjacencyVisitor imple
return false;
}
- Node firstChild = head.getFirstChild();
- for (int i = nodes.size() - 1; i >= 0; i--) {
- // Insert all in the top of the head. Relative order is maintained.
- Node currentNode = nodes.get(i);
- currentNode.getParentNode().removeChild(currentNode);
- if (firstChild == null) {
- head.appendChild(currentNode);
- } else {
- head.insertBefore(currentNode, firstChild);
- }
+ // Detach nodes
+ for (Node n : nodes) {
+ n.getParentNode().removeChild(n);
+ }
- firstChild = currentNode;
+ // Add nodes back to DOM
+ if (head.getFirstChild() == null) {
+ // add each node to head
+ for (Node n : nodes) {
+ head.appendChild(n);
+ }
+ } else {
+ // existing nodes in head, inject all nodes before the first one
+ Node firstChild = head.getFirstChild();
+ for (Node n : nodes)
+ head.insertBefore(n, firstChild);
}
-
+
return true;
}
@@ -87,6 +93,6 @@ public class StyleAdjacencyVisitor imple
break;
}
}
- return value == null ? "" : value;
+ return Objects.firstNonNull(value, "");
}
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java?rev=991145&r1=991144&r2=991145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java Tue Aug 31 10:31:12 2010
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.rewrite.DomWalker.Visitor.VisitStatus;
import org.w3c.dom.Node;
@@ -267,7 +268,27 @@ public class StyleAdjacencyVisitorTest e
assertEquals(1, html.getChildNodes().getLength());
assertSame(body, html.getFirstChild());
}
-
+
+ @Test
+ public void singleStyleNodeInHead() throws Exception {
+ Node style = elem("style", "type", "text/css");
+ Node head = elem("head");
+ head.appendChild(style);
+
+ Node html = elem("html");
+ html.appendChild(head);
+ html.appendChild(elem("body"));
+ doc.appendChild(html);
+
+ assertTrue(revisit(style));
+
+ // Document structure sanity tests.
+ assertEquals(2, html.getChildNodes().getLength());
+ assertSame(head, html.getFirstChild());
+ }
+
+
+
private VisitStatus visit(Node node) throws Exception {
return new StyleAdjacencyVisitor().visit(gadget(), node);
}