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/26 17:43:23 UTC
[1/3] 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.
Repository: camel
Updated Branches:
refs/heads/camel-2.15.x 2bbedff8d -> 25ab4d49d
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.
Conflicts:
components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3d74d4fd
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3d74d4fd
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3d74d4fd
Branch: refs/heads/camel-2.15.x
Commit: 3d74d4fd58f11dcc3272044dd83ed5d0e2ba986c
Parents: 2bbedff
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Jul 17 12:52:27 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 26 17:41:18 2015 +0200
----------------------------------------------------------------------
.../camel/component/http/DefaultHttpBinding.java | 11 ++++++++++-
.../apache/camel/component/http/HttpBinding.java | 12 ++++++++++++
.../apache/camel/component/http/HttpEndpoint.java | 16 ++++++++++++++++
3 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/3d74d4fd/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java b/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
index 7a0beb7..f080021 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
@@ -58,6 +58,7 @@ public class DefaultHttpBinding implements HttpBinding {
private static final Logger LOG = LoggerFactory.getLogger(DefaultHttpBinding.class);
private boolean useReaderForPayload;
+ private boolean eagerCheckContentAvailable;
private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
private HttpEndpoint endpoint;
@@ -448,7 +449,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
@@ -468,6 +469,14 @@ public class DefaultHttpBinding implements HttpBinding {
this.useReaderForPayload = useReaderForPayload;
}
+ public boolean isEagerCheckContentAvailable() {
+ return eagerCheckContentAvailable;
+ }
+
+ public void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable) {
+ this.eagerCheckContentAvailable = eagerCheckContentAvailable;
+ }
+
public HeaderFilterStrategy getHeaderFilterStrategy() {
return headerFilterStrategy;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/3d74d4fd/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 a045aee..3f2c069 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
@@ -98,6 +98,18 @@ public interface HttpBinding {
void doWriteResponse(Message message, HttpServletResponse response, Exchange exchange) throws IOException;
/**
+ * 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.
+ */
+ 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.
+ */
+ void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable);
+
+ /**
* Should reader by used instead of input stream.
*
* @see #setUseReaderForPayload(boolean) for more details
http://git-wip-us.apache.org/repos/asf/camel/blob/3d74d4fd/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 8bf65e5..8c5bee4 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
@@ -83,6 +83,8 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
private UrlRewrite urlRewrite;
@UriParam
private Integer responseBufferSize;
+ @UriParam
+ private boolean eagerCheckContentAvailable;
public HttpEndpoint() {
}
@@ -228,6 +230,8 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
public HttpBinding getBinding() {
if (binding == null) {
binding = new DefaultHttpBinding(this);
+ // create a new binding and use the options from this endpoint
+ binding.setEagerCheckContentAvailable(isEagerCheckContentAvailable());
}
return binding;
}
@@ -386,4 +390,16 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
public void setResponseBufferSize(Integer responseBufferSize) {
this.responseBufferSize = responseBufferSize;
}
+
+ public boolean isEagerCheckContentAvailable() {
+ return eagerCheckContentAvailable;
+ }
+
+ /**
+ * 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.
+ */
+ public void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable) {
+ this.eagerCheckContentAvailable = eagerCheckContentAvailable;
+ }
}
[2/3] 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.
Posted by da...@apache.org.
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.
Conflicts:
components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java
components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpBinding.java
components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2efa6a04
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2efa6a04
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2efa6a04
Branch: refs/heads/camel-2.15.x
Commit: 2efa6a043a371666af80b6a3ad819395043ab801
Parents: 3d74d4f
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Jul 17 12:57:55 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 26 17:44:31 2015 +0200
----------------------------------------------------------------------
.../camel/component/http/HttpBinding.java | 8 ++++----
.../camel/component/http/HttpEndpoint.java | 4 ++--
.../component/http4/DefaultHttpBinding.java | 11 +++++++++-
.../camel/component/http4/HttpBinding.java | 12 +++++++++++
.../camel/component/http4/HttpEndpoint.java | 21 ++++++++++++++++++--
5 files changed, 47 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/2efa6a04/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 3f2c069..35f1f4a 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
@@ -98,14 +98,14 @@ public interface HttpBinding {
void doWriteResponse(Message message, HttpServletResponse response, Exchange exchange) throws IOException;
/**
- * 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/2efa6a04/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 8c5bee4..97f01ee 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
@@ -396,8 +396,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/2efa6a04/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 ed03770..ce1fca1 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
@@ -58,6 +58,7 @@ public class DefaultHttpBinding implements HttpBinding {
private static final Logger LOG = LoggerFactory.getLogger(DefaultHttpBinding.class);
private boolean useReaderForPayload;
+ private boolean eagerCheckContentAvailable;
private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
private HttpEndpoint endpoint;
@@ -411,7 +412,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
@@ -431,6 +432,14 @@ public class DefaultHttpBinding implements HttpBinding {
this.useReaderForPayload = useReaderForPayload;
}
+ public boolean isEagerCheckContentAvailable() {
+ return eagerCheckContentAvailable;
+ }
+
+ public void setEagerCheckContentAvailable(boolean eagerCheckContentAvailable) {
+ this.eagerCheckContentAvailable = eagerCheckContentAvailable;
+ }
+
public HeaderFilterStrategy getHeaderFilterStrategy() {
return headerFilterStrategy;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/2efa6a04/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 339f13b..8f7b92f 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);
+
+ /**
* Gets the header filter strategy
*
* @return the strategy
http://git-wip-us.apache.org/repos/asf/camel/blob/2efa6a04/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 4229c1c..4a927e1 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
@@ -84,7 +84,9 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
@UriParam(defaultValue = "true")
private boolean clearExpiredCookies = true;
private CookieStore cookieStore = new BasicCookieStore();
-
+ @UriParam
+ private boolean eagerCheckContentAvailable;
+
public HttpEndpoint() {
}
@@ -250,9 +252,11 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
this.httpClientConfigurer = httpClientConfigurer;
}
- public HttpBinding getBinding() {
+ public HttpBinding getHttpBinding() {
if (binding == null) {
+ // create a new binding and use the options from this endpoint
binding = new DefaultHttpBinding(this);
+ binding.setEagerCheckContentAvailable(isEagerCheckContentAvailable());
}
return binding;
}
@@ -412,4 +416,17 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
public void setAuthenticationPreemptive(boolean authenticationPreemptive) {
this.authenticationPreemptive = authenticationPreemptive;
}
+
+ 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;
+ }
+
}
[3/3] 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.
Posted by da...@apache.org.
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/25ab4d49
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/25ab4d49
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/25ab4d49
Branch: refs/heads/camel-2.15.x
Commit: 25ab4d49d484fe1b357da1bc590230ab05b8cea7
Parents: 2efa6a0
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 26 17:50:29 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 26 17:50:29 2015 +0200
----------------------------------------------------------------------
.../main/java/org/apache/camel/component/http4/HttpEndpoint.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/25ab4d49/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 4a927e1..bcd22b5 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
@@ -252,7 +252,7 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
this.httpClientConfigurer = httpClientConfigurer;
}
- public HttpBinding getHttpBinding() {
+ public HttpBinding getBinding() {
if (binding == null) {
// create a new binding and use the options from this endpoint
binding = new DefaultHttpBinding(this);