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/08/23 13:49:52 UTC
[camel-quarkus] branch main updated: Populate FastComponentNameResolver component names from included component service paths
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 89fcb6dc69 Populate FastComponentNameResolver component names from included component service paths
89fcb6dc69 is described below
commit 89fcb6dc694ead4df418148e018a677a0bd857d9
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Aug 23 08:35:46 2023 +0100
Populate FastComponentNameResolver component names from included component service paths
Fixes #5214
---
.../quarkus/core/deployment/CamelProcessor.java | 22 +++++++++++-----------
.../foundation/component-name-resolver/pom.xml | 17 +++++++++++++++++
.../src/main/resources/application.properties | 18 ++++++++++++++++++
.../name/resolver/ComponentNameResolverTest.java | 8 ++++++--
integration-tests/foundation-grouped/pom.xml | 17 +++++++++++++++++
5 files changed, 69 insertions(+), 13 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 d119331488..38de8686c4 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
@@ -54,10 +54,6 @@ import org.apache.camel.quarkus.core.CamelConfigFlags;
import org.apache.camel.quarkus.core.CamelProducers;
import org.apache.camel.quarkus.core.CamelRecorder;
import org.apache.camel.quarkus.core.FastFactoryFinderResolver.Builder;
-import org.apache.camel.quarkus.core.deployment.catalog.BuildTimeCamelCatalog;
-import org.apache.camel.quarkus.core.deployment.catalog.BuildTimeJsonSchemaResolver;
-import org.apache.camel.quarkus.core.deployment.catalog.SchemaResource;
-import org.apache.camel.quarkus.core.deployment.spi.BuildTimeCamelCatalogBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelComponentNameResolverBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelFactoryFinderResolverBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelModelJAXBContextFactoryBuildItem;
@@ -399,15 +395,19 @@ class CamelProcessor {
@Record(ExecutionTime.STATIC_INIT)
@BuildStep
CamelComponentNameResolverBuildItem componentNameResolver(
- BuildTimeCamelCatalogBuildItem camelCatalog,
+ ApplicationArchivesBuildItem applicationArchives,
+ CamelConfig camelConfig,
CamelRecorder recorder) {
- BuildTimeCamelCatalog catalog = camelCatalog.getCatalog();
- BuildTimeJsonSchemaResolver jSonSchemaResolver = catalog.getJSonSchemaResolver();
- Set<String> componentNames = jSonSchemaResolver.getSchemaResources()
- .stream()
- .filter(resource -> resource.getType().equals("component"))
- .map(SchemaResource::getName)
+
+ PathFilter pathFilter = new PathFilter.Builder()
+ .include("META-INF/services/org/apache/camel/component/*")
+ .exclude(camelConfig.service.registry.excludePatterns)
+ .build();
+
+ Set<String> componentNames = CamelSupport.services(applicationArchives, pathFilter)
+ .map(CamelServiceBuildItem::getName)
.collect(Collectors.collectingAndThen(Collectors.toUnmodifiableSet(), TreeSet::new));
+
return new CamelComponentNameResolverBuildItem(recorder.createComponentNameResolver(componentNames));
}
diff --git a/integration-test-groups/foundation/component-name-resolver/pom.xml b/integration-test-groups/foundation/component-name-resolver/pom.xml
index 2e1cbf7b03..77f43db781 100644
--- a/integration-test-groups/foundation/component-name-resolver/pom.xml
+++ b/integration-test-groups/foundation/component-name-resolver/pom.xml
@@ -42,6 +42,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-mock</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-cron</artifactId>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
@@ -97,6 +101,19 @@
</activation>
<dependencies>
<!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-cron-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-direct-deployment</artifactId>
diff --git a/integration-test-groups/foundation/component-name-resolver/src/main/resources/application.properties b/integration-test-groups/foundation/component-name-resolver/src/main/resources/application.properties
new file mode 100644
index 0000000000..05db67f567
--- /dev/null
+++ b/integration-test-groups/foundation/component-name-resolver/src/main/resources/application.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+quarkus.camel.service.registry.exclude-patterns=META-INF/services/org/apache/camel/component/cron
diff --git a/integration-test-groups/foundation/component-name-resolver/src/test/java/org/apache/camel/quarkus/core/component/name/resolver/ComponentNameResolverTest.java b/integration-test-groups/foundation/component-name-resolver/src/test/java/org/apache/camel/quarkus/core/component/name/resolver/ComponentNameResolverTest.java
index 6402d1473d..c6f40ef392 100644
--- a/integration-test-groups/foundation/component-name-resolver/src/test/java/org/apache/camel/quarkus/core/component/name/resolver/ComponentNameResolverTest.java
+++ b/integration-test-groups/foundation/component-name-resolver/src/test/java/org/apache/camel/quarkus/core/component/name/resolver/ComponentNameResolverTest.java
@@ -16,13 +16,15 @@
*/
package org.apache.camel.quarkus.core.component.name.resolver;
+import java.util.List;
+
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import org.apache.camel.quarkus.core.FastComponentNameResolver;
import org.junit.jupiter.api.Test;
-import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@QuarkusTest
@@ -38,15 +40,17 @@ public class ComponentNameResolverTest {
@Test
public void resolveComponentNames() {
- String componentNames = RestAssured.get("/component-name-resolver/resolve")
+ String rawComponentNames = RestAssured.get("/component-name-resolver/resolve")
.then()
.statusCode(200)
.extract()
.body()
.asString();
+ List<String> componentNames = List.of(rawComponentNames.split(","));
assertTrue(componentNames.contains("direct"));
assertTrue(componentNames.contains("log"));
assertTrue(componentNames.contains("mock"));
+ assertFalse(componentNames.contains("cron"));
}
}
diff --git a/integration-tests/foundation-grouped/pom.xml b/integration-tests/foundation-grouped/pom.xml
index 01c2d3633a..104bf7a858 100644
--- a/integration-tests/foundation-grouped/pom.xml
+++ b/integration-tests/foundation-grouped/pom.xml
@@ -68,6 +68,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-cron</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-dataset</artifactId>
@@ -305,6 +309,19 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-cron-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-dataset-deployment</artifactId>