You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/03/23 09:20:31 UTC

[2/2] camel git commit: CAMEL-11048 Jetty Producer always uses "Transfer-Encoding: chunked" header

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/99e506e3
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/99e506e3
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/99e506e3

Branch: refs/heads/camel-2.17.x
Commit: 99e506e312aac6a235ea9fc7f7120f9832ec9a6e
Parents: 87e33ad
Author: Matthew Luckam <Ma...@solers.com>
Authored: Fri Feb 19 14:43:19 2016 -0500
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Thu Mar 23 10:16:58 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/99e506e3/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/99e506e3/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 2a01b39..ee6b83b 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
@@ -164,13 +164,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/99e506e3/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/99e506e3/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 f9966cc..d1eaab0 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
@@ -195,6 +195,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);
     }