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("&", "&amp;").replace("\"", "&quot;").replace("<", "&lt;").replace(">", "&gt;");
     }
+
+    private String escapeTextValue(String value) {
+    	return value.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
+    }
+
 }

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&amp;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&gt;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&lt;r</foo>", new Renderer(elm).getComplete());
+	}
 
+	
+	// TODO test allowed Unicode characters ranged in element name attribute name, attributes values, text
 }