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

Reply via email to