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 2021/02/16 06:40:35 UTC

[camel] 01/04: CAMEL-16215: camel-http - Optimize isStatusCodeOk

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 532f82fdbb0e4b784fa7063ac224c63f64b503be
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Feb 16 07:13:39 2021 +0100

    CAMEL-16215: camel-http - Optimize isStatusCodeOk
---
 .../apache/camel/component/http/HttpProducer.java  | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
index 04c33a6..4b1dbaf 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
@@ -53,6 +53,7 @@ import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.ObjectHelper;
 import org.apache.camel.support.SynchronizationAdapter;
 import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.http.Header;
 import org.apache.http.HeaderIterator;
@@ -87,6 +88,8 @@ public class HttpProducer extends DefaultProducer {
     private boolean throwException;
     private boolean transferException;
     private HeaderFilterStrategy httpProtocolHeaderFilterStrategy = new HttpProtocolHeaderFilterStrategy();
+    private int minOkRange;
+    private int maxOkRange;
 
     public HttpProducer(HttpEndpoint endpoint) {
         super(endpoint);
@@ -97,6 +100,18 @@ public class HttpProducer extends DefaultProducer {
     }
 
     @Override
+    protected void doInit() throws Exception {
+        super.doInit();
+
+        String range = getEndpoint().getOkStatusCodeRange();
+        if (!range.contains(",")) {
+            // default is 200-299 so lets optimize for this
+            minOkRange = Integer.parseInt(StringHelper.before(range, "-"));
+            maxOkRange = Integer.parseInt(StringHelper.after(range, "-"));
+        }
+    }
+
+    @Override
     public void process(Exchange exchange) throws Exception {
 
         if (getEndpoint().isClearExpiredCookies() && !getEndpoint().isBridgeEndpoint()) {
@@ -238,7 +253,12 @@ public class HttpProducer extends DefaultProducer {
                 // if we do not use failed exception then populate response for all response codes
                 populateResponse(exchange, httpRequest, httpResponse, in, strategy, responseCode);
             } else {
-                boolean ok = HttpHelper.isStatusCodeOk(responseCode, getEndpoint().getOkStatusCodeRange());
+                boolean ok;
+                if (minOkRange > 0) {
+                    ok = responseCode >= minOkRange && responseCode <= maxOkRange;
+                } else {
+                    ok = HttpHelper.isStatusCodeOk(responseCode, getEndpoint().getOkStatusCodeRange());
+                }
                 if (ok) {
                     // only populate response for OK response
                     populateResponse(exchange, httpRequest, httpResponse, in, strategy, responseCode);