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

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


The following commit(s) were added to refs/heads/camel-4.10.x by this push:
     new 7a48a6be621c CAMEL-22571: camel-core/camel-beanio - Add type converter 
for Charset (#19622)
7a48a6be621c is described below

commit 7a48a6be621ce6faa3510b724f71a29a5d303264
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Oct 20 12:04:26 2025 +0200

    CAMEL-22571: camel-core/camel-beanio - Add type converter for Charset 
(#19622)
---
 .../beanio/BeanIODataFormatComplexTest.java           | 19 +++++++++++++++++++
 .../camel/converter/CamelBaseBulkConverterLoader.java | 11 ++++++++++-
 .../java/org/apache/camel/converter/IOConverter.java  |  5 +++++
 .../org/apache/camel/converter/IOConverterTest.java   |  8 ++++++++
 4 files changed, 42 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-beanio/src/test/java/org/apache/camel/dataformat/beanio/BeanIODataFormatComplexTest.java
 
b/components/camel-beanio/src/test/java/org/apache/camel/dataformat/beanio/BeanIODataFormatComplexTest.java
index 20956eb17578..11e1585b6a46 100644
--- 
a/components/camel-beanio/src/test/java/org/apache/camel/dataformat/beanio/BeanIODataFormatComplexTest.java
+++ 
b/components/camel-beanio/src/test/java/org/apache/camel/dataformat/beanio/BeanIODataFormatComplexTest.java
@@ -175,6 +175,17 @@ public class BeanIODataFormatComplexTest extends 
CamelTestSupport {
         assertIsInstanceOf(UnidentifiedRecordException.class, ex);
     }
 
+    @Test
+    void testUnmarshalEncoding() throws Exception {
+        context.setTracing(true);
+        MockEndpoint mock = getMockEndpoint("mock:beanio-unmarshal");
+        mock.expectedBodiesReceived(createTestData(false));
+
+        template.sendBody("direct:unmarshalEncoding", data);
+
+        mock.assertIsSatisfied();
+    }
+
     private List<Object> createTestData(boolean skipB1header) throws 
ParseException {
         String source = "camel-beanio";
         List<Object> body = new ArrayList<>();
@@ -233,6 +244,14 @@ public class BeanIODataFormatComplexTest extends 
CamelTestSupport {
                         .to("mock:beanio-unmarshal");
 
                 
from("direct:marshal").marshal(format).to("mock:beanio-marshal");
+
+                var df = dataFormat().beanio()
+                        
.mapping("org/apache/camel/dataformat/beanio/mappings.xml")
+                        .streamName("securityData")
+                        .encoding("UTF-8")
+                        .end();
+                from("direct:unmarshalEncoding")
+                        
.unmarshal(df).split(simple("${body}")).to("mock:beanio-unmarshal");
             }
         };
     }
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 23466f74d324..ce40fcf155ed 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
@@ -41,7 +41,7 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
 
     @Override
     public int size() {
-        return 130;
+        return 131;
     }
 
     @Override
@@ -430,6 +430,10 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
             if (value instanceof java.io.InputStream) {
                 return 
org.apache.camel.converter.IOConverter.covertToByteBuffer((java.io.InputStream) 
value);
             }
+        } else if (to == java.nio.charset.Charset.class) {
+            if (value instanceof java.lang.String) {
+                return 
org.apache.camel.converter.IOConverter.toCharset((java.lang.String) value);
+            }
         } else if (to == java.nio.file.Path.class) {
             if (value instanceof java.io.File) {
                 return 
org.apache.camel.converter.IOConverter.toPath((java.io.File) value);
@@ -635,6 +639,7 @@ public final class CamelBaseBulkConverterLoader implements 
TypeConverterLoader,
         registry.addConverter(new TypeConvertible<>(java.lang.Float.class, 
java.nio.ByteBuffer.class), this);
         registry.addConverter(new TypeConvertible<>(java.lang.Double.class, 
java.nio.ByteBuffer.class), this);
         registry.addConverter(new TypeConvertible<>(java.io.InputStream.class, 
java.nio.ByteBuffer.class), this);
+        registry.addConverter(new TypeConvertible<>(java.lang.String.class, 
java.nio.charset.Charset.class), this);
         registry.addConverter(new TypeConvertible<>(java.io.File.class, 
java.nio.file.Path.class), this);
         registry.addConverter(new TypeConvertible<>(java.lang.Long.class, 
java.sql.Timestamp.class), this);
         registry.addConverter(new TypeConvertible<>(java.lang.Long.class, 
java.time.Duration.class), this);
@@ -1003,6 +1008,10 @@ public final class CamelBaseBulkConverterLoader 
implements TypeConverterLoader,
             if (from == java.io.InputStream.class) {
                 return this;
             }
+        } else if (to == java.nio.charset.Charset.class) {
+            if (from == java.lang.String.class) {
+                return this;
+            }
         } else if (to == java.nio.file.Path.class) {
             if (from == java.io.File.class) {
                 return this;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/converter/IOConverter.java 
b/core/camel-base/src/main/java/org/apache/camel/converter/IOConverter.java
index a1e9b66edcba..2ed01407f492 100644
--- a/core/camel-base/src/main/java/org/apache/camel/converter/IOConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/converter/IOConverter.java
@@ -356,4 +356,9 @@ public final class IOConverter {
         return path.toFile();
     }
 
+    @Converter(order = 45)
+    public static Charset toCharset(String name) {
+        return Charset.forName(name);
+    }
+
 }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/converter/IOConverterTest.java 
b/core/camel-core/src/test/java/org/apache/camel/converter/IOConverterTest.java
index 5081f151cf3d..41ac8a9ce52e 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/converter/IOConverterTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/converter/IOConverterTest.java
@@ -29,6 +29,7 @@ import java.io.Reader;
 import java.io.StringReader;
 import java.io.Writer;
 import java.net.URL;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -279,4 +280,11 @@ public class IOConverterTest extends ContextTestSupport {
         assertEquals("log4j2.properties", p.getFileName().toString());
     }
 
+    @Test
+    public void testToCharset() {
+        Charset c = IOConverter.toCharset("UTF-8");
+        assertNotNull(c);
+        assertEquals("UTF-8", c.name());
+    }
+
 }

Reply via email to