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 d2588d06ffe CAMEL-19898: camel-core - Optimize StreamCaching strategy 
to skip conversion for well known types and do fast lookup of dedicated 
StreamCache converters, to bypass regular type converter.
d2588d06ffe is described below

commit d2588d06ffeff9364b31661cf13c318e355b53f7
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed May 28 09:05:24 2025 +0200

    CAMEL-19898: camel-core - Optimize StreamCaching strategy to skip 
conversion for well known types and do fast lookup of dedicated StreamCache 
converters, to bypass regular type converter.
---
 .../apache/camel/impl/engine/DefaultStreamCachingStrategy.java | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
index c335a76eb5e..9a436d00f21 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
@@ -34,6 +34,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.StreamCache;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.WrappedFile;
 import org.apache.camel.spi.StreamCachingStrategy;
 import org.apache.camel.support.TempDirHelper;
 import org.apache.camel.support.service.ServiceSupport;
@@ -289,13 +290,16 @@ public class DefaultStreamCachingStrategy extends 
ServiceSupport implements Came
             if (type.isPrimitive() || type.isEnum()) {
                 return null;
             }
+            if (body instanceof WrappedFile<?> wf) {
+                body = wf.getBody();
+            }
 
             boolean allowed = allowClasses == null && denyClasses == null;
             if (!allowed) {
                 allowed = checkAllowDenyList(type);
             }
             if (allowed) {
-                TypeConverter tc = lookupTypeConverter(type);
+                TypeConverter tc = lookupTypeConverter(body);
                 if (tc != null) {
                     if (exchange != null) {
                         cache = tc.convertTo(StreamCache.class, exchange, 
body);
@@ -316,9 +320,9 @@ public class DefaultStreamCachingStrategy extends 
ServiceSupport implements Came
         return cache;
     }
 
-    private TypeConverter lookupTypeConverter(Class<?> type) {
+    private TypeConverter lookupTypeConverter(Object body) {
         for (var tc : coreConverters) {
-            if (tc.from().isAssignableFrom(type)) {
+            if (tc.from().isInstance(body)) {
                 return tc.converter();
             }
         }

Reply via email to