This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.11.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.11.x by this push:
new 0d1357e CAMEL-17008: okStatusCodeRange single value (#6169)
0d1357e is described below
commit 0d1357e87772ba61f123febe1a7d4a7883ab5284
Author: Krzysztof Jamróz <[email protected]>
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 <[email protected]>
---
.../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