Repository: camel
Updated Branches:
  refs/heads/master 5c554b085 -> 9c094e4dc


CAMEL-11379: Optimise - core type converters to be invoked faster


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9c094e4d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9c094e4d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9c094e4d

Branch: refs/heads/master
Commit: 9c094e4dcbc4ebd8a5fd02d6a4879cd3a414eaed
Parents: 5c554b0
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sun Jun 25 19:26:17 2017 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun Jun 25 19:26:17 2017 +0200

----------------------------------------------------------------------
 .../apache/camel/converter/IOConverterOptimised.java    | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9c094e4d/camel-core/src/main/java/org/apache/camel/converter/IOConverterOptimised.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/converter/IOConverterOptimised.java 
b/camel-core/src/main/java/org/apache/camel/converter/IOConverterOptimised.java
index 6ae8779..cddfda4 100644
--- 
a/camel-core/src/main/java/org/apache/camel/converter/IOConverterOptimised.java
+++ 
b/camel-core/src/main/java/org/apache/camel/converter/IOConverterOptimised.java
@@ -30,6 +30,7 @@ import java.net.URL;
 import java.util.Properties;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.StreamCache;
 
 /**
  * Optimised {@link IOConverter}
@@ -43,6 +44,12 @@ public final class IOConverterOptimised {
     public static Object convertTo(final Class<?> type, final Exchange 
exchange, final Object value) throws Exception {
         Class fromType = value.getClass();
 
+        // if the value is StreamCache then ensure its readable before doing 
conversions
+        // by resetting it (this is also what StreamCachingAdvice does)
+        if (value instanceof StreamCache) {
+            ((StreamCache) value).reset();
+        }
+
         if (type == InputStream.class) {
             if (fromType == String.class) {
                 return IOConverter.toInputStream((String) value, exchange);
@@ -134,6 +141,11 @@ public final class IOConverterOptimised {
 
         if (type == ObjectInput.class) {
             if (fromType == InputStream.class || fromType == 
BufferedInputStream.class) {
+                // if the value is both an InputStream and StreamCache then 
ensure its readable
+                // before doing conversions by resetting it (this is also what 
StreamCachingAdvice does)
+                if (value instanceof StreamCache) {
+                    ((StreamCache) value).reset();
+                }
                 return IOConverter.toObjectInput((InputStream) value, 
exchange);
             }
             return null;

Reply via email to