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 b3f89ab05f2 CAMEL-20399: String to short type conversion fails (#13060) b3f89ab05f2 is described below commit b3f89ab05f2d93ce471349fa3f565d46f33b5c35 Author: Andrea Tarocchi <andrea.taroc...@gmail.com> AuthorDate: Fri Feb 9 06:30:36 2024 +0100 CAMEL-20399: String to short type conversion fails (#13060) --- .../apache/camel/converter/CamelBaseBulkConverterLoader.java | 4 ++-- .../org/apache/camel/impl/converter/TypeConvertersTest.java | 12 ++++++++++++ .../maven/packaging/TypeConverterLoaderGeneratorMojo.java | 2 ++ 3 files changed, 16 insertions(+), 2 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 ed59bef03e0..d28d0c8abf9 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 @@ -297,7 +297,7 @@ public final class CamelBaseBulkConverterLoader implements TypeConverterLoader, if (value instanceof byte[]) { return org.apache.camel.converter.ObjectConverter.toNumber((byte[]) value, exchange); } - } else if (to == java.lang.Short.class) { + } else if (to == java.lang.Short.class || to == short.class) { if (value instanceof java.lang.Number) { Object obj = org.apache.camel.converter.ObjectConverter.toShort((java.lang.Number) value); if (obj == null) { @@ -845,7 +845,7 @@ public final class CamelBaseBulkConverterLoader implements TypeConverterLoader, if (from == byte[].class) { return this; } - } else if (to == java.lang.Short.class) { + } else if (to == java.lang.Short.class || to == short.class) { if (from == java.lang.Number.class) { return this; } diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/converter/TypeConvertersTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/converter/TypeConvertersTest.java index 6910540cd2c..ae02af2d52f 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/converter/TypeConvertersTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/converter/TypeConvertersTest.java @@ -45,4 +45,16 @@ public class TypeConvertersTest extends ContextTestSupport { assertEquals("en", iso); } + @Test + public void testStringToPrimitiveTypes() throws Exception { + assertEquals(Short.parseShort("1"), context.getTypeConverter().mandatoryConvertTo(short.class, "1")); + assertEquals(Integer.parseInt("1"), context.getTypeConverter().mandatoryConvertTo(int.class, "1")); + assertEquals(Long.parseLong("1"), context.getTypeConverter().mandatoryConvertTo(long.class, "1")); + + assertEquals(Float.parseFloat("1.1"), context.getTypeConverter().mandatoryConvertTo(float.class, "1.1")); + assertEquals(Double.parseDouble("1.1"), context.getTypeConverter().mandatoryConvertTo(double.class, "1.1")); + + assertEquals("a".charAt(0), context.getTypeConverter().mandatoryConvertTo(char.class, "a")); + assertEquals(Boolean.parseBoolean("true"), context.getTypeConverter().mandatoryConvertTo(boolean.class, "true")); + } } diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java index aa0a306e49c..60b9dafb1b6 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java @@ -471,6 +471,8 @@ public class TypeConverterLoaderGeneratorMojo extends AbstractGeneratorMojo { return "int"; } else if ("java.lang.Long".equals(to)) { return "long"; + } else if ("java.lang.Short".equals(to)) { + return "short"; } else if ("java.lang.Character".equals(to)) { return "char"; } else if ("java.lang.Boolean".equals(to)) {