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 2021/02/27 07:58:31 UTC

[camel] 02/02: CAMEL-16250 - support more edge cases of dashToCamelCase conversion

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

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

commit a80ff680e445e2b9af0b365b1ee418504c6285c5
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 27 08:57:59 2021 +0100

    CAMEL-16250 - support more edge cases of dashToCamelCase conversion
---
 .../java/org/apache/camel/util/StringHelper.java   | 25 ++++++++++++----------
 .../org/apache/camel/util/StringHelperTest.java    | 18 ++++++++--------
 2 files changed, 23 insertions(+), 20 deletions(-)

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 686af48..fa0c827 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
@@ -46,8 +46,7 @@ public final class StringHelper {
      * @throws NullPointerException if <code>s</code> is <code>null</code>.
      */
     public static String sanitize(String s) {
-        return s
-                .replace(':', '-')
+        return s.replace(':', '-')
                 .replace('_', '-')
                 .replace('.', '-')
                 .replace('/', '-')
@@ -469,15 +468,19 @@ public final class StringHelper {
             return text;
         }
 
-        StringBuilder sb = new StringBuilder();
-        String[] splittedString = text.split("\\-");
-        for (int i = 0; i < splittedString.length; i++) {
-            String currentToken = splittedString[i];
-            if (i == 0) {
-                sb.append(currentToken);
-            } else if (!currentToken.isEmpty()) {
-                sb.append(Character.toUpperCase(currentToken.charAt(0)));
-                sb.append(currentToken.substring(1));
+        // there is at least 1 dash so the capacity can be shorter
+        StringBuilder sb = new StringBuilder(length - 1);
+        boolean upper = false;
+        for (int i = 0; i < length; i++) {
+            char c = text.charAt(i);
+            if (c == '-') {
+                upper = true;
+            } else {
+                if (upper) {
+                    c = Character.toUpperCase(c);
+                }
+                sb.append(c);
+                upper = false;
             }
         }
         return sb.toString();
diff --git a/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java b/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java
index ec122ec..3c89c24 100644
--- a/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java
+++ b/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java
@@ -56,45 +56,45 @@ public class StringHelperTest {
         assertEquals("available-phone-number-country", camelCaseToDash("availablePhoneNumberCountry"));
         assertEquals("available-phone-number-country", camelCaseToDash("AvailablePhoneNumberCountry"));
     }
-    
+
     @Nested
     class DashToCamelCase {
-        
+
         @Test
         void testDashToCamelCaseWithNull() throws Exception {
             assertThat(dashToCamelCase(null)).isNull();
         }
-        
+
         @Test
         void testDashToCamelCaseWithEmptyValue() throws Exception {
             assertThat(dashToCamelCase("")).isEmpty();
         }
-        
+
         @Test
         void testDashToCamelCaseWithNoDash() throws Exception {
             assertThat(dashToCamelCase("a")).isEqualTo("a");
         }
-        
+
         @Test
         void testDashToCamelCaseWithOneDash() throws Exception {
             assertThat(dashToCamelCase("a-b")).isEqualTo("aB");
         }
-        
+
         @Test
         void testDashToCamelCaseWithSeveralDashes() throws Exception {
             assertThat(dashToCamelCase("a-bb-cc-dd")).isEqualTo("aBbCcDd");
         }
-        
+
         @Test
         void testDashToCamelCaseWithEndDash() throws Exception {
             assertThat(dashToCamelCase("a-")).isEqualTo("a");
         }
-        
+
         @Test
         void testDashToCamelCaseWithEndDashes() throws Exception {
             assertThat(dashToCamelCase("a----")).isEqualTo("a");
         }
-        
+
         @Test
         void testDashToCamelCaseWithSeceralDashesGrouped() throws Exception {
             assertThat(dashToCamelCase("a--b")).isEqualTo("aB");