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

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

commit 2fb928efda779e5ff5fc6186fe8cee8a254cc0ec
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Oct 16 15:32:37 2025 +0200

    CAMEL-22564: camel-core - Using try converter should not record a miss
---
 .../impl/converter/CoreTypeConverterRegistry.java  |  4 +++-
 .../TypeConverterRegistryMissesThenAddTest.java    | 23 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

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 47494e5efc36..082e83ed2762 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
@@ -410,7 +410,9 @@ public abstract class CoreTypeConverterRegistry extends 
ServiceSupport implement
             return objConverter.convertTo(type, exchange, value);
         }
 
-        converters.put(typeConvertible, MISS_CONVERTER);
+        if (!tryConvert) {
+            converters.put(typeConvertible, MISS_CONVERTER);
+        }
 
         // Could not find suitable conversion, so return Void to indicate not 
found
         return TypeConverter.MISS_VALUE;
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
index ddede7a5d833..4134176924a4 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
@@ -28,8 +28,11 @@ public class TypeConverterRegistryMissesThenAddTest {
     public void testMissThenAddTypeConverter() {
         DefaultCamelContext context = new DefaultCamelContext();
 
+        int before = context.getTypeConverterRegistry().size();
         MyOrder order = context.getTypeConverter().convertTo(MyOrder.class, 
"123");
         assertNull(order);
+        int after = context.getTypeConverterRegistry().size();
+        assertTrue(after > before); // should add miss converter marker
 
         // add missing type converter
         context.getTypeConverterRegistry().addTypeConverter(MyOrder.class, 
String.class, new MyOrderTypeConverter());
@@ -40,6 +43,26 @@ public class TypeConverterRegistryMissesThenAddTest {
         assertEquals(123, order.getId());
     }
 
+    @Test
+    public void testTryMiss() {
+        DefaultCamelContext context = new DefaultCamelContext();
+
+        int before = context.getTypeConverterRegistry().size();
+        MyOrder order = context.getTypeConverter().tryConvertTo(MyOrder.class, 
"456");
+        assertNull(order);
+        int after = context.getTypeConverterRegistry().size();
+        // we only try to convert so no miss marker
+        assertEquals(before, after);
+
+        // add missing type converter
+        context.getTypeConverterRegistry().addTypeConverter(MyOrder.class, 
String.class, new MyOrderTypeConverter());
+
+        // this time it should work
+        order = context.getTypeConverter().convertTo(MyOrder.class, "456");
+        assertNotNull(order);
+        assertEquals(456, order.getId());
+    }
+
     private static class MyOrder {
         private int id;
 

Reply via email to