You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/07/17 12:53:14 UTC
[2/2] camel git commit: CAMEL-8643: Do not eager check for content
available using the input stream available in case http client is in
streaming mode and is slow at sending data.
CAMEL-8643: Do not eager check for content available using the input stream available in case http client is in streaming mode and is slow at sending data.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/65f9a3ab
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/65f9a3ab
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/65f9a3ab
Branch: refs/heads/master
Commit: 65f9a3ab349c4b1b0545da33b3ccbee523f93880
Parents: 7790c6e
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Jul 17 12:57:55 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jul 17 12:58:03 2015 +0200
----------------------------------------------------------------------
.../org/apache/camel/component/http/HttpBinding.java | 8 ++++----
.../apache/camel/component/http/HttpEndpoint.java | 4 ++--
.../camel/component/http4/DefaultHttpBinding.java | 11 ++++++++++-
.../apache/camel/component/http4/HttpBinding.java | 12 ++++++++++++
.../apache/camel/component/http4/HttpEndpoint.java | 15 +++++++++++++++
5 files changed, 43 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/65f9a3ab/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
index 5532ee7..10141ae 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
@@ -125,14 +125,14 @@ public interface HttpBinding {
boolean isTransferException();
/**
- * Whether to eager check whether the HTTP requests has content.
- * This can be used to turn off in case HTTP clients send streamed data and the available check must be delayed.
+ * Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present.
+ * This can be turned on in case HTTP clients do not send streamed data.
*/
boolean isEagerCheckContentAvailable();
/**
- * Whether to eager check whether the HTTP requests has content.
- * This can be used to turn off in case HTTP clients send streamed data and the available check must be delayed.
+ * Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present.
+ * This can be turned on in case HTTP clients do not send streamed data.
*/
void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable);
http://git-wip-us.apache.org/repos/asf/camel/blob/65f9a3ab/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
index 785e614..fcdd6a4 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
@@ -501,8 +501,8 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
}
/**
- * Whether to eager check whether the HTTP requests has content.
- * This can be used to turn off in case HTTP clients send streamed data and the available check must be delayed.
+ * Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present.
+ * This can be turned on in case HTTP clients do not send streamed data.
*/
public void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable) {
this.eagerCheckContentAvailable = eagerCheckContentAvailable;
http://git-wip-us.apache.org/repos/asf/camel/blob/65f9a3ab/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java
index 233c09f..4420c69 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java
@@ -61,6 +61,7 @@ public class DefaultHttpBinding implements HttpBinding {
private static final Logger LOG = LoggerFactory.getLogger(DefaultHttpBinding.class);
private boolean useReaderForPayload;
private boolean transferException;
+ private boolean eagerCheckContentAvailable;
private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
public DefaultHttpBinding() {
@@ -413,7 +414,7 @@ public class DefaultHttpBinding implements HttpBinding {
return request.getReader();
} else {
// if we do not know if there is any data at all, then make sure to check the stream first
- if (len < 0) {
+ if (len < 0 && isEagerCheckContentAvailable()) {
InputStream is = request.getInputStream();
if (is.available() == 0) {
// no data so return null
@@ -433,6 +434,14 @@ public class DefaultHttpBinding implements HttpBinding {
this.useReaderForPayload = useReaderForPayload;
}
+ public boolean isEagerCheckContentAvailable() {
+ return eagerCheckContentAvailable;
+ }
+
+ public void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable) {
+ this.eagerCheckContentAvailable = eagerCheckContentAvailable;
+ }
+
public boolean isTransferException() {
return transferException;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/65f9a3ab/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpBinding.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpBinding.java
index 6f667e8..3c8b87d 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpBinding.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpBinding.java
@@ -116,6 +116,18 @@ public interface HttpBinding {
void setUseReaderForPayload(boolean useReaderForPayload);
/**
+ * Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present.
+ * This can be turned on in case HTTP clients do not send streamed data.
+ */
+ boolean isEagerCheckContentAvailable();
+
+ /**
+ * Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present.
+ * This can be turned on in case HTTP clients do not send streamed data.
+ */
+ void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable);
+
+ /**
* If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back
* serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or
* Servlet Camel components). On the producer side the exception will be deserialized and thrown as is,
http://git-wip-us.apache.org/repos/asf/camel/blob/65f9a3ab/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
index 6dfd1b7..a8e0132 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
@@ -89,6 +89,8 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
private boolean clearExpiredCookies = true;
@UriParam(label = "producer")
private boolean ignoreResponseBody;
+ @UriParam(label = "consumer")
+ private boolean eagerCheckContentAvailable;
public HttpEndpoint() {
}
@@ -259,6 +261,7 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
httpBinding = new DefaultHttpBinding();
httpBinding.setHeaderFilterStrategy(getHeaderFilterStrategy());
httpBinding.setTransferException(isTransferException());
+ httpBinding.setEagerCheckContentAvailable(isEagerCheckContentAvailable());
}
return httpBinding;
}
@@ -489,4 +492,16 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
this.ignoreResponseBody = ignoreResponseBody;
}
+ public boolean isEagerCheckContentAvailable() {
+ return eagerCheckContentAvailable;
+ }
+
+ /**
+ * Whether to eager check whether the HTTP requests has content if the content-length header is 0 or not present.
+ * This can be turned on in case HTTP clients do not send streamed data.
+ */
+ public void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable) {
+ this.eagerCheckContentAvailable = eagerCheckContentAvailable;
+ }
+
}