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 f9346ac691e CAMEL-18104: camel-core - Add more type converters from 
byte[] to general object types, which helps Camel Kafka Connector and Kafka 
users.
f9346ac691e is described below

commit f9346ac691e1b58b4bb858deb0a2eb48986141f7
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu May 12 22:15:07 2022 +0200

    CAMEL-18104: camel-core - Add more type converters from byte[] to general 
object types, which helps Camel Kafka Connector and Kafka users.
---
 .../converter/CamelBaseBulkConverterLoader.java    |  92 +++++++++++++---
 .../apache/camel/converter/ObjectConverter.java    | 116 +++++++++++++++++----
 .../camel/converter/ObjectConverterTest.java       |  23 ++--
 .../java/org/apache/camel/util/ObjectHelper.java   |   6 ++
 4 files changed, 196 insertions(+), 41 deletions(-)

diff --git 
a/core/camel-base/src/generated/java/org/apache/camel/converter/CamelBaseBulkConverterLoader.java
 
b/core/camel-base/src/generated/java/org/apache/camel/converter/CamelBaseBulkConverterLoader.java
index 707a0deafa6..ed451969320 100644
--- 
a/core/camel-base/src/generated/java/org/apache/camel/converter/CamelBaseBulkConverterLoader.java
+++ 
b/core/camel-base/src/generated/java/org/apache/camel/converter/CamelBaseBulkConverterLoader.java
@@ -42,7 +42,7 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
 
     @Override
     public int size() {
-        return 109;
+        return 120;
     }
 
     @Override
@@ -96,6 +96,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toCharArray((java.lang.String) 
value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toCharArray((byte[]) value, 
exchange);
+            }
         } else if (to == java.lang.Object[].class) {
             if (value instanceof java.util.Collection) {
                 return 
org.apache.camel.converter.CollectionConverter.toArray((java.util.Collection) 
value);
@@ -108,6 +111,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toChar((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toChar((byte[]) value);
+            }
         } else if (to == java.io.BufferedReader.class) {
             if (value instanceof java.io.File) {
                 return 
org.apache.camel.converter.IOConverter.toReader((java.io.File) value, exchange);
@@ -190,6 +196,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toBoolean((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toBoolean((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Byte.class) {
             if (value instanceof java.lang.Number) {
                 Object obj = 
org.apache.camel.converter.ObjectConverter.toByte((java.lang.Number) value);
@@ -202,10 +211,16 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toByte((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toByte((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Character.class || to == char.class) {
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toCharacter((java.lang.String) 
value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toCharacter((byte[]) value);
+            }
         } else if (to == java.lang.Class.class) {
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toClass((java.lang.String) value, 
camelContext);
@@ -217,6 +232,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toDouble((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toDouble((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Float.class || to == float.class) {
             if (value instanceof java.lang.Number) {
                 return 
org.apache.camel.converter.ObjectConverter.toFloat((java.lang.Number) value);
@@ -224,6 +242,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toFloat((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toFloat((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Integer.class || to == int.class) {
             if (value instanceof java.lang.Number) {
                 Object obj = 
org.apache.camel.converter.ObjectConverter.toInteger((java.lang.Number) value);
@@ -236,6 +257,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toInteger((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toInteger((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Iterable.class) {
             if (value instanceof java.lang.Object) {
                 return 
org.apache.camel.converter.ObjectConverter.iterable(value);
@@ -261,10 +285,16 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toLong((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toLong((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Number.class) {
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toNumber((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toNumber((byte[]) value, exchange);
+            }
         } else if (to == java.lang.Short.class) {
             if (value instanceof java.lang.Number) {
                 Object obj = 
org.apache.camel.converter.ObjectConverter.toShort((java.lang.Number) value);
@@ -277,6 +307,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.String) {
                 return 
org.apache.camel.converter.ObjectConverter.toShort((java.lang.String) value);
             }
+            if (value instanceof byte[]) {
+                return 
org.apache.camel.converter.ObjectConverter.toShort((byte[]) value, exchange);
+            }
         } else if (to == java.lang.String.class) {
             if (value instanceof java.net.URI) {
                 return 
org.apache.camel.converter.UriTypeConverter.toString((java.net.URI) value);
@@ -308,15 +341,18 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (value instanceof java.io.Reader) {
                 return 
org.apache.camel.converter.IOConverter.toString((java.io.Reader) value);
             }
+            if (value instanceof java.io.InputStream) {
+                return 
org.apache.camel.converter.IOConverter.toString((java.io.InputStream) value, 
exchange);
+            }
+            if (value instanceof java.io.ByteArrayOutputStream) {
+                return 
org.apache.camel.converter.IOConverter.toString((java.io.ByteArrayOutputStream) 
value, exchange);
+            }
             if (value instanceof java.lang.Integer) {
                 return 
org.apache.camel.converter.ObjectConverter.toString((java.lang.Integer) value);
             }
             if (value instanceof java.lang.Long) {
                 return 
org.apache.camel.converter.ObjectConverter.toString((java.lang.Long) value);
             }
-            if (value instanceof java.io.InputStream) {
-                return 
org.apache.camel.converter.IOConverter.toString((java.io.InputStream) value, 
exchange);
-            }
             if (value instanceof java.lang.Boolean) {
                 return 
org.apache.camel.converter.ObjectConverter.toString((java.lang.Boolean) value);
             }
@@ -326,9 +362,6 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.lang.StringBuilder) {
                 return 
org.apache.camel.converter.ObjectConverter.toString((java.lang.StringBuilder) 
value);
             }
-            if (value instanceof java.io.ByteArrayOutputStream) {
-                return 
org.apache.camel.converter.IOConverter.toString((java.io.ByteArrayOutputStream) 
value, exchange);
-            }
         } else if (to == java.math.BigInteger.class) {
             if (value instanceof java.lang.Object) {
                 Object obj = 
org.apache.camel.converter.ObjectConverter.toBigInteger(value);
@@ -496,6 +529,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Object[].class) {
             if (from == java.util.Collection.class) {
                 return this;
@@ -508,6 +544,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.io.BufferedReader.class) {
             if (from == java.io.File.class) {
                 return this;
@@ -590,6 +629,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Byte.class) {
             if (from == java.lang.Number.class) {
                 return this;
@@ -597,10 +639,16 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Character.class || to == char.class) {
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Class.class) {
             if (from == java.lang.String.class) {
                 return this;
@@ -612,6 +660,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Float.class || to == float.class) {
             if (from == java.lang.Number.class) {
                 return this;
@@ -619,6 +670,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Integer.class || to == int.class) {
             if (from == java.lang.Number.class) {
                 return this;
@@ -626,6 +680,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Iterable.class) {
             if (from == java.lang.Object.class) {
                 return this;
@@ -646,10 +703,16 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Number.class) {
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.Short.class) {
             if (from == java.lang.Number.class) {
                 return this;
@@ -657,6 +720,9 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.String.class) {
                 return this;
             }
+            if (from == byte[].class) {
+                return this;
+            }
         } else if (to == java.lang.String.class) {
             if (from == java.net.URI.class) {
                 return this;
@@ -688,13 +754,16 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (from == java.io.Reader.class) {
                 return this;
             }
-            if (from == java.lang.Integer.class) {
+            if (from == java.io.InputStream.class) {
                 return this;
             }
-            if (from == java.lang.Long.class) {
+            if (from == java.io.ByteArrayOutputStream.class) {
                 return this;
             }
-            if (from == java.io.InputStream.class) {
+            if (from == java.lang.Integer.class) {
+                return this;
+            }
+            if (from == java.lang.Long.class) {
                 return this;
             }
             if (from == java.lang.Boolean.class) {
@@ -706,9 +775,6 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (from == java.lang.StringBuilder.class) {
                 return this;
             }
-            if (from == java.io.ByteArrayOutputStream.class) {
-                return this;
-            }
         } else if (to == java.math.BigInteger.class) {
             if (from == java.lang.Object.class) {
                 return this;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java 
b/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
index 8b6873b40fc..2d75065897b 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
@@ -16,11 +16,14 @@
  */
 package org.apache.camel.converter;
 
+import java.io.IOException;
 import java.math.BigInteger;
 import java.util.Iterator;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ObjectHelper;
 
 /**
@@ -90,16 +93,33 @@ public final class ObjectConverter {
     }
 
     @Converter(order = 7)
+    public static Byte toByte(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return Byte.valueOf(str);
+    }
+
+    @Converter(order = 8)
     public static char[] toCharArray(String value) {
         return value.toCharArray();
     }
 
-    @Converter(order = 8)
+    @Converter(order = 9)
+    public static char[] toCharArray(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return str.toCharArray();
+    }
+
+    @Converter(order = 10)
     public static Character toCharacter(String value) {
         return toChar(value);
     }
 
-    @Converter(order = 9)
+    @Converter(order = 11)
+    public static Character toCharacter(byte[] value) {
+        return toChar(value);
+    }
+
+    @Converter(order = 12)
     public static char toChar(String value) {
         // must be string with the length of 1
         if (value.length() != 1) {
@@ -108,7 +128,17 @@ public final class ObjectConverter {
         return value.charAt(0);
     }
 
-    @Converter(order = 10)
+    @Converter(order = 13)
+    public static char toChar(byte[] value) {
+        // must be string with the length of 1
+        if (value.length != 1) {
+            throw new IllegalArgumentException("byte[] must have exactly a 
length of 1: " + value.length);
+        }
+        byte b = value[0];
+        return (char) b;
+    }
+
+    @Converter(order = 14)
     public static String fromCharArray(char[] value) {
         return new String(value);
     }
@@ -116,7 +146,7 @@ public final class ObjectConverter {
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 11)
+    @Converter(order = 15)
     public static Class<?> toClass(String value, CamelContext camelContext) {
         // prefer to use class resolver API
         if (camelContext != null) {
@@ -129,7 +159,7 @@ public final class ObjectConverter {
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 12, allowNull = true)
+    @Converter(order = 16, allowNull = true)
     public static Short toShort(Number value) {
         if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
             return null;
@@ -137,15 +167,21 @@ public final class ObjectConverter {
         return value.shortValue();
     }
 
-    @Converter(order = 13)
+    @Converter(order = 17)
     public static Short toShort(String value) {
         return Short.valueOf(value);
     }
 
+    @Converter(order = 18)
+    public static Short toShort(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return Short.valueOf(str);
+    }
+
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 14, allowNull = true)
+    @Converter(order = 19, allowNull = true)
     public static Integer toInteger(Number value) {
         if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
             return null;
@@ -153,15 +189,21 @@ public final class ObjectConverter {
         return value.intValue();
     }
 
-    @Converter(order = 15)
+    @Converter(order = 20)
     public static Integer toInteger(String value) {
         return Integer.valueOf(value);
     }
 
+    @Converter(order = 21)
+    public static Integer toInteger(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return Integer.valueOf(str);
+    }
+
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 16, allowNull = true)
+    @Converter(order = 22, allowNull = true)
     public static Long toLong(Number value) {
         if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
             return null;
@@ -169,15 +211,21 @@ public final class ObjectConverter {
         return value.longValue();
     }
 
-    @Converter(order = 17)
+    @Converter(order = 23)
     public static Long toLong(String value) {
         return Long.valueOf(value);
     }
 
+    @Converter(order = 24)
+    public static Long toLong(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return Long.valueOf(str);
+    }
+
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 18, allowNull = true)
+    @Converter(order = 25, allowNull = true)
     public static BigInteger toBigInteger(Object value) {
         if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
             return null;
@@ -201,7 +249,7 @@ public final class ObjectConverter {
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 19)
+    @Converter(order = 26)
     public static Float toFloat(Number value) {
         if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
             return Float.NaN;
@@ -209,15 +257,21 @@ public final class ObjectConverter {
         return value.floatValue();
     }
 
-    @Converter(order = 20)
+    @Converter(order = 27)
     public static Float toFloat(String value) {
         return Float.valueOf(value);
     }
 
+    @Converter(order = 28)
+    public static Float toFloat(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return Float.valueOf(str);
+    }
+
     /**
      * Returns the converted value, or null if the value is null
      */
-    @Converter(order = 21)
+    @Converter(order = 29)
     public static Double toDouble(Number value) {
         if (org.apache.camel.util.ObjectHelper.isNaN(value)) {
             return Double.NaN;
@@ -225,44 +279,56 @@ public final class ObjectConverter {
         return value.doubleValue();
     }
 
-    @Converter(order = 22)
+    @Converter(order = 30)
     public static Double toDouble(String value) {
         return Double.valueOf(value);
     }
 
+    @Converter(order = 31)
+    public static Double toDouble(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return Double.valueOf(str);
+    }
+
     // add fast type converters from most common used
 
-    @Converter(order = 23)
+    @Converter(order = 32)
     public static String toString(Integer value) {
         return value.toString();
     }
 
-    @Converter(order = 24)
+    @Converter(order = 33)
     public static String toString(Long value) {
         return value.toString();
     }
 
-    @Converter(order = 25)
+    @Converter(order = 34)
     public static String toString(Boolean value) {
         return value.toString();
     }
 
-    @Converter(order = 26)
+    @Converter(order = 35)
     public static String toString(StringBuffer value) {
         return value.toString();
     }
 
-    @Converter(order = 27)
+    @Converter(order = 36)
     public static String toString(StringBuilder value) {
         return value.toString();
     }
 
-    @Converter(order = 28)
+    @Converter(order = 37)
     public static Boolean toBoolean(String value) {
         return org.apache.camel.util.ObjectHelper.toBoolean(value);
     }
 
-    @Converter(order = 29)
+    @Converter(order = 38)
+    public static Boolean toBoolean(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return toBoolean(str);
+    }
+
+    @Converter(order = 39)
     public static Number toNumber(String text) {
         // what kind of numeric is it
         boolean dot = text.indexOf('.') != -1;
@@ -279,4 +345,10 @@ public final class ObjectConverter {
         }
     }
 
+    @Converter(order = 40)
+    public static Number toNumber(byte[] value, Exchange exchange) throws 
IOException {
+        String str = new String(value, 
ExchangeHelper.getCharsetName(exchange));
+        return toNumber(str);
+    }
+
 }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
index fb966026257..02e49152638 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.converter;
 
 import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.stream.Stream;
@@ -59,10 +60,11 @@ public class ObjectConverterTest {
     }
 
     @Test
-    public void testToByte() {
+    public void testToByte() throws Exception {
         assertEquals(Byte.valueOf("4"), 
ObjectConverter.toByte(Byte.valueOf("4")));
         assertEquals(Byte.valueOf("4"), 
ObjectConverter.toByte(Integer.valueOf("4")));
         assertEquals(Byte.valueOf("4"), ObjectConverter.toByte("4"));
+        assertEquals(Byte.valueOf("4"), 
ObjectConverter.toByte("4".getBytes(StandardCharsets.UTF_8), null));
     }
 
     @Test
@@ -72,50 +74,55 @@ public class ObjectConverterTest {
     }
 
     @Test
-    public void testToShort() {
+    public void testToShort() throws Exception {
         assertEquals(Short.valueOf("4"), 
ObjectConverter.toShort(Short.valueOf("4")));
         assertEquals(Short.valueOf("4"), 
ObjectConverter.toShort(Integer.valueOf("4")));
         assertEquals(Short.valueOf("4"), ObjectConverter.toShort("4"));
+        assertEquals(Short.valueOf("4"), 
ObjectConverter.toShort("4".getBytes(StandardCharsets.UTF_8), null));
         assertEquals(null, ObjectConverter.toShort(Double.NaN));
         assertEquals(null, ObjectConverter.toShort(Float.NaN));
         assertEquals(Short.valueOf("4"), 
ObjectConverter.toShort(Short.valueOf("4")));
     }
 
     @Test
-    public void testToInteger() {
+    public void testToInteger() throws Exception {
         assertEquals(Integer.valueOf("4"), 
ObjectConverter.toInteger(Integer.valueOf("4")));
         assertEquals(Integer.valueOf("4"), 
ObjectConverter.toInteger(Long.valueOf("4")));
         assertEquals(Integer.valueOf("4"), ObjectConverter.toInteger("4"));
+        assertEquals(Integer.valueOf("4"), 
ObjectConverter.toInteger("4".getBytes(StandardCharsets.UTF_8), null));
         assertEquals(null, ObjectConverter.toInteger(Double.NaN));
         assertEquals(null, ObjectConverter.toInteger(Float.NaN));
         assertEquals(Integer.valueOf("4"), 
ObjectConverter.toInteger(Integer.valueOf("4")));
     }
 
     @Test
-    public void testToLong() {
+    public void testToLong() throws Exception {
         assertEquals(Long.valueOf("4"), 
ObjectConverter.toLong(Long.valueOf("4")));
         assertEquals(Long.valueOf("4"), 
ObjectConverter.toLong(Integer.valueOf("4")));
         assertEquals(Long.valueOf("4"), ObjectConverter.toLong("4"));
+        assertEquals(Long.valueOf("4"), 
ObjectConverter.toLong("4".getBytes(StandardCharsets.UTF_8), null));
         assertEquals(null, ObjectConverter.toLong(Double.NaN));
         assertEquals(null, ObjectConverter.toLong(Float.NaN));
         assertEquals(Long.valueOf("4"), 
ObjectConverter.toLong(Long.valueOf("4")));
     }
 
     @Test
-    public void testToFloat() {
+    public void testToFloat() throws Exception {
         assertEquals(Float.valueOf("4"), 
ObjectConverter.toFloat(Float.valueOf("4")));
         assertEquals(Float.valueOf("4"), 
ObjectConverter.toFloat(Integer.valueOf("4")));
         assertEquals(Float.valueOf("4"), ObjectConverter.toFloat("4"));
+        assertEquals(Float.valueOf("4"), 
ObjectConverter.toFloat("4".getBytes(StandardCharsets.UTF_8), null));
         assertEquals((Float) Float.NaN, ObjectConverter.toFloat(Double.NaN));
         assertEquals((Float) Float.NaN, ObjectConverter.toFloat(Float.NaN));
         assertEquals(Float.valueOf("4"), 
ObjectConverter.toFloat(Float.valueOf("4")));
     }
 
     @Test
-    public void testToDouble() {
+    public void testToDouble() throws Exception {
         assertEquals(Double.valueOf("4"), 
ObjectConverter.toDouble(Double.valueOf("4")));
         assertEquals(Double.valueOf("4"), 
ObjectConverter.toDouble(Integer.valueOf("4")));
         assertEquals(Double.valueOf("4"), ObjectConverter.toDouble("4"));
+        assertEquals(Double.valueOf("4"), 
ObjectConverter.toDouble("4".getBytes(StandardCharsets.UTF_8), null));
         assertEquals((Double) Double.NaN, 
ObjectConverter.toDouble(Double.NaN));
         assertEquals((Double) Double.NaN, ObjectConverter.toDouble(Float.NaN));
         assertEquals(Double.valueOf("4"), 
ObjectConverter.toDouble(Double.valueOf("4")));
@@ -145,7 +152,9 @@ public class ObjectConverterTest {
     @Test
     public void testToChar() {
         assertEquals('A', ObjectConverter.toChar("A"));
+        assertEquals('A', 
ObjectConverter.toChar("A".getBytes(StandardCharsets.UTF_8)));
         assertEquals(Character.valueOf('A'), ObjectConverter.toCharacter("A"));
+        assertEquals(Character.valueOf('A'), 
ObjectConverter.toCharacter("A".getBytes(StandardCharsets.UTF_8)));
     }
 
     @Test
@@ -159,6 +168,7 @@ public class ObjectConverterTest {
     @Test
     public void testToBoolean() throws Exception {
         assertTrue(ObjectConverter.toBoolean("true"));
+        
assertTrue(ObjectConverter.toBoolean("true".getBytes(StandardCharsets.UTF_8)));
         assertTrue(ObjectConverter.toBoolean("TRUE"));
         assertFalse(ObjectConverter.toBoolean("false"));
         assertFalse(ObjectConverter.toBoolean("FALSE"));
@@ -167,6 +177,7 @@ public class ObjectConverterTest {
         assertNull(ObjectConverter.toBoolean("yes"));
 
         assertTrue(ObjectConverter.toBool("true"));
+        
assertTrue(ObjectConverter.toBool("true".getBytes(StandardCharsets.UTF_8)));
         assertTrue(ObjectConverter.toBool("TRUE"));
         assertFalse(ObjectConverter.toBool("false"));
         assertFalse(ObjectConverter.toBool("FALSE"));
diff --git 
a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java 
b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
index 5c94b9271d1..173b44ab0ed 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
@@ -123,6 +123,12 @@ public final class ObjectHelper {
         if (value instanceof Boolean) {
             return (Boolean) value;
         }
+        if (value instanceof byte[]) {
+            String str = new String((byte[]) value);
+            if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) 
{
+                return Boolean.valueOf(str);
+            }
+        }
         if (value instanceof String) {
             // we only want to accept true or false as accepted values
             String str = (String) value;

Reply via email to