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 cdf4e97fa92e CAMEL-22564: camel-core - Using try converter should not
record a miss (#19593)
cdf4e97fa92e is described below
commit cdf4e97fa92e4d21e99551a636fe6d495f12409d
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Oct 17 07:43:20 2025 +0200
CAMEL-22564: camel-core - Using try converter should not record a miss
(#19593)
* CAMEL-22564: camel-core - Using try converter should not record a miss
---
.../impl/converter/CoreTypeConverterRegistry.java | 4 +++-
.../TypeConverterRegistryMissesThenAddTest.java | 23 ++++++++++++++++++++++
.../ROOT/pages/camel-4x-upgrade-guide-4_16.adoc | 5 +++++
3 files changed, 31 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;
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_16.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_16.adoc
index 624cb5f2e95f..20047a339852 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_16.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_16.adoc
@@ -13,6 +13,11 @@ See the xref:camel-upgrade-recipes-tool.adoc[documentation]
page for details.
== Upgrading Camel 4.15 to 4.16
+=== camel-core
+
+The `tryConvertTo` method in Camel type converters will no longer in case of
no converter suitable,
+mark this as a _miss_ for any same future converter attempts to immediately be
identified as a _miss_.
+
=== camel-kamelet
The kamelet component is now parsing endpoint parameters using _raw mode_ to
ensure when using sensitive parameters