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 <claus.ib...@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);

Reply via email to