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 2022/09/05 09:09:57 UTC
[camel-quarkus] branch quarkus-main updated (262153d423 -> 3d78078962)
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a change to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
discard 262153d423 Restore named DataSource autowiring for SQL extension
discard 4ccf453a3d Upgrade Quarkus to 2.13.0.CR1
new ef42236912 Upgrade Quarkus to 2.13.0.CR1
new 3d78078962 Restore named DataSource autowiring for SQL extension
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (262153d423)
\
N -- N -- N refs/heads/quarkus-main (3d78078962)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
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:
.../camel/quarkus/component/csimple/deployment/CSimpleProcessor.java | 1 +
1 file changed, 1 insertion(+)
[camel-quarkus] 01/02: Upgrade Quarkus to 2.13.0.CR1
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit ef42236912edb3d1031caa9841b1793603fbed80
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Aug 19 07:40:15 2022 +0100
Upgrade Quarkus to 2.13.0.CR1
---
docs/antora.yml | 2 +-
extensions/avro-rpc/runtime/pom.xml | 5 --
.../avro/rpc/GenericDatumReaderSubstitute.java | 56 ----------------------
.../csimple/deployment/CSimpleProcessor.java | 1 +
pom.xml | 6 +--
poms/bom/src/main/generated/flattened-full-pom.xml | 4 +-
.../src/main/generated/flattened-reduced-pom.xml | 4 +-
.../generated/flattened-reduced-verbose-pom.xml | 4 +-
8 files changed, 11 insertions(+), 71 deletions(-)
diff --git a/docs/antora.yml b/docs/antora.yml
index 79ad960d4c..33197c8d7b 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -31,7 +31,7 @@ asciidoc:
target-maven-version: 3.8.6 # replace ${target-maven-version}
camel-version: 3.18.1 # replace ${camel.version}
camel-docs-version: 3.18.x # replace ${camel.docs.components.version}
- quarkus-version: 2.12.0.Final # replace ${quarkus.version}
+ quarkus-version: 999-SNAPSHOT # replace ${quarkus.version}
graalvm-version: 22.2.0 # replace ${graalvm.version}
graalvm-docs-version: 22.2
# attributes used in xrefs to other Antora components
diff --git a/extensions/avro-rpc/runtime/pom.xml b/extensions/avro-rpc/runtime/pom.xml
index a5386b501b..5c47032397 100644
--- a/extensions/avro-rpc/runtime/pom.xml
+++ b/extensions/avro-rpc/runtime/pom.xml
@@ -64,11 +64,6 @@
<groupId>org.apache.avro</groupId>
<artifactId>avro-ipc-netty</artifactId>
</dependency>
- <dependency>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>svm</artifactId>
- <scope>provided</scope>
- </dependency>
</dependencies>
<build>
diff --git a/extensions/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/rpc/GenericDatumReaderSubstitute.java b/extensions/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/rpc/GenericDatumReaderSubstitute.java
deleted file mode 100644
index 5ecb7c54f8..0000000000
--- a/extensions/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/rpc/GenericDatumReaderSubstitute.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.
- */
-package org.apache.camel.quarkus.component.avro.rpc;
-
-import java.util.IdentityHashMap;
-import java.util.Map;
-
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.Inject;
-import com.oracle.svm.core.annotate.RecomputeFieldValue;
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
-import org.apache.avro.Schema;
-import org.apache.avro.generic.GenericDatumReader;
-
-@TargetClass(value = GenericDatumReader.class)
-public final class GenericDatumReaderSubstitute {
-
- @Inject
- @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset)
- private Map<Schema, Class> stringClassCache;
-
- @Alias
- protected Class findStringClass(Schema schema) {
- return null;
- }
-
- @Substitute
- private Class getStringClass(Schema s) {
- if (stringClassCache == null) {
- stringClassCache = new IdentityHashMap<>();
- }
-
- Class c = stringClassCache.get(s);
-
- if (c == null) {
- c = findStringClass(s);
- stringClassCache.put(s, c);
- }
- return c;
- }
-}
diff --git a/extensions/csimple/deployment/src/main/java/org/apache/camel/quarkus/component/csimple/deployment/CSimpleProcessor.java b/extensions/csimple/deployment/src/main/java/org/apache/camel/quarkus/component/csimple/deployment/CSimpleProcessor.java
index 80e6714ab0..ccae73bd9e 100644
--- a/extensions/csimple/deployment/src/main/java/org/apache/camel/quarkus/component/csimple/deployment/CSimpleProcessor.java
+++ b/extensions/csimple/deployment/src/main/java/org/apache/camel/quarkus/component/csimple/deployment/CSimpleProcessor.java
@@ -308,6 +308,7 @@ class CSimpleProcessor {
return new CompilationProvider.Context(
"csimple-project",
classPathElements,
+ classPathElements,
projectDir.toFile(),
projectDir.resolve("src/main/java").toFile(),
csimpleClassesDir.toFile(),
diff --git a/pom.xml b/pom.xml
index 26766b99b1..70ac77d6b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,7 @@
<quarkiverse-minio.version>2.9.1</quarkiverse-minio.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/minio/quarkus-minio-parent/ -->
<quarkiverse-mybatis.version>1.0.4</quarkiverse-mybatis.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/mybatis/quarkus-mybatis-parent/ -->
<quarkiverse-tika.version>1.0.3</quarkiverse-tika.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/tika/quarkus-tika-parent/ -->
- <quarkus.version>2.12.0.Final</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
+ <quarkus.version>999-SNAPSHOT</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
<quarkus-hazelcast-client.version>3.0.0</quarkus-hazelcast-client.version><!-- https://repo1.maven.org/maven2/com/hazelcast/quarkus-hazelcast-client-bom/ -->
<quarkus-qpid-jms.version>0.36.0</quarkus-qpid-jms.version><!-- https://repo1.maven.org/maven2/org/amqphub/quarkus/quarkus-qpid-jms-bom/ -->
@@ -67,7 +67,7 @@
<ahc.version>${ahc-version}</ahc.version>
<animal-sniffer.version>1.18</animal-sniffer.version>
<antlr3.version>3.5.2</antlr3.version><!-- Spark, Stringtemplate and probably others -->
- <avro.version>1.11.0</avro.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.apache.avro:avro -->
+ <avro.version>1.11.1</avro.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.apache.avro:avro -->
<awssdk.version>2.17.220</awssdk.version><!-- @sync io.quarkiverse.amazonservices:quarkus-amazon-services-parent:${quarkiverse-amazonservices.version} prop:awssdk.version -->
<assertj.version>3.23.1</assertj.version><!-- @sync io.quarkus:quarkus-build-parent:${quarkus.version} prop:assertj.version -->
<aws-java-sdk.version>1.11.714</aws-java-sdk.version>
@@ -92,7 +92,7 @@
<github-api.version>1.111</github-api.version><!-- Used in a Groovy script bellow -->
<google-auth-library-credentials.version>1.7.0</google-auth-library-credentials.version><!-- TODO: Revert back to using Camel's version when gRPC versions are in sync -->
<graalvm.version>22.2.0</graalvm.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.graalvm.sdk:graal-sdk -->
- <grpc.version>1.48.1</grpc.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.grpc:grpc-core -->
+ <grpc.version>1.49.0</grpc.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.grpc:grpc-core -->
<hapi.version>${hapi-version}</hapi.version>
<hapi-fhir.version>${hapi-fhir-version}</hapi-fhir.version>
<hbase.version>${hbase-version}</hbase.version>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index 822cc08a13..eaf46e1e8b 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -9984,12 +9984,12 @@
<dependency>
<groupId>org.apache.avro</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>avro-ipc-jetty</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- <version>1.11.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>1.11.1</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</dependency>
<dependency>
<groupId>org.apache.avro</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>avro-ipc-netty</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- <version>1.11.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>1.11.1</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<exclusions>
<exclusion>
<groupId>javax.annotation</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index d52bf4d492..7363a8b46c 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -9984,12 +9984,12 @@
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-ipc-jetty</artifactId>
- <version>1.11.0</version>
+ <version>1.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-ipc-netty</artifactId>
- <version>1.11.0</version>
+ <version>1.11.1</version>
<exclusions>
<exclusion>
<groupId>javax.annotation</groupId>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index 8b2eaee916..7c4484fcee 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -9984,12 +9984,12 @@
<dependency>
<groupId>org.apache.avro</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>avro-ipc-jetty</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- <version>1.11.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>1.11.1</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</dependency>
<dependency>
<groupId>org.apache.avro</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>avro-ipc-netty</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- <version>1.11.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>1.11.1</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<exclusions>
<exclusion>
<groupId>javax.annotation</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
[camel-quarkus] 02/02: Restore named DataSource autowiring for SQL extension
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 3d780789622a4f5ab1410d1506dc2db4f7d600e6
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Sep 2 15:39:09 2022 +0100
Restore named DataSource autowiring for SQL extension
---
.../core/deployment/CamelRegistryProcessor.java | 17 +++++++-
.../spi/CamelBeanQualifierResolverBuildItem.java | 46 ++++++++++++++++++++++
...gistry.java => CamelBeanQualifierResolver.java} | 19 +++------
.../apache/camel/quarkus/core/CamelRecorder.java | 17 +++++++-
.../camel/quarkus/core/RuntimeBeanRepository.java | 18 ++++++++-
.../apache/camel/quarkus/core/RuntimeRegistry.java | 6 ++-
.../component/sql/deployment/SqlProcessor.java | 32 +++++++++++++++
.../quarkus/component/sql/CamelSqlRecorder.java | 27 +++++++------
8 files changed, 150 insertions(+), 32 deletions(-)
diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryProcessor.java
index d27028eeb8..a9be5e7e26 100644
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryProcessor.java
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryProcessor.java
@@ -16,15 +16,19 @@
*/
package org.apache.camel.quarkus.core.deployment;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem;
+import org.apache.camel.quarkus.core.CamelBeanQualifierResolver;
import org.apache.camel.quarkus.core.CamelConfig;
import org.apache.camel.quarkus.core.CamelRecorder;
import org.apache.camel.quarkus.core.deployment.spi.CamelBeanBuildItem;
+import org.apache.camel.quarkus.core.deployment.spi.CamelBeanQualifierResolverBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelContextBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelRegistryBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBeanBuildItem;
@@ -43,8 +47,17 @@ public class CamelRegistryProcessor {
@Record(ExecutionTime.STATIC_INIT)
@BuildStep
- CamelRegistryBuildItem registry(CamelRecorder recorder) {
- return new CamelRegistryBuildItem(recorder.createRegistry());
+ CamelRegistryBuildItem registry(
+ List<CamelBeanQualifierResolverBuildItem> camelBeanQualifierResolvers,
+ CamelRecorder recorder) {
+
+ Map<String, CamelBeanQualifierResolver> beanQualifierResolvers = new HashMap<>();
+ for (CamelBeanQualifierResolverBuildItem resolver : camelBeanQualifierResolvers) {
+ recorder.registerCamelBeanQualifierResolver(resolver.getBeanTypeName(), resolver.getRuntimeValue(),
+ beanQualifierResolvers);
+ }
+
+ return new CamelRegistryBuildItem(recorder.createRegistry(beanQualifierResolvers));
}
@Record(ExecutionTime.STATIC_INIT)
diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelBeanQualifierResolverBuildItem.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelBeanQualifierResolverBuildItem.java
new file mode 100644
index 0000000000..7d9e96b0b9
--- /dev/null
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/spi/CamelBeanQualifierResolverBuildItem.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.camel.quarkus.core.deployment.spi;
+
+import io.quarkus.builder.item.MultiBuildItem;
+import io.quarkus.runtime.RuntimeValue;
+import org.apache.camel.quarkus.core.CamelBeanQualifierResolver;
+
+/**
+ * Holds a {@link CamelBeanQualifierResolver} for a specified bean type.
+ */
+public final class CamelBeanQualifierResolverBuildItem extends MultiBuildItem {
+ private final RuntimeValue<CamelBeanQualifierResolver> runtimeValue;
+ private final Class<?> beanType;
+
+ public CamelBeanQualifierResolverBuildItem(Class<?> beanType, RuntimeValue<CamelBeanQualifierResolver> runtimeValue) {
+ this.beanType = beanType;
+ this.runtimeValue = runtimeValue;
+ }
+
+ public Class<?> getBeanType() {
+ return beanType;
+ }
+
+ public String getBeanTypeName() {
+ return beanType.getName();
+ }
+
+ public RuntimeValue<CamelBeanQualifierResolver> getRuntimeValue() {
+ return runtimeValue;
+ }
+}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBeanQualifierResolver.java
similarity index 67%
copy from extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
copy to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBeanQualifierResolver.java
index 6a89ba2b3c..c8d7cc5330 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelBeanQualifierResolver.java
@@ -16,18 +16,11 @@
*/
package org.apache.camel.quarkus.core;
-import io.quarkus.runtime.RuntimeValue;
-import org.apache.camel.support.DefaultRegistry;
+import java.lang.annotation.Annotation;
-public class RuntimeRegistry extends DefaultRegistry {
- public RuntimeRegistry() {
- super(new RuntimeBeanRepository());
- }
-
- @Override
- public Object unwrap(Object value) {
- return (value instanceof RuntimeValue)
- ? ((RuntimeValue<?>) value).getValue()
- : value;
- }
+/**
+ * Abstraction for resolving bean annotation qualifiers
+ */
+public interface CamelBeanQualifierResolver {
+ Annotation[] resolveQualifiers();
}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
index 67b16da1e9..d1217cb673 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.quarkus.core;
+import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
@@ -47,8 +48,20 @@ import org.apache.camel.support.startup.DefaultStartupStepRecorder;
@Recorder
public class CamelRecorder {
- public RuntimeValue<Registry> createRegistry() {
- return new RuntimeValue<>(new RuntimeRegistry());
+ public void registerCamelBeanQualifierResolver(
+ String className,
+ RuntimeValue<CamelBeanQualifierResolver> runtimeValue,
+ Map<String, CamelBeanQualifierResolver> beanQualifiers) {
+
+ if (beanQualifiers.containsKey(className)) {
+ throw new RuntimeException("Duplicate CamelBeanQualifierResolver detected for class: " + className);
+ }
+
+ beanQualifiers.put(className, runtimeValue.getValue());
+ }
+
+ public RuntimeValue<Registry> createRegistry(Map<String, CamelBeanQualifierResolver> beanQualifierResolvers) {
+ return new RuntimeValue<>(new RuntimeRegistry(beanQualifierResolvers));
}
public RuntimeValue<TypeConverterRegistry> createTypeConverterRegistry() {
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
index 934cb22ae0..e191e55df7 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
@@ -34,6 +34,12 @@ import org.apache.camel.spi.BeanRepository;
public final class RuntimeBeanRepository implements BeanRepository {
+ private final Map<String, CamelBeanQualifierResolver> beanQualifierResolvers;
+
+ public RuntimeBeanRepository(Map<String, CamelBeanQualifierResolver> beanQualifierResolvers) {
+ this.beanQualifierResolvers = beanQualifierResolvers;
+ }
+
private static <T> Set<Bean<? extends T>> resolveAmbiguity(BeanManager manager, Set<Bean<? extends T>> beans) {
if (beans.size() > 1) {
try {
@@ -111,13 +117,21 @@ public final class RuntimeBeanRepository implements BeanRepository {
@Override
public <T> Map<String, T> findByTypeWithName(Class<T> type) {
- return getReferencesByTypeWithName(type);
+ return getReferencesByTypeWithName(type, resolveQualifiersForType(type));
}
@Override
public <T> Set<T> findByType(Class<T> type) {
return getBeanManager()
- .map(manager -> getReferencesByType(manager, type))
+ .map(manager -> getReferencesByType(manager, type, resolveQualifiersForType(type)))
.orElseGet(Collections::emptySet);
}
+
+ private Annotation[] resolveQualifiersForType(Class<?> type) {
+ CamelBeanQualifierResolver resolver = beanQualifierResolvers.get(type.getName());
+ if (resolver != null) {
+ return resolver.resolveQualifiers();
+ }
+ return null;
+ }
}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
index 6a89ba2b3c..3f547bd290 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
@@ -16,12 +16,14 @@
*/
package org.apache.camel.quarkus.core;
+import java.util.Map;
+
import io.quarkus.runtime.RuntimeValue;
import org.apache.camel.support.DefaultRegistry;
public class RuntimeRegistry extends DefaultRegistry {
- public RuntimeRegistry() {
- super(new RuntimeBeanRepository());
+ public RuntimeRegistry(Map<String, CamelBeanQualifierResolver> beanQualifierResolvers) {
+ super(new RuntimeBeanRepository(beanQualifierResolvers));
}
@Override
diff --git a/extensions/sql/deployment/src/main/java/org/apache/camel/quarkus/component/sql/deployment/SqlProcessor.java b/extensions/sql/deployment/src/main/java/org/apache/camel/quarkus/component/sql/deployment/SqlProcessor.java
index 571b2d9e8a..ff45dd658f 100644
--- a/extensions/sql/deployment/src/main/java/org/apache/camel/quarkus/component/sql/deployment/SqlProcessor.java
+++ b/extensions/sql/deployment/src/main/java/org/apache/camel/quarkus/component/sql/deployment/SqlProcessor.java
@@ -18,11 +18,21 @@ package org.apache.camel.quarkus.component.sql.deployment;
import java.sql.Types;
import java.util.LinkedHashMap;
+import java.util.List;
+import javax.sql.DataSource;
+
+import io.quarkus.agroal.spi.JdbcDataSourceBuildItem;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.runtime.RuntimeValue;
+import org.apache.camel.quarkus.component.sql.CamelSqlRecorder;
+import org.apache.camel.quarkus.core.CamelBeanQualifierResolver;
+import org.apache.camel.quarkus.core.deployment.spi.CamelBeanQualifierResolverBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelSerializationBuildItem;
import org.apache.camel.support.DefaultExchangeHolder;
@@ -45,4 +55,26 @@ class SqlProcessor {
reflectiveClass.produce(new ReflectiveClassBuildItem(false, true, Types.class, DefaultExchangeHolder.class));
reflectiveClass.produce(ReflectiveClassBuildItem.serializationClass(LinkedHashMap.class.getName()));
}
+
+ @Record(ExecutionTime.STATIC_INIT)
+ @BuildStep
+ void registerNamedDataSourceCamelBeanQualifierResolver(
+ List<JdbcDataSourceBuildItem> dataSources,
+ BuildProducer<CamelBeanQualifierResolverBuildItem> camelBeanQualifierResolver,
+ CamelSqlRecorder recorder) {
+
+ // If there are multiple DataSource configs, then users need to explicitly state which one to use
+ // via their component / endpoint configuration. Otherwise if there is just 1 and it is not the default DataSource,
+ // we can create a resolver for DataSourceLiteral and make named DataSource autowiring work as expected
+ if (dataSources.size() == 1) {
+ JdbcDataSourceBuildItem dataSource = dataSources.get(0);
+ if (!dataSource.isDefault()) {
+ RuntimeValue<CamelBeanQualifierResolver> runtimeValue = recorder
+ .createDataSourceQualifierResolver(dataSource.getName());
+ CamelBeanQualifierResolverBuildItem beanQualifierResolver = new CamelBeanQualifierResolverBuildItem(
+ DataSource.class, runtimeValue);
+ camelBeanQualifierResolver.produce(beanQualifierResolver);
+ }
+ }
+ }
}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java b/extensions/sql/runtime/src/main/java/org/apache/camel/quarkus/component/sql/CamelSqlRecorder.java
similarity index 53%
copy from extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
copy to extensions/sql/runtime/src/main/java/org/apache/camel/quarkus/component/sql/CamelSqlRecorder.java
index 6a89ba2b3c..a011724be0 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeRegistry.java
+++ b/extensions/sql/runtime/src/main/java/org/apache/camel/quarkus/component/sql/CamelSqlRecorder.java
@@ -14,20 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.core;
+package org.apache.camel.quarkus.component.sql;
+import java.lang.annotation.Annotation;
+
+import io.quarkus.agroal.DataSource;
import io.quarkus.runtime.RuntimeValue;
-import org.apache.camel.support.DefaultRegistry;
+import io.quarkus.runtime.annotations.Recorder;
+import org.apache.camel.quarkus.core.CamelBeanQualifierResolver;
-public class RuntimeRegistry extends DefaultRegistry {
- public RuntimeRegistry() {
- super(new RuntimeBeanRepository());
- }
+@Recorder
+public class CamelSqlRecorder {
+ public RuntimeValue<CamelBeanQualifierResolver> createDataSourceQualifierResolver(String dataSourceName) {
+ return new RuntimeValue<>(new CamelBeanQualifierResolver() {
+ final DataSource.DataSourceLiteral datasourceLiteral = new DataSource.DataSourceLiteral(dataSourceName);
- @Override
- public Object unwrap(Object value) {
- return (value instanceof RuntimeValue)
- ? ((RuntimeValue<?>) value).getValue()
- : value;
+ @Override
+ public Annotation[] resolveQualifiers() {
+ return new Annotation[] { datasourceLiteral };
+ }
+ });
}
}