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;)", "&amp;");
+   }
+
+   /**
+    * 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("&amp;(?!lt;|gt;)", "&");
+   }
+
+
 }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to