You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/07/27 00:18:43 UTC
svn commit: r979472 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java
test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java
Author: johnh
Date: Mon Jul 26 22:18:43 2010
New Revision: 979472
URL: http://svn.apache.org/viewvc?rev=979472&view=rev
Log:
Handle null MutableContent.getDocument() gracefully in DomWalker.
Patch provided by Gagan Singh.
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java?rev=979472&r1=979471&r2=979472&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/DomWalker.java Mon Jul 26 22:18:43 2010
@@ -29,8 +29,10 @@ import org.apache.shindig.gadgets.http.H
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.uri.UriCommon.Param;
+import org.w3c.dom.Document;
import org.w3c.dom.Node;
+import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
@@ -148,7 +150,13 @@ public final class DomWalker {
Map<Visitor, List<Node>> reservations = Maps.newHashMap();
LinkedList<Node> toVisit = Lists.newLinkedList();
- toVisit.add(content.getDocument().getDocumentElement());
+ Document doc = content.getDocument();
+ if (doc == null) {
+ throw new RewritingException("content.getDocument is null. Content: "
+ + content.getContent(),
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ toVisit.add(doc.getDocumentElement());
boolean mutated = false;
while (!toVisit.isEmpty()) {
Node visiting = toVisit.removeFirst();
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java?rev=979472&r1=979471&r2=979472&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java Mon Jul 26 22:18:43 2010
@@ -18,24 +18,19 @@
*/
package org.apache.shindig.gadgets.rewrite;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
import com.google.common.collect.Lists;
-
import org.apache.shindig.gadgets.Gadget;
-import org.apache.shindig.gadgets.rewrite.MutableContent;
-
import org.junit.Before;
import org.junit.Test;
-
import org.w3c.dom.Node;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
public class DomWalkerTest extends DomWalkerTestBase {
private Node root;
private Node child1;
@@ -245,7 +240,30 @@ public class DomWalkerTest extends DomWa
// As before, MutableContent verification is the test.
verify(mc);
}
-
+
+ @Test
+ public void rewriteThrowsRewritingExceptionIfGetDocumentIsNull() throws Exception {
+ DomWalker.Visitor visitor1 = createMock(DomWalker.Visitor.class);
+ DomWalker.Rewriter rewriter = getRewriter(visitor1);
+
+ MutableContent mc = createMock(MutableContent.class);
+ expect(mc.getDocument()).andReturn(null);
+ expect(mc.getContent()).andReturn("hello!");
+ replay(mc);
+
+ Gadget gadget = gadget();
+ boolean exceptionCaught = false;
+ try {
+ rewriter.rewrite(gadget, mc);
+ } catch (RewritingException e) {
+ assertEquals(e.getHttpStatusCode(),
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ exceptionCaught = true;
+ }
+
+ assertTrue(exceptionCaught);
+ }
+
private DomWalker.Rewriter getRewriter(DomWalker.Visitor... visitors) {
return new DomWalker.Rewriter(Lists.newArrayList(visitors));
}