[gatein-commits] gatein SVN: r4916 - in portal/branches/branch-GTNPORTAL-1592/component/common/src: test/java/org/exoplatform/commons/xml and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Nov 3 06:48:59 EDT 2010
Author: hoang_to
Date: 2010-11-03 06:48:58 -0400 (Wed, 03 Nov 2010)
New Revision: 4916
Modified:
portal/branches/branch-GTNPORTAL-1592/component/common/src/main/java/org/exoplatform/commons/xml/DOMSerializer.java
portal/branches/branch-GTNPORTAL-1592/component/common/src/test/java/org/exoplatform/commons/xml/TestDOMSerializer.java
Log:
GTNPORTAL-1626: Text content of XML Element, serialized by DOMSerializer, is always wrapped in a CDATA section
Modified: portal/branches/branch-GTNPORTAL-1592/component/common/src/main/java/org/exoplatform/commons/xml/DOMSerializer.java
===================================================================
--- portal/branches/branch-GTNPORTAL-1592/component/common/src/main/java/org/exoplatform/commons/xml/DOMSerializer.java 2010-11-03 09:06:49 UTC (rev 4915)
+++ portal/branches/branch-GTNPORTAL-1592/component/common/src/main/java/org/exoplatform/commons/xml/DOMSerializer.java 2010-11-03 10:48:58 UTC (rev 4916)
@@ -21,7 +21,9 @@
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
+import org.gatein.common.text.EntityEncoder;
import org.w3c.dom.Attr;
+import org.w3c.dom.CDATASection;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -145,10 +147,14 @@
for (int i = 0;i < length;i++)
{
Node child = children.item(i);
- if (child instanceof CharacterData)
+ if(child instanceof CDATASection)
{
- writer.writeCData(((CharacterData)child).getData());
+ writer.writeCData(((CDATASection)child).getData());
}
+ else if (child instanceof CharacterData)
+ {
+ writeTextData(writer, ((CharacterData)child).getData());
+ }
else if (child instanceof Element)
{
serialize((Element)child, writer);
@@ -159,4 +165,22 @@
writer.writeEndElement();
}
}
+
+ private static void writeTextData(XMLStreamWriter writer, String data) throws XMLStreamException
+ {
+ for(int i = 0; i < data.length(); i++)
+ {
+ char c = data.charAt(i);
+ String encodedValue = EntityEncoder.FULL.lookup(c);
+
+ if(encodedValue == null)
+ {
+ writer.writeCharacters("" + c);
+ }
+ else
+ {
+ writer.writeCharacters(encodedValue);
+ }
+ }
+ }
}
Modified: portal/branches/branch-GTNPORTAL-1592/component/common/src/test/java/org/exoplatform/commons/xml/TestDOMSerializer.java
===================================================================
--- portal/branches/branch-GTNPORTAL-1592/component/common/src/test/java/org/exoplatform/commons/xml/TestDOMSerializer.java 2010-11-03 09:06:49 UTC (rev 4915)
+++ portal/branches/branch-GTNPORTAL-1592/component/common/src/test/java/org/exoplatform/commons/xml/TestDOMSerializer.java 2010-11-03 10:48:58 UTC (rev 4916)
@@ -58,6 +58,16 @@
{
assertSerialization("<meta http-equiv=\"Content-Type\"/>", "<meta http-equiv='Content-Type'></meta>");
}
+
+ public void testOrdinaryTextElement() throws Exception
+ {
+ assertSerialization("<div>Blah Blah</div>", "<div>Blah Blah</div>");
+ }
+
+ public void testCDATaElement() throws Exception
+ {
+ assertSerialization("<div><![CDATA[Test Content]]></div>", "<div><![CDATA[Test Content]]></div>");
+ }
private void assertSerialization(String expectedMarkup, String markup) throws Exception
{
More information about the gatein-commits
mailing list