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...@gmail.com on 2009/07/14 22:01:26 UTC

support CDATA in message bundle sections

Reviewers: shindig.remailer_gmail.com,

Description:
Patch attached.

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

Affected files:
    
java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
    
java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java


Index:  
java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
===================================================================
---  
java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java	 
(revision 794025)
+++  
java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java	 
(working copy)
@@ -27,6 +27,7 @@

  import org.json.JSONObject;
  import org.w3c.dom.Element;
+import org.w3c.dom.Node;
  import org.w3c.dom.NodeList;

  import java.io.IOException;
@@ -164,7 +165,12 @@
        NodeList msgChildren = msg.getChildNodes();
        for (int child = 0; child < msgChildren.getLength(); ++child) {
          try {
-          htmlSerializer.serialize(msgChildren.item(child), sw);
+          if (msgChildren.item(child).getNodeType() ==  
Node.CDATA_SECTION_NODE) {
+            // Workaround to treat CDATA as text.
+            sw.append(msgChildren.item(child).getTextContent());
+          } else {
+            htmlSerializer.serialize(msgChildren.item(child), sw);
+          }
          } catch (IOException e) {
            throw new SpecParserException("Unexpected error getting value of  
msg node",
                                          new XmlException(e));
Index:  
java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java
===================================================================
---  
java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java	 
(revision 794025)
+++  
java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java	 
(working copy)
@@ -84,6 +84,16 @@
      assertEquals(ImmutableMap.of("key", "value"), bundle.getMessages());
    }

+  @Test
+  public void containsCdataSection() throws Exception {
+    String cdataXml =
+       "<messagebundle>" +
+       "  <msg name='key'><![CDATA[<span id='foo'>data</span>]]></msg>" +
+       "</messagebundle>";
+    MessageBundle bundle = new MessageBundle(locale, cdataXml);
+    assertEquals(ImmutableMap.of("key", "<span id='foo'>data</span>"),  
bundle.getMessages());
+  }
+
    @Test(expected = SpecParserException.class)
    public void missingNameThrows() throws SpecParserException {
      String xml = "<messagebundle><msg>foo</msg></messagebundle>";