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 <claus.ib...@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"); } }