Repository: camel Updated Branches: refs/heads/master c0f89d60f -> 76659a972
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/950082fb Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/950082fb Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/950082fb Branch: refs/heads/master Commit: 950082fbf5815cf4b5f567d72ccbb5e9f825dfa4 Parents: c0f89d6 Author: Matthew Luckam <[email protected]> Authored: Fri Feb 19 14:43:19 2016 -0500 Committer: Andrea Cosentino <[email protected]> Committed: Thu Mar 23 10:01:35 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/950082fb/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/950082fb/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 bd92792..662a221 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 @@ -181,13 +181,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/950082fb/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/950082fb/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); }
