You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2009/11/17 22:55:39 UTC
svn commit: r881557 - in /mina/sandbox/vysper/trunk/nbxml/src:
main/java/org/apache/vysper/xmpp/xmlfragment/Renderer.java
test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java
Author: ngn
Date: Tue Nov 17 21:55:39 2009
New Revision: 881557
URL: http://svn.apache.org/viewvc?rev=881557&view=rev
Log:
Fix broken escaping of reserved characters in XML text
Modified:
mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/Renderer.java
mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java
Modified: mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/Renderer.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/Renderer.java?rev=881557&r1=881556&r2=881557&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/Renderer.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/Renderer.java Tue Nov 17 21:55:39 2009
@@ -70,7 +70,7 @@
for (XMLFragment xmlFragment : element.getInnerFragments()) {
if (xmlFragment instanceof XMLElement) renderXMLElement((XMLElement) xmlFragment, elementContentBuffer, elementContentBuffer, elementContentBuffer);
else if (xmlFragment instanceof XMLText) {
- elementContentBuffer.append(((XMLText) xmlFragment).getText());
+ elementContentBuffer.append(escapeTextValue(((XMLText) xmlFragment).getText()));
} else {
throw new UnsupportedOperationException("cannot render XML fragment of type " + xmlFragment.getClass().getName());
}
@@ -107,4 +107,9 @@
private String escapeAttributeValue(String value) {
return value.replace("&", "&").replace("\"", """).replace("<", "<").replace(">", ">");
}
+
+ private String escapeTextValue(String value) {
+ return value.replace("&", "&").replace("<", "<").replace(">", ">");
+ }
+
}
Modified: mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java?rev=881557&r1=881556&r2=881557&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java Tue Nov 17 21:55:39 2009
@@ -83,5 +83,54 @@
// ok
}
}
+
+ public void testRenderNonNamespaceElement() {
+ XMLElement elm = new XMLElement("foo", null, (Attribute[])null, null);
+ assertEquals("<foo></foo>", new Renderer(elm).getComplete());
+ }
+
+ public void testRenderDefaultNamespaceElement() {
+ XMLElement elm = new XMLElement("foo", null, new Attribute[]{
+ new NamespaceAttribute("http://example.com")
+ }, null);
+ assertEquals("<foo xmlns=\"http://example.com\"></foo>", new Renderer(elm).getComplete());
+ }
+
+ public void testRenderPrefixedNamespaceElement() {
+ XMLElement elm = new XMLElement("foo", "pr", new Attribute[]{
+ new NamespaceAttribute("pr", "http://example.com")
+ }, null);
+ assertEquals("<pr:foo xmlns:pr=\"http://example.com\"></pr:foo>", new Renderer(elm).getComplete());
+ }
+
+ public void testRenderSimpleText() {
+ XMLElement elm = new XMLElement("foo", null, null, new XMLFragment[]{
+ new XMLText("bar")
+ });
+ assertEquals("<foo>bar</foo>", new Renderer(elm).getComplete());
+ }
+
+ public void testRenderTextWithAmpersand() {
+ XMLElement elm = new XMLElement("foo", null, null, new XMLFragment[]{
+ new XMLText("ba&r")
+ });
+ assertEquals("<foo>ba&r</foo>", new Renderer(elm).getComplete());
+ }
+
+ public void testRenderTextWithGt() {
+ XMLElement elm = new XMLElement("foo", null, null, new XMLFragment[]{
+ new XMLText("ba>r")
+ });
+ assertEquals("<foo>ba>r</foo>", new Renderer(elm).getComplete());
+ }
+
+ public void testRenderTextWithLt() {
+ XMLElement elm = new XMLElement("foo", null, null, new XMLFragment[]{
+ new XMLText("ba<r")
+ });
+ assertEquals("<foo>ba<r</foo>", new Renderer(elm).getComplete());
+ }
+
+ // TODO test allowed Unicode characters ranged in element name attribute name, attributes values, text
}