Repository: camel Updated Branches: refs/heads/camel-2.18.x 01658bf2a -> 59c8fb9b0
CAMEL-11048 Jetty Producer always uses "Transfer-Encoding: chunked" header Change-Id: Icc12a11b9b2886affb0f6b6d4a874de11c0338bd Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b90686f8 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b90686f8 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b90686f8 Branch: refs/heads/camel-2.18.x Commit: b90686f83d8c0b0b67bbce89e8e1677696063a1b Parents: 01658bf Author: Matthew Luckam <matthew.luc...@solers.com> Authored: Fri Feb 19 14:43:19 2016 -0500 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Thu Mar 23 10:13:43 2017 +0100 ---------------------------------------------------------------------- .../component/jetty/JettyContentExchange.java | 2 ++ .../component/jetty/JettyHttpProducer.java | 9 +++++++-- .../jetty9/CamelInputStreamContentProvider.java | 21 ++++++++++++++++++++ .../component/jetty9/JettyContentExchange9.java | 5 +++++ 4 files changed, 35 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b90686f8/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyContentExchange.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyContentExchange.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyContentExchange.java index af63606..809168c 100644 --- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyContentExchange.java +++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyContentExchange.java @@ -44,6 +44,8 @@ public interface JettyContentExchange { void setRequestContent(String data, String charset) throws UnsupportedEncodingException; void setRequestContent(InputStream ins); + + void setRequestContent(InputStream ins, int contentLength); void addRequestHeader(String key, String s); http://git-wip-us.apache.org/repos/asf/camel/blob/b90686f8/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpProducer.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpProducer.java index 7280b0c..ee59f60 100644 --- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpProducer.java +++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpProducer.java @@ -179,13 +179,18 @@ public class JettyHttpProducer extends DefaultAsyncProducer implements AsyncProc String charset = IOHelper.getCharsetName(exchange, false); httpExchange.setRequestContent(data, charset); } else { - // then fallback to input stream + // then fallback to input stream InputStream is = exchange.getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, exchange, exchange.getIn().getBody()); - httpExchange.setRequestContent(is); // setup the content length if it is possible String length = exchange.getIn().getHeader(Exchange.CONTENT_LENGTH, String.class); if (ObjectHelper.isNotEmpty(length)) { httpExchange.addRequestHeader(Exchange.CONTENT_LENGTH, length); + //send with content-length + httpExchange.setRequestContent(is, new Integer(length)); + + } else { + //send chunked + httpExchange.setRequestContent(is); } } } http://git-wip-us.apache.org/repos/asf/camel/blob/b90686f8/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelInputStreamContentProvider.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelInputStreamContentProvider.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelInputStreamContentProvider.java new file mode 100644 index 0000000..08d66c6 --- /dev/null +++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/CamelInputStreamContentProvider.java @@ -0,0 +1,21 @@ +package org.apache.camel.component.jetty9; + +import java.io.InputStream; + +import org.eclipse.jetty.client.util.InputStreamContentProvider; + +public class CamelInputStreamContentProvider extends InputStreamContentProvider { + + private int length; + + public CamelInputStreamContentProvider(InputStream stream, int length) { + super(stream); + this.length = length; + } + + @Override + public long getLength() + { + return length; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/b90686f8/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java ---------------------------------------------------------------------- diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java index 1f66312..e2f0cb7 100644 --- a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java +++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java @@ -204,6 +204,11 @@ public class JettyContentExchange9 implements JettyContentExchange { this.request.content(new InputStreamContentProvider(ins), this.requestContentType); } + public void setRequestContent(InputStream ins, int contentLength) { + this.request.content(new CamelInputStreamContentProvider(ins, contentLength), this.requestContentType); + + } + public void addRequestHeader(String key, String s) { this.request.header(key, s); }