This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 6ab6937 CAMEL-17008: okStatusCodeRange single value (#6169) 6ab6937 is described below commit 6ab6937c6297098035514b61a28351474d398475 Author: Krzysztof Jamróz <79092062+k-jam...@users.noreply.github.com> AuthorDate: Mon Sep 27 17:54:49 2021 +0200 CAMEL-17008: okStatusCodeRange single value (#6169) * CAMEL-17008: camel-netty-http - okStatusCodeRange should allow single value * CAMEL-17008: camel-http - okStatusCodeRange should allow single value * CAMEL-17008: camel-vertx-http - okStatusCodeRange should allow single value Co-authored-by: Krzysztof Jamróz <krzysztof.jam...@apdu.pl> --- .../java/org/apache/camel/component/http/HttpProducer.java | 9 +++++++-- .../component/jetty/HttpProducerOkStatusCodeRangeTest.java | 13 +++++++++++++ .../camel/component/netty/http/NettyHttpProducer.java | 9 +++++++-- .../component/netty/http/NettyHttpOkStatusCodeTest.java | 12 ++++++++++++ .../camel/component/vertx/http/VertxHttpEndpoint.java | 12 +++++++++--- .../vertx/http/VertxHttpThrowExceptionOnFailureTest.java | 14 ++++++++++++++ 6 files changed, 62 insertions(+), 7 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 a556de5..680d271 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 @@ -115,8 +115,13 @@ public class HttpProducer extends DefaultProducer { 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, "-")); + if (range.contains("-")) { + minOkRange = Integer.parseInt(StringHelper.before(range, "-")); + maxOkRange = Integer.parseInt(StringHelper.after(range, "-")); + } else { + minOkRange = Integer.parseInt(range); + maxOkRange = minOkRange; + } } // optimize and build default url when there are no override headers diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpProducerOkStatusCodeRangeTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpProducerOkStatusCodeRangeTest.java index a0a8224..450d8e8 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpProducerOkStatusCodeRangeTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpProducerOkStatusCodeRangeTest.java @@ -42,6 +42,19 @@ public class HttpProducerOkStatusCodeRangeTest extends BaseJettyTest { } @Test + public void testNoOkSingleValue() throws Exception { + byte[] data = "Hello World".getBytes(); + try { + template.requestBody("http://localhost:{{port}}/test?okStatusCodeRange=200", data, String.class); + fail("Should have thrown exception"); + } catch (CamelExecutionException e) { + HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, e.getCause()); + assertEquals(209, cause.getStatusCode()); + assertEquals("Not allowed", cause.getResponseBody()); + } + } + + @Test public void testOk() throws Exception { byte[] data = "Hello World".getBytes(); String out = template.requestBody("http://localhost:{{port}}/test?okStatusCodeRange=200-209", data, String.class); 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 eec30b1..05c7132 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 @@ -57,8 +57,13 @@ public class NettyHttpProducer extends NettyProducer { String range = getEndpoint().getConfiguration().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, "-")); + if (range.contains("-")) { + minOkRange = Integer.parseInt(StringHelper.before(range, "-")); + maxOkRange = Integer.parseInt(StringHelper.after(range, "-")); + } else { + minOkRange = Integer.parseInt(range); + maxOkRange = minOkRange; + } } } diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpOkStatusCodeTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpOkStatusCodeTest.java index cd0c1d3..d76eb26 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpOkStatusCodeTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpOkStatusCodeTest.java @@ -40,6 +40,18 @@ public class NettyHttpOkStatusCodeTest extends BaseNettyTest { } @Test + public void testNoOkSingleValue() throws Exception { + byte[] data = "Hello World".getBytes(); + CamelExecutionException e = assertThrows(CamelExecutionException.class, + () -> template.requestBody("netty-http:http://localhost:{{port}}/test?okStatusCodeRange=200", data, + String.class)); + NettyHttpOperationFailedException cause = assertIsInstanceOf(NettyHttpOperationFailedException.class, e.getCause()); + assertEquals(209, cause.getStatusCode()); + String body = cause.getContentAsString(); + assertEquals("Not allowed", body); + } + + @Test public void testNoOkComplexRange() throws Exception { byte[] data = "Hello World".getBytes(); CamelExecutionException e = assertThrows(CamelExecutionException.class, diff --git a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java index 76b98da..f6f02ea 100644 --- a/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java +++ b/components/camel-vertx/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/VertxHttpEndpoint.java @@ -58,10 +58,16 @@ public class VertxHttpEndpoint extends DefaultEndpoint { @Override protected void doInit() throws Exception { - if (!configuration.getOkStatusCodeRange().contains(",")) { + String range = configuration.getOkStatusCodeRange(); + if (!range.contains(",")) { // default is 200-299 so lets optimize for this - minOkRange = Integer.parseInt(StringHelper.before(configuration.getOkStatusCodeRange(), "-")); - maxOkRange = Integer.parseInt(StringHelper.after(configuration.getOkStatusCodeRange(), "-")); + if (range.contains("-")) { + minOkRange = Integer.parseInt(StringHelper.before(range, "-")); + maxOkRange = Integer.parseInt(StringHelper.after(range, "-")); + } else { + minOkRange = Integer.parseInt(range); + maxOkRange = minOkRange; + } } } diff --git a/components/camel-vertx/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpThrowExceptionOnFailureTest.java b/components/camel-vertx/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpThrowExceptionOnFailureTest.java index c46efb9..562232d 100644 --- a/components/camel-vertx/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpThrowExceptionOnFailureTest.java +++ b/components/camel-vertx/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpThrowExceptionOnFailureTest.java @@ -75,6 +75,20 @@ public class VertxHttpThrowExceptionOnFailureTest extends VertxHttpTestSupport { } @Test + public void testThrowExceptionOnFailureWithStatusCodeRangeSingleValue() { + Exchange exchange = template.request(getProducerUri() + "/badstatus?okStatusCodeRange=205", null); + assertTrue(exchange.isFailed()); + + Map<String, Object> headers = exchange.getMessage().getHeaders(); + assertTrue(headers.isEmpty()); + + HttpOperationFailedException exception = exchange.getException(HttpOperationFailedException.class); + assertEquals(201, exception.getStatusCode()); + assertEquals("Created", exception.getStatusText()); + assertEquals(getTestServerUrl() + "/badstatus", exception.getUri()); + } + + @Test public void testThrowExceptionOnFailureWithOverriddenUri() { Exchange exchange = template.request(getProducerUri(), new Processor() { @Override