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