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