Update of
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext
In directory
james.mmbase.org:/tmp/cvs-serv28975/cmsc/richtext/src/java/com/finalist/cmsc/richtext
Modified Files:
Tag: b1_4
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.8.2.1
retrieving revision 1.8.2.2
diff -u -b -r1.8.2.1 -r1.8.2.2
--- RichTextGetProcessor.java 25 Jul 2008 12:17:28 -0000 1.8.2.1
+++ RichTextGetProcessor.java 24 Sep 2008 13:27:05 -0000 1.8.2.2
@@ -250,6 +250,7 @@
if ("urls".equals(builderName)) {
name = destinationNode.getStringValue("name");
url = destinationNode.getStringValue("url");
+ url = url.replaceAll("&(?!amp;)", "&");
}
else {
if
(destinationNode.getNodeManager().hasField(RichText.TITLE_FIELD)) {
Index: RichText.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext/RichText.java,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -b -r1.5.2.1 -r1.5.2.2
--- RichText.java 25 Jul 2008 12:17:28 -0000 1.5.2.1
+++ RichText.java 24 Sep 2008 13:27:05 -0000 1.5.2.2
@@ -82,16 +82,43 @@
// 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