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