You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dj...@apache.org on 2022/01/05 19:03:37 UTC

[camel] branch camel-3.11.x updated: CAMEL-17433 fix JavadocHelper

This is an automated email from the ASF dual-hosted git repository.

djencks pushed a commit to branch camel-3.11.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.11.x by this push:
     new 12cd944  CAMEL-17433 fix JavadocHelper
12cd944 is described below

commit 12cd9442a2b6450e5462c73f7d10148a6af39a5f
Author: David Jencks <dj...@apache.org>
AuthorDate: Tue Jan 4 14:45:32 2022 -0800

    CAMEL-17433 fix JavadocHelper
---
 .../apache/camel/tooling/util/JavadocHelper.java   |  9 +++---
 .../camel/tooling/util/JavadocHelperTest.java      | 36 ++++++++++++++++++++++
 2 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/JavadocHelper.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/JavadocHelper.java
index 9a89dcf..e940559 100644
--- a/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/JavadocHelper.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/JavadocHelper.java
@@ -20,7 +20,7 @@ import static org.apache.camel.tooling.util.Strings.isNullOrEmpty;
 
 public final class JavadocHelper {
 
-    private static final String VALID_CHARS = ".,-='/\\!&%():;#${}";
+    private static final String VALID_CHARS = ".,-='/\\!&%():;#${}<>";
 
     private JavadocHelper() {
     }
@@ -87,8 +87,9 @@ public final class JavadocHelper {
         }
 
         String s = sb.toString();
-        // remove all XML tags
-        s = s.replaceAll("<.*?>", "");
+        // remove all XML tags. This isn't complete but likely to find anything actually used.
+        s = s.replaceAll("<(\\w|:|_)(\\w|:|_|-|\\.|\\d)*\\s.*/?>", "");
+        s = s.replaceAll("</(\\w|:|_)(\\w|:|_|-|\\.|\\d)*\\s*>", "");
         // remove {@link inlined javadoc links which is special handled
         s = s.replaceAll("\\{@link\\s\\w+\\s(\\w+)}", "$1");
         s = s.replaceAll("\\{@link\\s([\\w]+)}", "$1");
@@ -130,7 +131,7 @@ public final class JavadocHelper {
             return "";
         }
         // must replace amp first, so we dont replace &lt; to amp later
-        text = text.replace("&", "&amp;");
+        text = text.replaceAll("&(?!(amp;)|(lt;)|(gt;)|(quot;))", "&amp;");
         text = text.replace("\"", "&quot;");
         text = text.replace("<", "&lt;");
         text = text.replace(">", "&gt;");
diff --git a/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/JavadocHelperTest.java b/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/JavadocHelperTest.java
index 6e1698f..05dbfca 100644
--- a/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/JavadocHelperTest.java
+++ b/tooling/camel-tooling-util/src/test/java/org/apache/camel/tooling/util/JavadocHelperTest.java
@@ -99,4 +99,40 @@ public class JavadocHelperTest {
         Assertions.assertEquals("Provides methods to interact with Transactions. E.g. sales, credits, refunds, searches, etc.",
                 s3);
     }
+
+    @Test
+    public void testltgtInJavaDoc() throws Exception {
+        String s = " * valid for versions < 26.0.";
+        String s2 = JavadocHelper.sanitizeDescription(s, false);
+        Assertions.assertEquals(s.substring(3), s2);
+        String s3 = " * valid for versions >= 26.0.";
+        String s4 = JavadocHelper.sanitizeDescription(s3, false);
+        Assertions.assertEquals(s3.substring(3), s4);
+    }
+
+    @Test
+    public void testRemoveXmlTagsInJavaDoc() throws Exception {
+        String s = " * foo <xs:foo a=\"x\" b=\"y\"> bar";
+        String s2 = JavadocHelper.sanitizeDescription(s, false);
+        Assertions.assertEquals("foo bar", s2);
+        String s3 = " * foo </xs:foo> bar";
+        String s4 = JavadocHelper.sanitizeDescription(s3, false);
+        Assertions.assertEquals("foo bar", s4);
+        String s5 = " * foo </xs:foo > bar";
+        String s6 = JavadocHelper.sanitizeDescription(s5, false);
+        Assertions.assertEquals("foo bar", s6);
+        String s7 = " * this < is not an xml > tag";
+        String s8 = JavadocHelper.sanitizeDescription(s7, false);
+        Assertions.assertEquals(s7.substring(3), s8);
+    }
+
+    @Test
+    public void testXmlEncode() throws Exception {
+        String s = "foo &amp; bar &gt; baz &lt; foo &quot; bar";
+        String s2 = JavadocHelper.xmlEncode(s);
+        Assertions.assertEquals(s, s2);
+        String s3 = "foo & bar > baz < foo \" bar";
+        String s4 = JavadocHelper.xmlEncode(s3);
+        Assertions.assertEquals(s, s4);
+    }
 }