You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2023/07/27 14:57:38 UTC

[camel-quarkus] branch main updated (70c3a08a81 -> 795734744d)

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

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


    from 70c3a08a81 Ref #5026: Delay the init of ICMPHelper on non Linux OS
     new f2e6f050e0 Disallow invalid host/port values on the vertx-websocket server consumer
     new 795734744d Remove redundant direct:sendMessage route  from VertxWebsocketRoutes

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../reference/extensions/vertx-websocket.adoc      | 12 ++++-------
 .../runtime/src/main/doc/usage.adoc                | 12 ++++-------
 .../vertx/websocket/VertxWebsocketRecorder.java    |  7 +++++++
 .../vertx/websocket/it/VertxWebsocketResource.java | 17 +++++++++++++++
 .../vertx/websocket/it/VertxWebsocketRoutes.java   |  7 -------
 .../vertx/websocket/it/VertxWebsocketTest.java     | 24 +++++++++-------------
 6 files changed, 42 insertions(+), 37 deletions(-)


[camel-quarkus] 01/02: Disallow invalid host/port values on the vertx-websocket server consumer

Posted by ja...@apache.org.
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

commit f2e6f050e0ca72d5ae3c385e935caee64055aa9a
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jul 27 12:34:17 2023 +0100

    Disallow invalid host/port values on the vertx-websocket server consumer
    
    Fixes #5118
---
 .../reference/extensions/vertx-websocket.adoc      | 12 ++++-------
 .../runtime/src/main/doc/usage.adoc                | 12 ++++-------
 .../vertx/websocket/VertxWebsocketRecorder.java    |  7 +++++++
 .../vertx/websocket/it/VertxWebsocketResource.java | 17 +++++++++++++++
 .../vertx/websocket/it/VertxWebsocketRoutes.java   |  4 ----
 .../vertx/websocket/it/VertxWebsocketTest.java     | 24 +++++++++-------------
 6 files changed, 42 insertions(+), 34 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/vertx-websocket.adoc b/docs/modules/ROOT/pages/reference/extensions/vertx-websocket.adoc
index 8c396c918a..21529f4984 100644
--- a/docs/modules/ROOT/pages/reference/extensions/vertx-websocket.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/vertx-websocket.adoc
@@ -63,13 +63,9 @@ from("vertx-websocket:/my-websocket-path")
     .setBody().constant("Hello World");
 ----
 
-Or alternatively, you can refer to the full host & port configuration for the Quarkus HTTP server.
-
-[source,java]
-----
-from("vertx-websocket:{{quarkus.http.host}}:{{quarkus.http.port}}/my-websocket-path")
-    .setBody().constant("Hello World");
-----
+NOTE: While you do not need to explicitly configure the host/port on the vertx-websocket consumer. If you choose to,
+the host & port must exactly match the value of the Quarkus HTTP server configuration values for `quarkus.http.host` and `quarkus.http.port`.
+Otherwise an exception will be thrown at runtime.
 
 [id="extensions-vertx-websocket-usage-vert-x-websocket-producers"]
 === Vert.x WebSocket producers
@@ -93,7 +89,7 @@ from("direct:sendToWebSocket")
     .log("vertx-websocket:{{quarkus.http.host}}:{{quarkus.http.port}}/my-websocket-path");
 ----
 
-When producing messages to an external WebSocket server, then you must provide the host name and port (if required).
+When producing messages to an external WebSocket server, then you must always provide the host name and port (if required).
 
 
 [id="extensions-vertx-websocket-additional-camel-quarkus-configuration"]
diff --git a/extensions/vertx-websocket/runtime/src/main/doc/usage.adoc b/extensions/vertx-websocket/runtime/src/main/doc/usage.adoc
index 902c7225f9..649300042f 100644
--- a/extensions/vertx-websocket/runtime/src/main/doc/usage.adoc
+++ b/extensions/vertx-websocket/runtime/src/main/doc/usage.adoc
@@ -11,13 +11,9 @@ from("vertx-websocket:/my-websocket-path")
     .setBody().constant("Hello World");
 ----
 
-Or alternatively, you can refer to the full host & port configuration for the Quarkus HTTP server.
-
-[source,java]
-----
-from("vertx-websocket:{{quarkus.http.host}}:{{quarkus.http.port}}/my-websocket-path")
-    .setBody().constant("Hello World");
-----
+NOTE: While you do not need to explicitly configure the host/port on the vertx-websocket consumer. If you choose to,
+the host & port must exactly match the value of the Quarkus HTTP server configuration values for `quarkus.http.host` and `quarkus.http.port`.
+Otherwise an exception will be thrown at runtime.
 
 === Vert.x WebSocket producers
 
@@ -40,4 +36,4 @@ from("direct:sendToWebSocket")
     .log("vertx-websocket:{{quarkus.http.host}}:{{quarkus.http.port}}/my-websocket-path");
 ----
 
-When producing messages to an external WebSocket server, then you must provide the host name and port (if required).
+When producing messages to an external WebSocket server, then you must always provide the host name and port (if required).
diff --git a/extensions/vertx-websocket/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/VertxWebsocketRecorder.java b/extensions/vertx-websocket/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/VertxWebsocketRecorder.java
index 05e90337a3..9c6c6ed0b2 100644
--- a/extensions/vertx-websocket/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/VertxWebsocketRecorder.java
+++ b/extensions/vertx-websocket/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/VertxWebsocketRecorder.java
@@ -85,6 +85,13 @@ public class VertxWebsocketRecorder {
         @Override
         protected VertxWebsocketHost createVertxWebsocketHost(VertxWebsocketHostConfiguration hostConfiguration,
                 VertxWebsocketHostKey hostKey) {
+            // If a host / port was specified on the consumer, it must be the same as what the Quarkus HTTP server is bound to
+            if (!hostKey.getHost().equals(HOST) || hostKey.getPort() != PORT) {
+                String message = String.format(
+                        "Invalid host/port %s:%d. The host/port can only be configured as %s:%d",
+                        hostKey.getHost(), hostKey.getPort(), HOST, PORT);
+                throw new IllegalArgumentException(message);
+            }
             return new QuarkusVertxWebsocketHost(getCamelContext(), hostConfiguration, hostKey);
         }
 
diff --git a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java
index ac0795f908..5789689ecf 100644
--- a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java
+++ b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java
@@ -35,6 +35,7 @@ import jakarta.ws.rs.PathParam;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.QueryParam;
 import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.ProducerTemplate;
@@ -42,10 +43,12 @@ import org.apache.camel.quarkus.component.vertx.websocket.VertxWebsocketRecorder
 import org.apache.camel.support.jsse.KeyStoreParameters;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.support.jsse.TrustManagersParameters;
+import org.jboss.logging.Logger;
 
 @Path("/vertx-websocket")
 @ApplicationScoped
 public class VertxWebsocketResource {
+    private static final Logger LOG = Logger.getLogger(VertxWebsocketResource.class);
 
     @Inject
     CamelContext context;
@@ -121,6 +124,20 @@ public class VertxWebsocketResource {
         return connectOptions.getPort();
     }
 
+    @Path("/invalid/consumer/uri")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response invalidConsumerHostPort(@QueryParam("hostPort") String hostPort) {
+        try {
+            consumerTemplate.receive("vertx-websocket:" + hostPort + "/test");
+            return Response.ok().build();
+        } catch (Exception e) {
+            LOG.error("Error creating vertx-websocket consumer", e);
+            String message = e.getCause() != null ? e.getCause().getMessage() : e.getMessage();
+            return Response.serverError().entity(message).build();
+        }
+    }
+
     @Named
     public SSLContextParameters clientSSLContextParameters() {
         KeyStoreParameters truststoreParameters = new KeyStoreParameters();
diff --git a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java
index 231e23fe76..88a12a5cd7 100644
--- a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java
+++ b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java
@@ -36,10 +36,6 @@ public class VertxWebsocketRoutes extends RouteBuilder {
                 .end()
                 .to("vertx-websocket:/");
 
-        from("vertx-websocket:redundant.host:9999/test/default/host/port/applied")
-                .setBody(simple("Hello ${body}"))
-                .to("vertx-websocket:/test/default/host/port/applied");
-
         from("direct:sendMessage")
                 .to("vertx-websocket:/test");
 
diff --git a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
index 414cbfbed0..c2a053622d 100644
--- a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
+++ b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketTest.java
@@ -42,6 +42,7 @@ import org.junit.jupiter.params.provider.MethodSource;
 import org.junit.jupiter.params.provider.ValueSource;
 
 import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.startsWith;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -54,9 +55,6 @@ class VertxWebsocketTest {
     @TestHTTPResource("/echo")
     URI echo;
 
-    @TestHTTPResource("/test/default/host/port/applied")
-    URI defaultHostPortApplied;
-
     @TestHTTPResource("/client/consumer")
     URI clientConsumer;
 
@@ -82,17 +80,15 @@ class VertxWebsocketTest {
         }
     }
 
-    @Test
-    public void testEchoWithIgnoredHostPortConfig() throws Exception {
-        String message = "From Ignored Host Port Config";
-
-        try (WebSocketConnection connection = new WebSocketConnection(defaultHostPortApplied, message)) {
-            connection.connect();
-
-            List<String> messages = connection.getMessages();
-            assertEquals(1, messages.size());
-            assertEquals("Hello " + message, messages.get(0));
-        }
+    @ParameterizedTest
+    @ValueSource(strings = { "invalid.host", "localhost:9999", "invalid.host:9999" })
+    public void testInvalidHostPortConfig(String hostPort) throws Exception {
+        RestAssured.given()
+                .queryParam("hostPort", hostPort)
+                .get("/vertx-websocket/invalid/consumer/uri")
+                .then()
+                .statusCode(500)
+                .body(startsWith("Invalid host/port"));
     }
 
     @Test


[camel-quarkus] 02/02: Remove redundant direct:sendMessage route from VertxWebsocketRoutes

Posted by ja...@apache.org.
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

commit 795734744dcd3d163f58b4955029a973e73a6401
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jul 27 12:56:09 2023 +0100

    Remove redundant direct:sendMessage route  from VertxWebsocketRoutes
---
 .../quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java     | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java
index 88a12a5cd7..8cc174014e 100644
--- a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java
+++ b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketRoutes.java
@@ -36,9 +36,6 @@ public class VertxWebsocketRoutes extends RouteBuilder {
                 .end()
                 .to("vertx-websocket:/");
 
-        from("direct:sendMessage")
-                .to("vertx-websocket:/test");
-
         from("direct:produceToExternalEndpoint")
                 .toD("vertx-websocket:${header.host}:${header.port}/managed/by/quarkus/websockets");