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 Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs