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;)", "&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