This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 8e641b1fb10e0b5a5f10699a5964f76c464bfaa8 Author: Otavio Rodolfo Piske <[email protected]> AuthorDate: Thu Nov 30 10:23:39 2023 -0300 CAMEL-20163: cleanup parsing HTTP status ranges --- .../apache/camel/component/http/HttpProducer.java | 26 ++++++++++++-------- .../component/netty/http/NettyHttpProducer.java | 15 ++++++++---- .../org/apache/camel/support/http/HttpUtil.java | 28 ++++++++++++++++++++++ 3 files changed, 54 insertions(+), 15 deletions(-) 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 b4974b1c5e7..53c7d7d7c8c 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 @@ -54,6 +54,7 @@ import org.apache.camel.support.GZIPHelper; import org.apache.camel.support.MessageHelper; import org.apache.camel.support.ObjectHelper; import org.apache.camel.support.SynchronizationAdapter; +import org.apache.camel.support.http.HttpUtil; import org.apache.camel.util.IOHelper; import org.apache.camel.util.StringHelper; import org.apache.camel.util.URISupport; @@ -111,16 +112,7 @@ public class HttpProducer extends DefaultProducer { super.doInit(); String range = getEndpoint().getOkStatusCodeRange(); - if (!range.contains(",")) { - // default is 200-299 so lets optimize for this - if (range.contains("-")) { - minOkRange = Integer.parseInt(StringHelper.before(range, "-")); - maxOkRange = Integer.parseInt(StringHelper.after(range, "-")); - } else { - minOkRange = Integer.parseInt(range); - maxOkRange = minOkRange; - } - } + parseStatusRange(range); // optimize and build default url when there are no override headers String url = getEndpoint().getHttpUri().toASCIIString(); @@ -139,6 +131,20 @@ public class HttpProducer extends DefaultProducer { defaultHttpHost = URIUtils.extractHost(uri); } + private void parseStatusRange(String range) { + if (!range.contains(",")) { + if (!HttpUtil.parseStatusRange(range, this::setRanges)) { + minOkRange = Integer.parseInt(range); + maxOkRange = minOkRange; + } + } + } + + private void setRanges(int minOkRange, int maxOkRange) { + this.minOkRange = minOkRange; + this.maxOkRange = maxOkRange; + } + @Override public void process(Exchange exchange) throws Exception { boolean cookies = !getEndpoint().getComponent().isCookieManagementDisabled(); diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpProducer.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpProducer.java index 2c93e3ea2e0..1a635445a38 100644 --- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpProducer.java +++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpProducer.java @@ -56,18 +56,23 @@ public class NettyHttpProducer extends NettyProducer { super.doInit(); String range = getEndpoint().getConfiguration().getOkStatusCodeRange(); + parseStatusRange(range); + } + + private void parseStatusRange(String range) { if (!range.contains(",")) { - // default is 200-299 so lets optimize for this - if (range.contains("-")) { - minOkRange = Integer.parseInt(StringHelper.before(range, "-")); - maxOkRange = Integer.parseInt(StringHelper.after(range, "-")); - } else { + if (!org.apache.camel.support.http.HttpUtil.parseStatusRange(range, this::setRanges)) { minOkRange = Integer.parseInt(range); maxOkRange = minOkRange; } } } + private void setRanges(int minOkRange, int maxOkRange) { + this.minOkRange = minOkRange; + this.maxOkRange = maxOkRange; + } + @Override public NettyHttpEndpoint getEndpoint() { return (NettyHttpEndpoint) super.getEndpoint(); diff --git a/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java b/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java index 6c0992e3448..dcb6a15fa76 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/http/HttpUtil.java @@ -19,6 +19,7 @@ package org.apache.camel.support.http; import java.util.Map; import java.util.Set; +import java.util.function.BiConsumer; import org.apache.camel.Exchange; import org.apache.camel.ExchangePropertyKey; @@ -160,4 +161,31 @@ public final class HttpUtil { } return false; } + + /** + * Parse a HTTP status range and passes the values to the consumer method + * @param range the HTTP status range in the format "XXX-YYY" (i.e.: 200-299) + * @param consumer a consumer method to receive the parse ranges + * @return true if the range was parsed or false otherwise + */ + public static boolean parseStatusRange(String range, BiConsumer<Integer, Integer> consumer) { + // default is 200-299 so lets optimize for this + if (range.contains("-")) { + final String minRangeStr = StringHelper.before(range, "-"); + final String maxRangeStr = StringHelper.after(range, "-"); + + if (minRangeStr == null || maxRangeStr == null) { + return false; + } + + final int minOkRange = Integer.parseInt(minRangeStr); + final int maxOkRange = Integer.parseInt(maxRangeStr); + + consumer.accept(minOkRange, maxOkRange); + + return true; + } + + return false; + } }
