Reviewers: plindner1,

Description:
* enables rendering of doctypes for caja parser consistent with neko
* enables the running of serialization tests for the caja parser

Please review this at http://codereview.appspot.com/4441072/

Affected files:
M java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java M java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java M java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java


Index: java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java
===================================================================
--- java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java (revision 1097199) +++ java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java (working copy)
@@ -45,7 +45,7 @@

     // TODO: Add caja back when we upgrade to the latest version of caja
     // http://code.google.com/p/google-caja/issues/detail?id=1115
-    parsers = ImmutableList.of(neko/*, caja*/);
+    parsers = ImmutableList.of(neko, caja);
   }

   @Test
Index: java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
===================================================================
--- java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java (revision 1097199) +++ java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java (working copy)
@@ -38,6 +38,7 @@
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
+import org.apache.shindig.gadgets.parse.HtmlSerialization;
 import org.apache.shindig.gadgets.parse.SocialDataTags;
 import org.w3c.dom.DOMImplementation;
 import org.w3c.dom.Document;
@@ -60,6 +61,8 @@
     // TODO: remove parseDomImpl() altogether; only have subclasses
     // support parseFragmentImpl() with base class cleaning up.
     Document document = fragment.getOwnerDocument();
+    CajaHtmlSerializer serializer = new CajaHtmlSerializer();
+    HtmlSerialization.attach(document, serializer, null);
     Node html = null;
     LinkedList<Node> beforeHtml = Lists.newLinkedList();
     while (fragment.hasChildNodes()) {
Index: java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java
===================================================================
--- java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java (revision 1097199) +++ java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java (working copy)
@@ -37,8 +37,14 @@
 public class CajaHtmlSerializer implements HtmlSerializer {
   public String serialize(Document doc) {
     StringWriter sw = HtmlSerialization.createWriter(doc);
-    return Nodes.render(doc,
- new RenderContext(new Concatenator(sw, null)).asXml() ? MarkupRenderMode.XML : MarkupRenderMode.HTML
-    );
+    MarkupRenderMode mode =
+      new RenderContext(new Concatenator(sw, null)).asXml() ?
+          MarkupRenderMode.XML : MarkupRenderMode.HTML;
+
+    if (doc.getDoctype() != null) {
+      return Nodes.render(doc.getDoctype(), doc, mode);
+    } else {
+      return Nodes.render(doc, mode);
+    }
   }
 }


Reply via email to