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>";


Reply via email to