This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new 0c439f4374 Register HttpOperationFailedException for reflection
0c439f4374 is described below

commit 0c439f4374b1e695a20c135f522dc0ba3b891f5c
Author: James Netherton <jamesnether...@gmail.com>
AuthorDate: Fri Aug 19 09:09:41 2022 +0100

    Register HttpOperationFailedException for reflection
    
    Fixes #3971
---
 .../component/http/deployment/HttpProcessor.java   |  2 ++
 integration-tests/http/pom.xml                     | 17 ++++++++++
 .../quarkus/component/http/it/HttpResource.java    |  8 +++++
 .../camel/quarkus/component/http/it/HttpRoute.java | 38 ++++++++--------------
 .../camel/quarkus/component/http/it/HttpTest.java  | 33 ++++++++++++++-----
 5 files changed, 65 insertions(+), 33 deletions(-)

diff --git 
a/extensions/http/deployment/src/main/java/org/apache/camel/quarkus/component/http/deployment/HttpProcessor.java
 
b/extensions/http/deployment/src/main/java/org/apache/camel/quarkus/component/http/deployment/HttpProcessor.java
index 9db31fd2b1..d0d024337e 100644
--- 
a/extensions/http/deployment/src/main/java/org/apache/camel/quarkus/component/http/deployment/HttpProcessor.java
+++ 
b/extensions/http/deployment/src/main/java/org/apache/camel/quarkus/component/http/deployment/HttpProcessor.java
@@ -21,6 +21,7 @@ import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.http.base.HttpOperationFailedException;
 import org.apache.http.client.config.RequestConfig;
 
 class HttpProcessor {
@@ -41,5 +42,6 @@ class HttpProcessor {
         reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, 
"org.apache.camel.component.http.HttpMethods"));
         reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, 
"org.apache.http.impl.client.HttpClientBuilder"));
         reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, 
RequestConfig.Builder.class.getName()));
+        reflectiveClasses.produce(new ReflectiveClassBuildItem(false, false, 
HttpOperationFailedException.class));
     }
 }
diff --git a/integration-tests/http/pom.xml b/integration-tests/http/pom.xml
index 58303308ec..ea1811f88f 100644
--- a/integration-tests/http/pom.xml
+++ b/integration-tests/http/pom.xml
@@ -43,6 +43,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-netty-http</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-seda</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-vertx-http</artifactId>
@@ -181,6 +185,19 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.camel.quarkus</groupId>
+                    <artifactId>camel-quarkus-seda-deployment</artifactId>
+                    <version>${project.version}</version>
+                    <type>pom</type>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>*</groupId>
+                            <artifactId>*</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     
<artifactId>camel-quarkus-vertx-http-deployment</artifactId>
diff --git 
a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
 
b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
index 35c786b547..07dffbb0fd 100644
--- 
a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
+++ 
b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
@@ -167,6 +167,14 @@ public class HttpResource {
                 .request(String.class);
     }
 
+    @Path("/http/operation/failed/exception")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String httpOperationFailedException() {
+        producerTemplate.to("direct:httpOperationFailedException").send();
+        return consumerTemplate.receiveBody("seda:dlq", 5000, String.class);
+    }
+
     @Path("/http/serialized/exception")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
diff --git 
a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
 
b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
index a6b0d17aea..26b8625295 100644
--- 
a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
+++ 
b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.quarkus.component.http.it;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
 import java.io.InputStream;
 
 import javax.inject.Named;
@@ -26,6 +24,7 @@ import io.quarkus.runtime.annotations.RegisterForReflection;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.http.base.HttpOperationFailedException;
 import org.apache.camel.support.jsse.KeyManagersParameters;
 import org.apache.camel.support.jsse.KeyStoreParameters;
 import org.apache.camel.support.jsse.SSLContextParameters;
@@ -44,6 +43,18 @@ public class HttpRoute extends RouteBuilder {
         
from("netty-http:http://0.0.0.0:{{camel.netty-http.compression-test-port}}/compressed?compression=true";)
                 .transform().constant("Netty Hello World Compressed");
 
+        from("direct:httpOperationFailedException")
+                .onException(HttpOperationFailedException.class)
+                .handled(true)
+                .setBody().constant("Handled HttpOperationFailedException")
+                .to("seda:dlq")
+                .end()
+                
.to("http://localhost:{{camel.netty-http.test-port}}/test/server/error";);
+
+        
from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/error";)
+                .removeHeaders("CamelHttp*")
+                .setHeader(Exchange.HTTP_RESPONSE_CODE).constant(500);
+
         
from("netty-http:http://0.0.0.0:{{camel.netty-http.https-test-port}}/countries/cz?ssl=true&sslContextParameters=#sslContextParameters";)
                 .process(new Processor() {
                     @Override
@@ -62,6 +73,7 @@ public class HttpRoute extends RouteBuilder {
                 .staticServiceDiscovery()
                 .servers("myService@localhost:{{camel.netty-http.test-port}}")
                 .end();
+
         
from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/myService";)
                 .transform().constant("Hello from myService");
 
@@ -89,26 +101,4 @@ public class HttpRoute extends RouteBuilder {
 
         return sslContextParameters;
     }
-
-    private static byte[] readStore(String path) throws IOException {
-        byte[] data = null;
-        final InputStream resource = HttpRoute.class.getResourceAsStream(path);
-        if (resource != null) {
-            try (InputStream is = resource) {
-                data = inputStreamToBytes(is);
-            }
-        }
-        return data;
-    }
-
-    private static byte[] inputStreamToBytes(InputStream is) throws 
IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        byte[] buf = new byte[1024];
-        int r;
-        while ((r = is.read(buf)) > 0) {
-            out.write(buf, 0, r);
-        }
-        return out.toByteArray();
-    }
-
 }
diff --git 
a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
 
b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
index 77435158c0..e9d330bc5f 100644
--- 
a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
+++ 
b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
@@ -67,8 +67,7 @@ class HttpTest {
     @ParameterizedTest
     @MethodSource("getHttpComponentNames")
     public void httpsProducer(String component) {
-        final int port = 
ConfigProvider.getConfig().getValue("camel.netty-http.https-test-port", 
Integer.class);
-
+        final int port = getPort("camel.netty-http.https-test-port");
         RestAssured
                 .given()
                 .queryParam("test-port", port)
@@ -147,7 +146,7 @@ class HttpTest {
     @ParameterizedTest
     @MethodSource("getHttpComponentNames")
     public void compression(String component) {
-        final int port = 
ConfigProvider.getConfig().getValue("camel.netty-http.compression-test-port", 
Integer.class);
+        final int port = getPort("camel.netty-http.compression-test-port");
         RestAssured
                 .given()
                 .queryParam("test-port", port)
@@ -161,10 +160,9 @@ class HttpTest {
     @ParameterizedTest
     @MethodSource("getHttpComponentNames")
     public void transferException(String component) {
-        final int port = 
ConfigProvider.getConfig().getValue("camel.netty-http.test-port", 
Integer.class);
         RestAssured
                 .given()
-                .queryParam("test-port", port)
+                .queryParam("test-port", getPort())
                 .when()
                 .get("/test/client/{component}/serialized/exception", 
component)
                 .then()
@@ -174,10 +172,9 @@ class HttpTest {
 
     @Test
     public void basicNettyHttpServer() {
-        final int port = 
ConfigProvider.getConfig().getValue("camel.netty-http.test-port", 
Integer.class);
         RestAssured
                 .given()
-                .port(port)
+                .port(getPort())
                 .when()
                 .get("/test/server/hello")
                 .then()
@@ -202,10 +199,9 @@ class HttpTest {
 
     @Test
     public void serviceCall() {
-        final int port = 
ConfigProvider.getConfig().getValue("camel.netty-http.test-port", 
Integer.class);
         RestAssured
                 .given()
-                .port(port)
+                .port(getPort())
                 .when()
                 .get("/test/server/serviceCall")
                 .then()
@@ -213,6 +209,25 @@ class HttpTest {
                 .body(Matchers.is("Hello from myService"));
     }
 
+    @Test
+    public void httpOperationFailedException() {
+        RestAssured
+                .given()
+                .when()
+                .get("/test/client/http/operation/failed/exception")
+                .then()
+                .statusCode(200)
+                .body(is("Handled HttpOperationFailedException"));
+    }
+
+    private Integer getPort() {
+        return getPort("camel.netty-http.test-port");
+    }
+
+    private Integer getPort(String configKey) {
+        return ConfigProvider.getConfig().getValue(configKey, Integer.class);
+    }
+
     private static String[] getHttpComponentNames() {
         return HTTP_COMPONENTS;
     }

Reply via email to