You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/02/28 13:01:22 UTC

[camel] 02/05: camel-http - optimize a bit

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

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

commit a2c9cc0f5fbd3fe97ed77827158951954fca1b89
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Feb 28 10:52:17 2021 +0100

    camel-http - optimize a bit
---
 .../camel/component/http/HttpEntityConverter.java  | 22 ++++++++++++++++------
 .../java/org/apache/camel/support/GZIPHelper.java  |  4 ++--
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEntityConverter.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEntityConverter.java
index 8302d0d..923d8a6 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEntityConverter.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEntityConverter.java
@@ -85,18 +85,28 @@ public final class HttpEntityConverter {
 
     private static HttpEntity asHttpEntity(byte[] data, Exchange exchange) throws Exception {
         AbstractHttpEntity entity;
+
+        String contentEncoding = null;
+        if (exchange != null) {
+            contentEncoding = exchange.getIn().getHeader(Exchange.CONTENT_ENCODING, String.class);
+        }
+
         if (exchange != null && !exchange.getProperty(Exchange.SKIP_GZIP_ENCODING, Boolean.FALSE, Boolean.class)) {
-            String contentEncoding = exchange.getIn().getHeader(Exchange.CONTENT_ENCODING, String.class);
-            InputStream stream = GZIPHelper.compressGzip(contentEncoding, data);
-            entity = new InputStreamEntity(
-                    stream, stream instanceof ByteArrayInputStream
-                            ? stream.available() != 0 ? stream.available() : -1 : -1);
+            boolean gzip = GZIPHelper.isGzip(contentEncoding);
+            if (gzip) {
+                InputStream stream = GZIPHelper.compressGzip(contentEncoding, data);
+                entity = new InputStreamEntity(
+                        stream, stream instanceof ByteArrayInputStream
+                                ? stream.available() != 0 ? stream.available() : -1 : -1);
+            } else {
+                // use a byte array entity as-is
+                entity = new ByteArrayEntity(data);
+            }
         } else {
             // create the Repeatable HttpEntity
             entity = new ByteArrayEntity(data);
         }
         if (exchange != null) {
-            String contentEncoding = exchange.getIn().getHeader(Exchange.CONTENT_ENCODING, String.class);
             if (contentEncoding != null) {
                 entity.setContentEncoding(contentEncoding);
             }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/GZIPHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/GZIPHelper.java
index f376b90..4c1af42 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/GZIPHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/GZIPHelper.java
@@ -20,13 +20,13 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Locale;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.StringHelper;
 
 /**
  * Helper class to help wrapping content into GZIP input and output streams.
@@ -106,6 +106,6 @@ public final class GZIPHelper {
     }
 
     public static boolean isGzip(String header) {
-        return header != null && header.toLowerCase(Locale.ENGLISH).contains("gzip");
+        return StringHelper.containsIgnoreCase(header, "gzip");
     }
 }