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

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

commit 775da6ca7ae0f2fe4980a39b908bd884a5fb8d95
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Thu Apr 27 08:57:35 2023 +0200

    (chores) camel-base: cleanup boolean conversions
---
 .../impl/converter/CoreTypeConverterRegistry.java  | 88 ++++++++++------------
 1 file changed, 40 insertions(+), 48 deletions(-)

diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
index f7ed3be65aa..f7f2ed1cc7c 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/converter/CoreTypeConverterRegistry.java
@@ -155,22 +155,9 @@ public class CoreTypeConverterRegistry extends 
ServiceSupport implements TypeCon
                 return (T) answer;
             } else if (type == Boolean.class && value instanceof String) {
                 // String -> Boolean
-                String str = (String) value;
-                // must be 4 or 5 in length
-                int len = str.length();
-                // fast check the value as-is in lower case which is most 
common
-                if (len == 4 && "true".equals(str)) {
-                    return (T) Boolean.TRUE;
-                } else if (len == 5 && "false".equals(str)) {
-                    return (T) Boolean.FALSE;
-                } else {
-                    // do check for ignore case
-                    str = str.toUpperCase();
-                    if (len == 4 && "TRUE".equals(str)) {
-                        return (T) Boolean.TRUE;
-                    } else if (len == 5 && "FALSE".equals(str)) {
-                        return (T) Boolean.FALSE;
-                    }
+                T parsedBoolean = customParseBoolean((String) value);
+                if (parsedBoolean != null) {
+                    return parsedBoolean;
                 }
             } else if (type.isPrimitive()) {
                 // okay its a wrapper -> primitive then return as-is for some 
common types
@@ -202,6 +189,37 @@ public class CoreTypeConverterRegistry extends 
ServiceSupport implements TypeCon
         return (T) doConvertTo(type, exchange, value, false, false);
     }
 
+    // must be 4 or 5 in length
+    private static <T> T customParseBoolean(String str) {
+        int len = str.length();
+        // fast check the value as-is in lower case which is most common
+        if (len == 4) {
+            if ("true".equals(str)) {
+                return (T) Boolean.TRUE;
+            }
+
+            if ("TRUE".equals(str.toUpperCase())) {
+                return (T) Boolean.TRUE;
+            }
+
+            return null;
+        }
+
+        if (len == 5) {
+            if ("false".equals(str)) {
+                return (T) Boolean.FALSE;
+            }
+
+            if ("FALSE".equals(str.toUpperCase())) {
+                return (T) Boolean.FALSE;
+            }
+
+            return null;
+        }
+
+        return null;
+    }
+
     public <T> T mandatoryConvertTo(Class<T> type, Object value) throws 
NoTypeConversionAvailableException {
         return mandatoryConvertTo(type, null, value);
     }
@@ -225,22 +243,9 @@ public class CoreTypeConverterRegistry extends 
ServiceSupport implements TypeCon
                 return (T) answer;
             } else if (type == Boolean.class && value instanceof String) {
                 // String -> Boolean
-                String str = (String) value;
-                // must be 4 or 5 in length
-                int len = str.length();
-                // fast check the value as-is in lower case which is most 
common
-                if (len == 4 && "true".equals(str)) {
-                    return (T) Boolean.TRUE;
-                } else if (len == 5 && "false".equals(str)) {
-                    return (T) Boolean.FALSE;
-                } else {
-                    // do check for ignore case
-                    str = str.toUpperCase();
-                    if (len == 4 && "TRUE".equals(str)) {
-                        return (T) Boolean.TRUE;
-                    } else if (len == 5 && "FALSE".equals(str)) {
-                        return (T) Boolean.FALSE;
-                    }
+                T parsedBoolean = customParseBoolean((String) value);
+                if (parsedBoolean != null) {
+                    return parsedBoolean;
                 }
             } else if (type.isPrimitive()) {
                 // okay its a wrapper -> primitive then return as-is for some 
common types
@@ -299,22 +304,9 @@ public class CoreTypeConverterRegistry extends 
ServiceSupport implements TypeCon
                 return (T) answer;
             } else if (type == Boolean.class && value instanceof String) {
                 // String -> Boolean
-                String str = (String) value;
-                // must be 4 or 5 in length
-                int len = str.length();
-                // fast check the value as-is in lower case which is most 
common
-                if (len == 4 && "true".equals(str)) {
-                    return (T) Boolean.TRUE;
-                } else if (len == 5 && "false".equals(str)) {
-                    return (T) Boolean.FALSE;
-                } else {
-                    // do check for ignore case
-                    str = str.toUpperCase();
-                    if (len == 4 && "TRUE".equals(str)) {
-                        return (T) Boolean.TRUE;
-                    } else if (len == 5 && "FALSE".equals(str)) {
-                        return (T) Boolean.FALSE;
-                    }
+                T parsedBoolean = customParseBoolean((String) value);
+                if (parsedBoolean != null) {
+                    return parsedBoolean;
                 }
             } else if (type.isPrimitive()) {
                 // okay its a wrapper -> primitive then return as-is for some 
common types

Reply via email to