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(); } }