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 2009/07/14 23:14:51 UTC

svn commit: r794068 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/spec/MessageBundle.java test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java

Author: johnh
Date: Tue Jul 14 21:14:51 2009
New Revision: 794068

URL: http://svn.apache.org/viewvc?rev=794068&view=rev
Log:
Support CDATA values in message bundle values.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java?rev=794068&r1=794067&r2=794068&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java Tue Jul 14 21:14:51 2009
@@ -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));

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java?rev=794068&r1=794067&r2=794068&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/MessageBundleTest.java Tue Jul 14 21:14:51 2009
@@ -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>";