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);
     }

Reply via email to