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 f5420f12b1a Resolve CamelQuteResourceUri templates from the existing 
endpoint engine
f5420f12b1a is described below

commit f5420f12b1a3654b480b69104ad0d7a951032371
Author: James Netherton <[email protected]>
AuthorDate: Thu Nov 12 11:31:31 2026 +0000

    Resolve CamelQuteResourceUri templates from the existing endpoint engine
    
    Look up the template named by the CamelQuteResourceUri header directly
    from the endpoint's Qute Engine instead of creating and registering a
    new QuteEndpoint for every distinct header value.
    
    Co-authored-by: Claude Opus 5.5 <[email protected]>
---
 .../java/org/apache/camel/component/qute/QuteEndpoint.java  | 13 ++-----------
 .../camel/component/qute/QuteSetTemplateViaHeaderTest.java  |  6 ++++++
 .../camel/quarkus/component/qute/it/QuteResource.java       | 13 +++++++++++++
 .../apache/camel/quarkus/component/qute/it/QuteTest.java    |  8 ++++++++
 4 files changed, 29 insertions(+), 11 deletions(-)

diff --git 
a/extensions/qute/component/src/main/java/org/apache/camel/component/qute/QuteEndpoint.java
 
b/extensions/qute/component/src/main/java/org/apache/camel/component/qute/QuteEndpoint.java
index 7baf8ecb087..034adba3b1a 100644
--- 
a/extensions/qute/component/src/main/java/org/apache/camel/component/qute/QuteEndpoint.java
+++ 
b/extensions/qute/component/src/main/java/org/apache/camel/component/qute/QuteEndpoint.java
@@ -122,12 +122,6 @@ public class QuteEndpoint extends ResourceEndpoint {
         });
     }
 
-    public QuteEndpoint findOrCreateEndpoint(String uri, String 
newResourceUri) {
-        String newUri = uri.replace(getResourceUri(), newResourceUri);
-        log.debug("Getting endpoint with URI: {}", newUri);
-        return getCamelContext().getEndpoint(newUri, QuteEndpoint.class);
-    }
-
     @SuppressWarnings("unchecked")
     @Override
     protected void onExchange(Exchange exchange) throws Exception {
@@ -139,11 +133,8 @@ public class QuteEndpoint extends ResourceEndpoint {
             if (newResourceUri != null) {
                 exchange.getIn().removeHeader(QuteConstants.QUTE_RESOURCE_URI);
 
-                log.debug("{} set to {} creating new endpoint to handle 
exchange", QuteConstants.QUTE_RESOURCE_URI,
-                        newResourceUri);
-                QuteEndpoint newEndpoint = 
findOrCreateEndpoint(getEndpointUri(), newResourceUri);
-                newEndpoint.onExchange(exchange);
-                return;
+                log.debug("{} set to {}, using it as the template path", 
QuteConstants.QUTE_RESOURCE_URI, newResourceUri);
+                path = newResourceUri;
             }
         }
 
diff --git 
a/extensions/qute/component/src/test/java/org/apache/camel/component/qute/QuteSetTemplateViaHeaderTest.java
 
b/extensions/qute/component/src/test/java/org/apache/camel/component/qute/QuteSetTemplateViaHeaderTest.java
index a8166315726..ef4b14500b3 100644
--- 
a/extensions/qute/component/src/test/java/org/apache/camel/component/qute/QuteSetTemplateViaHeaderTest.java
+++ 
b/extensions/qute/component/src/test/java/org/apache/camel/component/qute/QuteSetTemplateViaHeaderTest.java
@@ -22,6 +22,8 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class QuteSetTemplateViaHeaderTest extends QuteTestBase {
     private Exchange createLetter(String template) {
         Exchange exchange = context.getEndpoint("direct:a").createExchange();
@@ -36,6 +38,8 @@ public class QuteSetTemplateViaHeaderTest extends 
QuteTestBase {
 
     @Test
     public void testLetter() throws Exception {
+        int endpointCount = context.getEndpoints().size();
+
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(1);
         mock.message(0).body(String.class).contains("Thanks for the order of 
Camel in Action");
@@ -52,6 +56,8 @@ public class QuteSetTemplateViaHeaderTest extends 
QuteTestBase {
         template.send("direct:a", 
createLetter("org/apache/camel/component/qute/letter2.txt"));
 
         mock.assertIsSatisfied();
+
+        assertEquals(endpointCount, context.getEndpoints().size());
     }
 
     @Override
diff --git 
a/integration-tests/qute/src/main/java/org/apache/camel/quarkus/component/qute/it/QuteResource.java
 
b/integration-tests/qute/src/main/java/org/apache/camel/quarkus/component/qute/it/QuteResource.java
index 83e94dc183e..b365efc4c0a 100644
--- 
a/integration-tests/qute/src/main/java/org/apache/camel/quarkus/component/qute/it/QuteResource.java
+++ 
b/integration-tests/qute/src/main/java/org/apache/camel/quarkus/component/qute/it/QuteResource.java
@@ -63,6 +63,19 @@ public class QuteResource {
                 QuteConstants.QUTE_TEMPLATE, content, String.class);
     }
 
+    @Path("/template/resource/{name}")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String getTemplateFromResourceUriHeader(@PathParam("name") String 
name) {
+        int endpointCount = context.getEndpoints().size();
+        String result = 
producerTemplate.requestBodyAndHeader("direct:dynamic", "World",
+                QuteConstants.QUTE_RESOURCE_URI, name, String.class);
+        if (context.getEndpoints().size() != endpointCount) {
+            throw new IllegalStateException("Unexpected endpoint created for 
template " + name);
+        }
+        return result;
+    }
+
     @Path("/template/{name}")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
diff --git 
a/integration-tests/qute/src/test/java/org/apache/camel/quarkus/component/qute/it/QuteTest.java
 
b/integration-tests/qute/src/test/java/org/apache/camel/quarkus/component/qute/it/QuteTest.java
index 646a7f65894..8009712fd76 100644
--- 
a/integration-tests/qute/src/test/java/org/apache/camel/quarkus/component/qute/it/QuteTest.java
+++ 
b/integration-tests/qute/src/test/java/org/apache/camel/quarkus/component/qute/it/QuteTest.java
@@ -56,6 +56,14 @@ class QuteTest {
                 .body(is("Hello World"));
     }
 
+    @Test
+    public void testTemplateResourceUriFromHeader() {
+        RestAssured.get("/qute/template/resource/hello.txt")
+                .then()
+                .statusCode(200)
+                .body(is("Hello World"));
+    }
+
     @Test
     public void testDynamicTemplateWithContentType() {
         String template = """

Reply via email to