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 339a5d94a6 Filter AdviceWithRouteBuilder types from build time route
discovery
339a5d94a6 is described below
commit 339a5d94a618c04e74e5663e2b3e143fea6c3aaf
Author: James Netherton <[email protected]>
AuthorDate: Wed Nov 20 11:39:41 2024 +0000
Filter AdviceWithRouteBuilder types from build time route discovery
Fixes #6807
---
.../quarkus/core/deployment/CamelProcessor.java | 10 ++++-----
.../quarkus/component/mock/it/MockResource.java | 25 +++++++++++-----------
2 files changed, 16 insertions(+), 19 deletions(-)
diff --git
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
index b36c18eb83..e51892d0e7 100644
---
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
+++
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
@@ -90,8 +90,6 @@ class CamelProcessor {
private static final DotName ROUTES_BUILDER_TYPE = DotName.createSimple(
"org.apache.camel.RoutesBuilder");
- private static final DotName ROUTE_BUILDER_TYPE = DotName.createSimple(
- "org.apache.camel.builder.RouteBuilder");
private static final DotName LAMBDA_ROUTE_BUILDER_TYPE =
DotName.createSimple(
"org.apache.camel.builder.LambdaRouteBuilder");
private static final DotName LAMBDA_ENDPOINT_ROUTE_BUILDER_TYPE =
DotName.createSimple(
@@ -386,10 +384,10 @@ class CamelProcessor {
final IndexView index = combinedIndex.getIndex();
- Set<ClassInfo> allKnownImplementors = new HashSet<>();
-
allKnownImplementors.addAll(index.getAllKnownImplementors(ROUTES_BUILDER_TYPE));
-
allKnownImplementors.addAll(index.getAllKnownSubclasses(ROUTE_BUILDER_TYPE));
-
allKnownImplementors.addAll(index.getAllKnownSubclasses(ADVICE_WITH_ROUTE_BUILDER_TYPE));
+ Set<ClassInfo> allKnownImplementors =
index.getAllKnownImplementors(ROUTES_BUILDER_TYPE)
+ .stream()
+ .filter(classInfo ->
!classInfo.superName().equals(ADVICE_WITH_ROUTE_BUILDER_TYPE))
+ .collect(Collectors.toSet());
final Predicate<DotName> pathFilter = new PathFilter.Builder()
.exclude(
diff --git
a/integration-test-groups/foundation/mock/src/main/java/org/apache/camel/quarkus/component/mock/it/MockResource.java
b/integration-test-groups/foundation/mock/src/main/java/org/apache/camel/quarkus/component/mock/it/MockResource.java
index d9fd66e169..d7f1c644dd 100644
---
a/integration-test-groups/foundation/mock/src/main/java/org/apache/camel/quarkus/component/mock/it/MockResource.java
+++
b/integration-test-groups/foundation/mock/src/main/java/org/apache/camel/quarkus/component/mock/it/MockResource.java
@@ -29,7 +29,6 @@ import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.AdviceWith;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
import org.jboss.logging.Logger;
import org.wildfly.common.Assert;
@@ -48,18 +47,11 @@ public class MockResource {
@Path("/advice")
@GET
public void advice() throws Exception {
-
// advice the first route using the inlined AdviceWith route builder
// which has extended capabilities than the regular route builder
- AdviceWith.adviceWith(((ModelCamelContext)
context).getRouteDefinition("forMocking"), context,
- new AdviceWithRouteBuilder() {
- @Override
- public void configure() throws Exception {
- mockEndpoints("direct:mock.*", "log:mock.*");
- }
- });
+ AdviceWith.adviceWith("forMocking", context, new RouteAdvisor());
- MockEndpoint mockEndpoint1 =
context.getEndpoint("mock:direct:mockStart", MockEndpoint.class);
+ MockEndpoint mockEndpoint1 =
context.getEndpoint("mock:direct:mockStartAdvised", MockEndpoint.class);
mockEndpoint1.expectedBodiesReceived("Hello World");
MockEndpoint mockEndpoint2 =
context.getEndpoint("mock:direct:mockFoo", MockEndpoint.class);
mockEndpoint2.expectedBodiesReceived("Hello World");
@@ -68,7 +60,7 @@ public class MockResource {
MockEndpoint mockEndpoint4 = context.getEndpoint("mock:result",
MockEndpoint.class);
mockEndpoint4.expectedBodiesReceived("Bye World");
- producerTemplate.sendBody("direct:mockStart", "Hello World");
+ producerTemplate.sendBody("direct:mockStartAdvised", "Hello World");
mockEndpoint1.assertIsSatisfied();
mockEndpoint2.assertIsSatisfied();
@@ -76,12 +68,12 @@ public class MockResource {
mockEndpoint4.assertIsSatisfied();
// test to ensure correct endpoints in registry
- Assert.assertNotNull(context.hasEndpoint("direct:mockStart"));
+ Assert.assertNotNull(context.hasEndpoint("direct:mockStartAdvised"));
Assert.assertNotNull(context.hasEndpoint("direct:mockFoo"));
Assert.assertNotNull(context.hasEndpoint("log:mockFoo"));
Assert.assertNotNull(context.hasEndpoint("mock:result"));
// all the endpoints was mocked
- Assert.assertNotNull(context.hasEndpoint("mock:direct:mockStart"));
+
Assert.assertNotNull(context.hasEndpoint("mock:direct:mockStartAdvised"));
Assert.assertNotNull(context.hasEndpoint("mock:direct:mockFoo"));
Assert.assertNotNull(context.hasEndpoint("mock:log:mockFoo"));
}
@@ -107,4 +99,11 @@ public class MockResource {
return producerTemplate.requestBody("direct:" + route, message,
String.class);
}
+ public static class RouteAdvisor extends AdviceWithRouteBuilder {
+ @Override
+ public void configure() throws Exception {
+ replaceFromWith("direct:mockStartAdvised");
+ mockEndpoints("direct:mock.*", "log:mock.*");
+ }
+ }
}