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

[camel] branch main updated: Delete StringHelper#replaceAll and use String#replace instead as it is much faster from Java 11 onward.

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

pascalschumacher pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 8d900ab  Delete StringHelper#replaceAll and use String#replace instead as it is much faster from Java 11 onward.
8d900ab is described below

commit 8d900aba707710e60de40f4d5b60c2c2ddc270b3
Author: PascalSchumacher <pa...@gmx.net>
AuthorDate: Sun Jan 2 12:37:50 2022 +0100

    Delete StringHelper#replaceAll and use String#replace instead as it is much faster from Java 11 onward.
---
 .../component/jms/DefaultJmsKeyFormatStrategy.java | 10 ++--
 .../apache/camel/language/joor/JoorCompiler.java   |  3 +-
 .../camel/component/netty/NettyConfiguration.java  |  3 +-
 .../impl/engine/BaseExecutorServiceManager.java    |  6 +-
 .../impl/engine/DefaultManagementNameStrategy.java |  6 +-
 .../impl/engine/DefaultStreamCachingStrategy.java  |  7 +--
 .../properties/DefaultPropertiesParser.java        |  4 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  6 +-
 .../language/csimple/CSimpleCodeGenerator.java     |  8 +--
 .../camel/language/csimple/CSimpleHelper.java      |  2 +-
 .../language/simple/ast/BinaryExpression.java      |  4 +-
 .../org/apache/camel/util/StringHelperTest.java    | 16 ------
 .../org/apache/camel/support/EndpointHelper.java   |  4 +-
 .../apache/camel/support/IntrospectionSupport.java |  8 +--
 .../camel/support/builder/ExpressionBuilder.java   |  2 +-
 .../processor/DefaultExchangeFormatter.java        |  5 +-
 .../java/org/apache/camel/util/SensitiveUtils.java |  2 +-
 .../java/org/apache/camel/util/StringHelper.java   | 64 ++--------------------
 .../java/org/apache/camel/util/URIScanner.java     |  2 +-
 .../java/org/apache/camel/util/URISupport.java     |  4 +-
 .../apache/camel/util/concurrent/ThreadHelper.java |  6 +-
 .../ROOT/pages/camel-3x-upgrade-guide-3_15.adoc    |  4 ++
 22 files changed, 54 insertions(+), 122 deletions(-)

diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultJmsKeyFormatStrategy.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultJmsKeyFormatStrategy.java
index d7faf9b..8da8483 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultJmsKeyFormatStrategy.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/DefaultJmsKeyFormatStrategy.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.jms;
 
-import org.apache.camel.util.StringHelper;
-
 /**
  * Default strategy that handles dots and hyphens.
  * <p/>
@@ -32,15 +30,15 @@ public class DefaultJmsKeyFormatStrategy implements JmsKeyFormatStrategy {
 
     @Override
     public String encodeKey(String key) {
-        String answer = StringHelper.replaceAll(key, DOT, DOT_REPLACEMENT);
-        answer = StringHelper.replaceAll(answer, HYPHEN, HYPHEN_REPLACEMENT);
+        String answer = key.replace(DOT, DOT_REPLACEMENT);
+        answer = answer.replace(HYPHEN, HYPHEN_REPLACEMENT);
         return answer;
     }
 
     @Override
     public String decodeKey(String key) {
-        String answer = StringHelper.replaceAll(key, DOT_REPLACEMENT, DOT);
-        answer = StringHelper.replaceAll(answer, HYPHEN_REPLACEMENT, HYPHEN);
+        String answer = key.replace(DOT_REPLACEMENT, DOT);
+        answer = answer.replace(HYPHEN_REPLACEMENT, HYPHEN);
         return answer;
     }
 
diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java
index 9361bfe..13c4a30 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java
@@ -31,7 +31,6 @@ import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ScriptHelper;
 import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.StopWatch;
-import org.apache.camel.util.StringHelper;
 import org.joor.Reflect;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -258,7 +257,7 @@ public class JoorCompiler extends ServiceSupport implements StaticService {
         for (Map.Entry<String, String> entry : aliases.entrySet()) {
             String key = entry.getKey();
             String value = entry.getValue();
-            script = StringHelper.replaceAll(script, key, value);
+            script = script.replace(key, value);
         }
         return script;
     }
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
index 86c34b8..3f304b2 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
@@ -42,7 +42,6 @@ import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.PropertiesHelper;
-import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -277,7 +276,7 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem
         if (value == null) {
             value = defaultValue;
         } else if (value instanceof String && EndpointHelper.isReferenceParameter((String) value)) {
-            String name = StringHelper.replaceAll((String) value, "#", "");
+            String name = ((String) value).replace("#", "");
             value = CamelContextHelper.mandatoryLookup(component.getCamelContext(), name);
         }
         if (value instanceof File) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
index 088a170..d9186a8 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BaseExecutorServiceManager.java
@@ -137,7 +137,11 @@ public class BaseExecutorServiceManager extends ServiceSupport implements Execut
     @Override
     public void setThreadNamePattern(String threadNamePattern) {
         // must set camel id here in the pattern and let the other placeholders be resolved on demand
-        this.threadNamePattern = StringHelper.replaceAll(threadNamePattern, "#camelId#", this.camelContext.getName());
+        if (threadNamePattern != null) {
+            this.threadNamePattern = threadNamePattern.replace("#camelId#", this.camelContext.getName());
+        } else {
+            this.threadNamePattern = threadNamePattern;
+        }
     }
 
     @Override
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementNameStrategy.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementNameStrategy.java
index b35ae7a..9b0659b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementNameStrategy.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultManagementNameStrategy.java
@@ -118,11 +118,11 @@ public class DefaultManagementNameStrategy implements ManagementNameStrategy {
         String answer = pattern;
         if (pattern.contains("#counter#")) {
             // only increment the counter on-demand
-            answer = StringHelper.replaceAll(pattern, "#counter#", "" + nextNameCounter());
+            answer = pattern.replace("#counter#", "" + nextNameCounter());
         }
         // camelId and name is the same tokens
-        answer = StringHelper.replaceAll(answer, "#camelId#", name);
-        answer = StringHelper.replaceAll(answer, "#name#", name);
+        answer = answer.replace("#camelId#", name);
+        answer = answer.replace("#name#", name);
 
         // allow custom name resolution as well. For example with camel-core-osgi we have a custom
         // name strategy that supports OSGI specific tokens such as #bundleId# etc.
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
index e14acf7..6c6733e 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
@@ -32,7 +32,6 @@ import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.FilePathResolver;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -247,8 +246,8 @@ public class DefaultStreamCachingStrategy extends ServiceSupport implements Came
 
         // replace tokens
         String answer = path;
-        answer = StringHelper.replaceAll(answer, "#camelId#", name);
-        answer = StringHelper.replaceAll(answer, "#name#", name);
+        answer = answer.replace("#camelId#", name);
+        answer = answer.replace("#name#", name);
         // replace custom
         answer = customResolveManagementName(answer);
         return answer;
@@ -257,7 +256,7 @@ public class DefaultStreamCachingStrategy extends ServiceSupport implements Came
     protected String customResolveManagementName(String pattern) {
         if (pattern.contains("#uuid#")) {
             String uuid = camelContext.getUuidGenerator().generateUuid();
-            pattern = StringHelper.replaceAll(pattern, "#uuid#", uuid);
+            pattern = pattern.replace("#uuid#", uuid);
         }
         return FilePathResolver.resolvePath(pattern);
     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java
index 2b06ad5..73870e1 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/DefaultPropertiesParser.java
@@ -66,8 +66,8 @@ public class DefaultPropertiesParser implements PropertiesParser {
         String answer = context.parse(text);
         if (keepUnresolvedOptional && answer != null && answer.contains(UNRESOLVED_PREFIX_TOKEN)) {
             // replace temporary unresolved keys back to with placeholders so they are kept as-is
-            answer = StringHelper.replaceAll(answer, UNRESOLVED_PREFIX_TOKEN, PREFIX_TOKEN);
-            answer = StringHelper.replaceAll(answer, UNRESOLVED_SUFFIX_TOKEN, SUFFIX_TOKEN);
+            answer = answer.replace(UNRESOLVED_PREFIX_TOKEN, PREFIX_TOKEN);
+            answer = answer.replace(UNRESOLVED_SUFFIX_TOKEN, SUFFIX_TOKEN);
         }
         return answer;
     }
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index a1601fb..f3a33c5b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -153,7 +153,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
                 // lets separate routes with empty line
                 xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                         "xmlns=\"http://camel.apache.org/schema/spring\">\n");
-                xml = StringHelper.replaceAll(xml, "</route>", "</route>\n");
+                xml = xml.replace("</route>", "</route>\n");
                 LOG.info("\n\n{}\n", xml);
             } catch (Exception e) {
                 LOG.warn("Error dumping routes to XML due to {}. This exception is ignored.", e.getMessage(), e);
@@ -171,7 +171,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
                 // lets separate rests with empty line
                 xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                         "xmlns=\"http://camel.apache.org/schema/spring\">\n");
-                xml = StringHelper.replaceAll(xml, "</rest>", "</rest>\n");
+                xml = xml.replace("</rest>", "</rest>\n");
                 LOG.info("\n\n{}\n", xml);
             } catch (Exception e) {
                 LOG.warn("Error dumping rests to XML due to {}. This exception is ignored.", e.getMessage(), e);
@@ -189,7 +189,7 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame
                 // lets separate rests with empty line
                 xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                         "xmlns=\"http://camel.apache.org/schema/spring\">\n");
-                xml = StringHelper.replaceAll(xml, "</routeTemplate>", "</routeTemplate>\n");
+                xml = xml.replace("</routeTemplate>", "</routeTemplate>\n");
                 LOG.info("\n\n{}\n", xml);
             } catch (Exception e) {
                 LOG.warn("Error dumping route-templates to XML due to {}. This exception is ignored.", e.getMessage(), e);
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
index 605f417..2e04d37 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
@@ -22,8 +22,6 @@ import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.camel.util.StringHelper;
-
 /**
  * Source code generate for csimple language.
  *
@@ -112,9 +110,9 @@ public class CSimpleCodeGenerator {
         sb.append("    @Override\n");
         sb.append("    public String getText() {\n");
         // \ should be escaped
-        String escaped = StringHelper.replaceAll(text, "\\", "\\\\");
+        String escaped = text.replace("\\", "\\\\");
         // we need to escape all " so its a single literal string
-        escaped = StringHelper.replaceAll(escaped, "\"", "\\\"");
+        escaped = escaped.replace("\"", "\\\"");
         sb.append("        return \"").append(escaped).append("\";\n");
         sb.append("    }\n");
         sb.append("\n");
@@ -170,7 +168,7 @@ public class CSimpleCodeGenerator {
         for (Map.Entry<String, String> entry : aliases.entrySet()) {
             String key = entry.getKey();
             String value = entry.getValue();
-            script = StringHelper.replaceAll(script, key, value);
+            script = script.replace(key, value);
         }
         return script;
     }
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index e1d34e6..eb81c91c 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -175,7 +175,7 @@ public final class CSimpleHelper {
         if (body == null) {
             return null;
         }
-        body = StringHelper.replaceAll(body, System.lineSeparator(), "");
+        body = body.replace(System.lineSeparator(), "");
         return body;
     }
 
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
index 9ed7a9c..e122905 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BinaryExpression.java
@@ -322,11 +322,11 @@ public class BinaryExpression extends BaseSimpleNode {
             return "!is(exchange, " + leftExp + ", " + type + ")";
         } else if (operator == BinaryOperatorType.REGEX) {
             // regexp is a pain with escapes
-            String escaped = StringHelper.replaceAll(rightExp, "\\", "\\\\");
+            String escaped = rightExp.replace("\\", "\\\\");
             return "regexp(exchange, " + leftExp + ", " + escaped + ")";
         } else if (operator == BinaryOperatorType.NOT_REGEX) {
             // regexp is a pain with escapes
-            String escaped = StringHelper.replaceAll(rightExp, "\\", "\\\\");
+            String escaped = rightExp.replace("\\", "\\\\");
             return "!regexp(exchange, " + leftExp + ", " + escaped + ")";
         } else if (operator == BinaryOperatorType.IN) {
             return "in(exchange, " + leftExp + ", " + rightExp + ")";
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
index 8fe32d1..3632bb0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
@@ -177,22 +177,6 @@ public class StringHelperTest {
     }
 
     @Test
-    public void testReplaceAll() throws Exception {
-        assertEquals("", StringHelper.replaceAll("", "", ""));
-        assertEquals(null, StringHelper.replaceAll(null, "", ""));
-        assertEquals("foobar", StringHelper.replaceAll("foobar", "###", "DOT"));
-
-        assertEquals("foobar", StringHelper.replaceAll("foo.bar", ".", ""));
-        assertEquals("fooDOTbar", StringHelper.replaceAll("foo.bar", ".", "DOT"));
-        assertEquals("fooDOTbar", StringHelper.replaceAll("foo###bar", "###", "DOT"));
-        assertEquals("foobar", StringHelper.replaceAll("foo###bar", "###", ""));
-        assertEquals("fooDOTbarDOTbaz", StringHelper.replaceAll("foo.bar.baz", ".", "DOT"));
-        assertEquals("fooDOTbarDOTbazDOT", StringHelper.replaceAll("foo.bar.baz.", ".", "DOT"));
-        assertEquals("DOTfooDOTbarDOTbazDOT", StringHelper.replaceAll(".foo.bar.baz.", ".", "DOT"));
-        assertEquals("fooDOT", StringHelper.replaceAll("foo.", ".", "DOT"));
-    }
-
-    @Test
     public void testRemoveInitialCharacters() throws Exception {
         assertEquals("foo", StringHelper.removeStartingCharacters("foo", '/'));
         assertEquals("foo", StringHelper.removeStartingCharacters("/foo", '/'));
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
index 285ca71..d9ced10 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/EndpointHelper.java
@@ -370,8 +370,8 @@ public final class EndpointHelper {
                 throw new NoSuchBeanException(value, e);
             }
         } else {
-            String valueNoHash = StringHelper.replaceAll(value, "#bean:", "");
-            valueNoHash = StringHelper.replaceAll(valueNoHash, "#", "");
+            String valueNoHash = value.replace("#bean:", "");
+            valueNoHash = valueNoHash.replace("#", "");
             if (mandatory) {
                 return CamelContextHelper.mandatoryLookupAndConvert(context, valueNoHash, type);
             } else {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java
index 228b1f8..7d8204b 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/IntrospectionSupport.java
@@ -654,7 +654,7 @@ public final class IntrospectionSupport {
             if (obj instanceof Map) {
                 Map map = (Map) obj;
                 if (context != null && refName != null && value == null) {
-                    String s = StringHelper.replaceAll(refName, "#", "");
+                    String s = refName.replace("#", "");
                     value = CamelContextHelper.lookup(context, s);
                 }
                 map.put(lookupKey, value);
@@ -662,7 +662,7 @@ public final class IntrospectionSupport {
             } else if (obj instanceof List) {
                 List list = (List) obj;
                 if (context != null && refName != null && value == null) {
-                    String s = StringHelper.replaceAll(refName, "#", "");
+                    String s = refName.replace("#", "");
                     value = CamelContextHelper.lookup(context, s);
                 }
                 if (isNotEmpty(lookupKey)) {
@@ -692,7 +692,7 @@ public final class IntrospectionSupport {
                 return true;
             } else if (obj.getClass().isArray() && lookupKey != null) {
                 if (context != null && refName != null && value == null) {
-                    String s = StringHelper.replaceAll(refName, "#", "");
+                    String s = refName.replace("#", "");
                     value = CamelContextHelper.lookup(context, s);
                 }
                 int idx = Integer.parseInt(lookupKey);
@@ -748,7 +748,7 @@ public final class IntrospectionSupport {
             Object ref = value;
             // try and lookup the reference based on the method
             if (context != null && refName != null && ref == null) {
-                String s = StringHelper.replaceAll(refName, "#", "");
+                String s = refName.replace("#", "");
                 ref = CamelContextHelper.lookup(context, s);
                 if (ref == null) {
                     // try the next method if nothing was found
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index 9951a5b..008c1b4 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -1806,7 +1806,7 @@ public class ExpressionBuilder {
                 if (body == null) {
                     return null;
                 }
-                body = StringHelper.replaceAll(body, System.lineSeparator(), "");
+                body = body.replace(System.lineSeparator(), "");
                 return body;
             }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
index a8ceed8..7d42ae6 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
@@ -31,7 +31,6 @@ import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.support.MessageHelper;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
 
 /**
  * Default {@link ExchangeFormatter} that have fine grained options to configure what to include in the output.
@@ -167,8 +166,8 @@ public class DefaultExchangeFormatter implements ExchangeFormatter {
                 sb.append(SEPARATOR);
             }
             String body = getBodyAsString(in);
-            if (skipBodyLineSeparator) {
-                body = StringHelper.replaceAll(body, LS, "");
+            if (skipBodyLineSeparator && body != null) {
+                body = body.replace(LS, "");
             }
             style(sb, "Body").append(body);
         }
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java b/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
index 819e890..0c794ad 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
@@ -122,7 +122,7 @@ public final class SensitiveUtils {
             text = text.substring(lastPeriod + 1);
         }
         text = text.toLowerCase(Locale.ENGLISH);
-        text = StringHelper.replaceAll(text, "-", "");
+        text = text.replace("-", "");
         return SENSITIVE_KEYS.contains(text);
     }
 
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
index 0c9ab54..cdd2425 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
@@ -129,8 +129,8 @@ public final class StringHelper {
             return s;
         }
 
-        s = replaceAll(s, "'", "");
-        s = replaceAll(s, "\"", "");
+        s = s.replace("'", "");
+        s = s.replace("\"", "");
         return s;
     }
 
@@ -192,10 +192,10 @@ public final class StringHelper {
             return "";
         }
         // must replace amp first, so we dont replace &lt; to amp later
-        text = replaceAll(text, "&", "&amp;");
-        text = replaceAll(text, "\"", "&quot;");
-        text = replaceAll(text, "<", "&lt;");
-        text = replaceAll(text, ">", "&gt;");
+        text = text.replace("&", "&amp;");
+        text = text.replace("\"", "&quot;");
+        text = text.replace("<", "&lt;");
+        text = text.replace(">", "&gt;");
         return text;
     }
 
@@ -262,58 +262,6 @@ public final class StringHelper {
     }
 
     /**
-     * Replaces all the from tokens in the given input string.
-     * <p/>
-     * This implementation is not recursive, not does it check for tokens in the replacement string.
-     *
-     * @param  input                    the input string
-     * @param  from                     the from string, must <b>not</b> be <tt>null</tt> or empty
-     * @param  to                       the replacement string, must <b>not</b> be empty
-     * @return                          the replaced string, or the input string if no replacement was needed
-     * @throws IllegalArgumentException if the input arguments is invalid
-     */
-    public static String replaceAll(String input, String from, String to) {
-        // TODO: Use String.replace instead of this method when using JDK11 as minimum (as its much faster in JDK 11 onwards)
-
-        if (ObjectHelper.isEmpty(input)) {
-            return input;
-        }
-        if (from == null) {
-            throw new IllegalArgumentException("from cannot be null");
-        }
-        if (to == null) {
-            // to can be empty, so only check for null
-            throw new IllegalArgumentException("to cannot be null");
-        }
-
-        // fast check if there is any from at all
-        if (!input.contains(from)) {
-            return input;
-        }
-
-        final int len = from.length();
-        final int max = input.length();
-        StringBuilder sb = new StringBuilder(max);
-        for (int i = 0; i < max;) {
-            if (i + len <= max) {
-                String token = input.substring(i, i + len);
-                if (from.equals(token)) {
-                    sb.append(to);
-                    // fast forward
-                    i = i + len;
-                    continue;
-                }
-            }
-
-            // append single char
-            sb.append(input.charAt(i));
-            // forward to next
-            i++;
-        }
-        return sb.toString();
-    }
-
-    /**
      * Replaces the first from token in the given input string.
      * <p/>
      * This implementation is not recursive, not does it check for tokens in the replacement string.
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/URIScanner.java b/core/camel-util/src/main/java/org/apache/camel/util/URIScanner.java
index d2e6113..e71c945 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/URIScanner.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/URIScanner.java
@@ -172,7 +172,7 @@ class URIScanner {
             text = value.toString();
         } else {
             // need to replace % with %25 to avoid losing "%" when decoding
-            String s = StringHelper.replaceAll(value.toString(), "%", "%25");
+            String s = value.toString().replace("%", "%25");
             text = URLDecoder.decode(s, CHARSET);
         }
 
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java b/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
index d627034..4f48543 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/URISupport.java
@@ -507,7 +507,7 @@ public final class URISupport {
         if (raw != null) {
             // do not encode RAW parameters unless it has %
             // need to replace % with %25 to avoid losing "%" when decoding
-            String s = StringHelper.replaceAll(value, "%", "%25");
+            String s = value.replace("%", "%25");
             rc.append(s);
         } else {
             if (encode) {
@@ -631,7 +631,7 @@ public final class URISupport {
             String after = path.substring(max);
 
             // replace the @ with %40
-            before = StringHelper.replaceAll(before, "@", "%40");
+            before = before.replace("@", "%40");
             path = before + after;
         }
 
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
index 8254575..8d402ea 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
@@ -56,9 +56,9 @@ public final class ThreadHelper {
         String shortName = name.contains("?") ? StringHelper.before(name, "?") : name;
 
         // replace tokens
-        String answer = StringHelper.replaceAll(pattern, "#counter#", "" + nextThreadCounter());
-        answer = StringHelper.replaceAll(answer, "#longName#", longName);
-        answer = StringHelper.replaceAll(answer, "#name#", shortName);
+        String answer = pattern.replace("#counter#", Long.toString(nextThreadCounter()));
+        answer = answer.replace("#longName#", longName);
+        answer = answer.replace("#name#", shortName);
 
         // are there any #word# combos left, if so they should be considered invalid tokens
         if (INVALID_PATTERN.matcher(answer).matches()) {
diff --git a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_15.adoc b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_15.adoc
index 84bc5e4..92dab96 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_15.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_15.adoc
@@ -37,6 +37,10 @@ node in the JMX MBean tree.
 
 Removed deprecated operations on `CamelContextMBean` and `CamelRouteMBean`.
 
+=== camel-util
+
+Deleted the `replaceAll` method of `org.apache.camel.util.StringHelper`. Please use the `replace` method of `java.lang.String` instead, as it is much faster from Java 11 onward.
+
 === camel-yaml-dsl
 
 Removed `steps` from `route` because steps should only be configured on `from` making