You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/04/10 16:38:56 UTC

[camel] branch main updated: Optimization of loops with the only action of appending a string several times (#9828)

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

davsclaus 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 7f0e0f52088 Optimization of loops with the only action of appending a string several times (#9828)
7f0e0f52088 is described below

commit 7f0e0f52088b993a84da6786e0ac868752bd0ded
Author: dk2k <dk...@users.noreply.github.com>
AuthorDate: Mon Apr 10 19:38:40 2023 +0300

    Optimization of loops with the only action of appending a string several times (#9828)
    
    * Optimization of loops with the only action of appending a string several times. For this case String.repeat() method was introduced in java 11
    
    * Removed Math.max() calls inside String.repeat(). Removed a couple of unneeded StringBuilders
    
    * Removed Math.max() calls inside String.repeat(). Removed a couple of unneeded StringBuilders
    
    ---------
    
    Co-authored-by: dk2k <dk...@ya.ru>
---
 .../org/apache/camel/maven/RouteCoverageMojo.java  |  6 +--
 .../camel/parser/model/CamelNodeDetails.java       |  6 +--
 .../dataformat/bindy/BindyFixedLengthFactory.java  |  6 +--
 .../jdbc/ClusteredJdbcAggregationRepository.java   |  4 +-
 .../ClusteredPostgresAggregationRepository.java    |  4 +-
 .../aggregate/jdbc/JdbcAggregationRepository.java  |  4 +-
 .../jdbc/PostgresAggregationRepository.java        |  4 +-
 .../debugger/DefaultBacklogTracerEventMessage.java |  4 +-
 .../simple/types/SimpleIllegalSyntaxException.java |  9 ++--
 .../org/apache/camel/support/MessageHelper.java    |  8 +---
 .../main/java/org/apache/camel/util/FileUtil.java  |  4 +-
 .../java/org/apache/camel/util/json/Jsoner.java    | 50 ++++++----------------
 12 files changed, 28 insertions(+), 81 deletions(-)

diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
index 80556a7b8c9..ab3fdec5df8 100644
--- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
+++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
@@ -502,11 +502,7 @@ public class RouteCoverageMojo extends AbstractExecMojo {
     }
 
     private static String padString(int level) {
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < level; i++) {
-            sb.append("  ");
-        }
-        return sb.toString();
+        return "  ".repeat(level);
     }
 
     private boolean matchFile(File file) {
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
index 2f5d8faad96..16d786e0c9a 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelNodeDetails.java
@@ -170,10 +170,6 @@ public class CamelNodeDetails {
     }
 
     private static String padString(int level) {
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < level; i++) {
-            sb.append("  ");
-        }
-        return sb.toString();
+        return "  ".repeat(level);
     }
 }
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
index 0bf10bd76c3..9bc2b8b505d 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyFixedLengthFactory.java
@@ -553,13 +553,9 @@ public class BindyFixedLengthFactory extends BindyAbstractFactory implements Bin
     }
 
     private String generatePaddingChars(char pad, int lengthField, int lengthString) {
-        StringBuilder buffer = new StringBuilder();
         int size = lengthField - lengthString;
 
-        for (int i = 0; i < size; i++) {
-            buffer.append(Character.toString(pad));
-        }
-        return buffer.toString();
+        return Character.toString(pad).repeat(size);
     }
 
     /**
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredJdbcAggregationRepository.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredJdbcAggregationRepository.java
index 9a82899c60d..0c87afc0de3 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredJdbcAggregationRepository.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredJdbcAggregationRepository.java
@@ -124,9 +124,7 @@ public class ClusteredJdbcAggregationRepository extends JdbcAggregationRepositor
         }
         queryBuilder.append(") VALUES (");
 
-        for (int i = 0; i < totalParameterIndex - 1; i++) {
-            queryBuilder.append("?, ");
-        }
+        queryBuilder.append("?, ".repeat(totalParameterIndex - 1));
         queryBuilder.append("?)");
 
         String sql = queryBuilder.toString();
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredPostgresAggregationRepository.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredPostgresAggregationRepository.java
index 017fa0d6a2c..fdb0b75215a 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredPostgresAggregationRepository.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/ClusteredPostgresAggregationRepository.java
@@ -78,9 +78,7 @@ public class ClusteredPostgresAggregationRepository extends ClusteredJdbcAggrega
 
         queryBuilder.append(") VALUES (");
 
-        for (int i = 0; i < totalParameterIndex - 1; i++) {
-            queryBuilder.append("?, ");
-        }
+        queryBuilder.append("?, ".repeat(Math.max(0, totalParameterIndex - 1)));
         queryBuilder.append("?)");
 
         queryBuilder.append(" ON CONFLICT DO NOTHING");
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java
index 2bbbef4143b..00aac3c59a2 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java
@@ -264,9 +264,7 @@ public class JdbcAggregationRepository extends ServiceSupport
 
         queryBuilder.append(") VALUES (");
 
-        for (int i = 0; i < totalParameterIndex - 1; i++) {
-            queryBuilder.append("?, ");
-        }
+        queryBuilder.append("?, ".repeat(totalParameterIndex - 1));
         queryBuilder.append("?)");
 
         String sql = queryBuilder.toString();
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/PostgresAggregationRepository.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/PostgresAggregationRepository.java
index 4f1da5bba88..585011782f2 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/PostgresAggregationRepository.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/PostgresAggregationRepository.java
@@ -78,9 +78,7 @@ public class PostgresAggregationRepository extends JdbcAggregationRepository {
 
         queryBuilder.append(") VALUES (");
 
-        for (int i = 0; i < totalParameterIndex - 1; i++) {
-            queryBuilder.append("?, ");
-        }
+        queryBuilder.append("?, ".repeat(totalParameterIndex - 1));
         queryBuilder.append("?)");
 
         queryBuilder.append(" ON CONFLICT DO NOTHING");
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java
index 168a4f2eaca..98bf1595c5b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/debugger/DefaultBacklogTracerEventMessage.java
@@ -183,9 +183,7 @@ public final class DefaultBacklogTracerEventMessage implements BacklogTracerEven
     @Override
     public String toXml(int indent) {
         StringBuilder prefix = new StringBuilder();
-        for (int i = 0; i < indent; i++) {
-            prefix.append(" ");
-        }
+        prefix.append(" ".repeat(indent));
 
         StringBuilder sb = new StringBuilder();
         sb.append(prefix).append("<").append(ROOT_TAG).append(">\n");
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java
index 4215eb088a1..2beec16111f 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/SimpleIllegalSyntaxException.java
@@ -23,6 +23,7 @@ import org.apache.camel.ExpressionIllegalSyntaxException;
  */
 public class SimpleIllegalSyntaxException extends ExpressionIllegalSyntaxException {
     private static final long serialVersionUID = 1L;
+    private static final String FORMATTED_NULL = "[null]";
     private final int index;
     private final String message;
 
@@ -53,7 +54,7 @@ public class SimpleIllegalSyntaxException extends ExpressionIllegalSyntaxExcepti
      */
     public String getShortMessage() {
         if (message == null) {
-            return "[null]";
+            return FORMATTED_NULL;
         }
         return message;
     }
@@ -61,7 +62,7 @@ public class SimpleIllegalSyntaxException extends ExpressionIllegalSyntaxExcepti
     @Override
     public String getMessage() {
         if (message == null) {
-            return "[null]";
+            return FORMATTED_NULL;
         }
 
         StringBuilder sb = new StringBuilder(message);
@@ -69,9 +70,7 @@ public class SimpleIllegalSyntaxException extends ExpressionIllegalSyntaxExcepti
             sb.append(" at location ").append(index);
             // create a nice looking message with indicator where the problem is
             sb.append("\n").append(getExpression()).append("\n");
-            for (int i = 0; i < index; i++) {
-                sb.append(" ");
-            }
+            sb.append(" ".repeat(index));
             sb.append("*\n");
         }
         return sb.toString();
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
index c0617cf16d1..cbc6289d849 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/MessageHelper.java
@@ -495,9 +495,7 @@ public final class MessageHelper {
         StringBuilder sb = new StringBuilder();
 
         StringBuilder prefix = new StringBuilder();
-        for (int i = 0; i < indent; i++) {
-            prefix.append(" ");
-        }
+        prefix.append(" ".repeat(indent));
 
         // include exchangeId/exchangePattern/type as attribute on the <message> tag
         sb.append(prefix);
@@ -1002,9 +1000,7 @@ public final class MessageHelper {
      */
     public static String dumpExceptionAsXML(Throwable exception, int indent) {
         StringBuilder prefix = new StringBuilder();
-        for (int i = 0; i < indent; i++) {
-            prefix.append(" ");
-        }
+        prefix.append(" ".repeat(indent));
 
         StringBuilder sb = new StringBuilder();
         try {
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/FileUtil.java b/core/camel-util/src/main/java/org/apache/camel/util/FileUtil.java
index 22a6db39253..356027a66de 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/FileUtil.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/FileUtil.java
@@ -345,9 +345,7 @@ public final class FileUtil {
             sb.append(":");
         }
 
-        for (int i = 0; i < cntSlashsAtStart; i++) {
-            sb.append(separator);
-        }
+        sb.append(String.valueOf(separator).repeat(cntSlashsAtStart));
 
         // now we build back using FIFO so need to use descending
         for (Iterator<String> it = stack.descendingIterator(); it.hasNext();) {
diff --git a/tooling/camel-util-json/src/main/java/org/apache/camel/util/json/Jsoner.java b/tooling/camel-util-json/src/main/java/org/apache/camel/util/json/Jsoner.java
index d8533163ae8..d690ecd3447 100644
--- a/tooling/camel-util-json/src/main/java/org/apache/camel/util/json/Jsoner.java
+++ b/tooling/camel-util-json/src/main/java/org/apache/camel/util/json/Jsoner.java
@@ -513,9 +513,7 @@ public final class Jsoner {
                             || character >= '\u2000' && character <= '\u20FF') {
                         final String characterHexCode = Integer.toHexString(character);
                         builder.append("\\u");
-                        for (int k = 0; k < (4 - characterHexCode.length()); k++) {
-                            builder.append("0");
-                        }
+                        builder.append("0".repeat((4 - characterHexCode.length())));
                         builder.append(characterHexCode.toUpperCase());
                     } else {
                         /* Character didn't need escaping. */
@@ -647,11 +645,8 @@ public final class Jsoner {
         if (spaces > 10 || spaces < 2) {
             throw new IllegalArgumentException("Indentation with spaces must be between 2 and 10.");
         }
-        final StringBuilder indentation = new StringBuilder("");
-        for (int i = 0; i < spaces; i++) {
-            indentation.append(" ");
-        }
-        return Jsoner.prettyPrint(printable, indentation.toString(), depth);
+
+        return Jsoner.prettyPrint(printable, " ".repeat(spaces), depth);
     }
 
     /**
@@ -683,9 +678,7 @@ public final class Jsoner {
                         returnable.append(lexed.getValue());
                         if (level <= depth) {
                             returnable.append("\n");
-                            for (int i = 0; i < level; i++) {
-                                returnable.append(indentation);
-                            }
+                            returnable.append(String.valueOf(indentation).repeat(level));
                         } else {
                             returnable.append(" ");
                         }
@@ -698,9 +691,7 @@ public final class Jsoner {
                         returnable.append(lexed.getValue());
                         if (++level <= depth) {
                             returnable.append("\n");
-                            for (int i = 0; i < level; i++) {
-                                returnable.append(indentation);
-                            }
+                            returnable.append(String.valueOf(indentation).repeat(level));
                         } else {
                             returnable.append(" ");
                         }
@@ -709,9 +700,7 @@ public final class Jsoner {
                     case RIGHT_SQUARE:
                         if (level-- <= depth) {
                             returnable.append("\n");
-                            for (int i = 0; i < level; i++) {
-                                returnable.append(indentation);
-                            }
+                            returnable.append(String.valueOf(indentation).repeat(level));
                         } else {
                             returnable.append(" ");
                         }
@@ -756,11 +745,8 @@ public final class Jsoner {
         if (spaces > 10 || spaces < 2) {
             throw new IllegalArgumentException("Indentation with spaces must be between 2 and 10.");
         }
-        final StringBuilder indentation = new StringBuilder("");
-        for (int i = 0; i < spaces; i++) {
-            indentation.append(" ");
-        }
-        return Jsoner.colorPrint(printable, indentation.toString(), Integer.MAX_VALUE, pretty, color);
+
+        return Jsoner.colorPrint(printable, " ".repeat(spaces), Integer.MAX_VALUE, pretty, color);
     }
 
     public static String colorPrint(
@@ -784,9 +770,7 @@ public final class Jsoner {
                         if (level <= depth) {
                             if (pretty) {
                                 returnable.append("\n");
-                                for (int i = 0; i < level; i++) {
-                                    returnable.append(indentation);
-                                }
+                                returnable.append(String.valueOf(indentation).repeat(level));
                             }
                         } else {
                             if (pretty) {
@@ -804,9 +788,7 @@ public final class Jsoner {
                         if (++level <= depth) {
                             if (pretty) {
                                 returnable.append("\n");
-                                for (int i = 0; i < level; i++) {
-                                    returnable.append(indentation);
-                                }
+                                returnable.append(String.valueOf(indentation).repeat(level));
                             }
                         } else {
                             if (pretty) {
@@ -819,9 +801,7 @@ public final class Jsoner {
                         if (++level <= depth) {
                             if (pretty) {
                                 returnable.append("\n");
-                                for (int i = 0; i < level; i++) {
-                                    returnable.append(indentation);
-                                }
+                                returnable.append(String.valueOf(indentation).repeat(level));
                             }
                         } else {
                             if (pretty) {
@@ -833,9 +813,7 @@ public final class Jsoner {
                         if (level-- <= depth) {
                             if (pretty) {
                                 returnable.append("\n");
-                                for (int i = 0; i < level; i++) {
-                                    returnable.append(indentation);
-                                }
+                                returnable.append(String.valueOf(indentation).repeat(level));
                             }
                         } else {
                             if (pretty) {
@@ -848,9 +826,7 @@ public final class Jsoner {
                         if (level-- <= depth) {
                             if (pretty) {
                                 returnable.append("\n");
-                                for (int i = 0; i < level; i++) {
-                                    returnable.append(indentation);
-                                }
+                                returnable.append(String.valueOf(indentation).repeat(level));
                             }
                         } else {
                             if (pretty) {