Update of
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext
In directory
james.mmbase.org:/tmp/cvs-serv28997/cmsc/richtext/src/java/com/finalist/cmsc/richtext
Modified Files:
Tag: v1_3
RichTextGetProcessor.java RichText.java
Log Message:
CMSC-1071 Inline urls in richtext fields are not ampersands escaped
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext
See also: http://www.mmbase.org/jira/browse/CMSC-1071
Index: RichTextGetProcessor.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext/RichTextGetProcessor.java,v
retrieving revision 1.7
retrieving revision 1.7.2.1
diff -u -b -r1.7 -r1.7.2.1
--- RichTextGetProcessor.java 1 Aug 2007 15:15:03 -0000 1.7
+++ RichTextGetProcessor.java 24 Sep 2008 13:27:25 -0000 1.7.2.1
@@ -239,6 +239,7 @@
if ("urls".equals(builderName)) {
name = destinationNode.getStringValue("name");
url = destinationNode.getStringValue("url");
+ url = url.replaceAll("&(?!amp;)", "&");
}
else {
if
(destinationNode.getNodeManager().hasField(RichText.TITLE_ATTR)) {
Index: RichText.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext/RichText.java,v
retrieving revision 1.3
retrieving revision 1.3.4.1
diff -u -b -r1.3 -r1.3.4.1
--- RichText.java 7 Aug 2006 22:36:39 -0000 1.3
+++ RichText.java 24 Sep 2008 13:27:25 -0000 1.3.4.1
@@ -80,15 +80,42 @@
// to string and strip root node, doctype and xmldeclaration
String out = XmlUtil.serializeDocument(doc, false, false, true, true);
out = out.replaceAll("<.?richtext.?>", "");
- out = XmlUtil.unescapeXMLEntities(out);
+ out = unescapeXMLEntities(out);
return out;
}
public final static Document getRichTextDocument(String in) {
- String out = XmlUtil.escapeXMLEntities(in);
+ String out = escapeXMLEntities(in);
out = RichText.RICHTEXT_ROOT_OPEN + out + RichText.RICHTEXT_ROOT_CLOSE;
Document doc = XmlUtil.toDocument(out, false);
return doc;
}
+ /**
+ * Escapes XML entities.
+ *
+ * @param xml the input xml
+ * @return escaped xml
+ */
+ public static String escapeXMLEntities(String xml) {
+ if (xml == null) {
+ throw new IllegalArgumentException("xml string is null");
+ }
+ return xml.replaceAll("&(?!lt;|gt;)", "&");
+ }
+
+ /**
+ * Unscapes XML entities.
+ *
+ * @param xml the input xml
+ * @return escaped xml
+ */
+ public static String unescapeXMLEntities(String xml) {
+ if (xml == null) {
+ throw new IllegalArgumentException("xml string is null");
+ }
+ return xml.replaceAll("&(?!lt;|gt;)", "&");
+ }
+
+
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs