You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2021/04/26 12:06:03 UTC

[camel-quarkus] 04/06: Upgrade to Quarkus 2.0.0.Alpha1

This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit ed3a2c3d8f44af1c3351d8f9087bb4db49923e9b
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Apr 21 15:59:48 2021 +0200

    Upgrade to Quarkus 2.0.0.Alpha1
---
 docs/antora.yml                                    |  2 +-
 .../camel/quarkus/core/CamelContextRecorder.java   |  2 +
 .../quarkus/core/CamelQuarkusClassResolver.java    | 99 ++++++++++++++++++++++
 .../camel/quarkus/core/FastCamelContext.java       |  3 +-
 .../org/apache/camel/quarkus/main/CamelMain.java   |  4 +-
 .../component/minio/it/MinioClientProducer.java    |  2 +-
 .../component/minio/it/MinioConfigProvider.java    |  6 ++
 .../vertx/kafka/it/VertxKafkaProducers.java        |  3 +-
 pom.xml                                            |  8 +-
 poms/bom/pom.xml                                   | 10 +++
 10 files changed, 130 insertions(+), 9 deletions(-)

diff --git a/docs/antora.yml b/docs/antora.yml
index 80e9fcf..8863269 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -24,4 +24,4 @@ asciidoc:
   attributes:
     cq-camel-components: 3.10.x@components # replace ${camel.docs.components.xref}
     min-maven-version: 3.6.2 # replace ${min-maven-version}
-    quarkus-version: 1.13.2.Final # replace ${quarkus.version}
\ No newline at end of file
+    quarkus-version: 2.0.0.Alpha1 # replace ${quarkus.version}
\ No newline at end of file
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java
index c73e8f7..f8cb34c 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java
@@ -56,6 +56,8 @@ public class CamelContextRecorder {
         context.setLoadTypeConverters(false);
         context.setModelJAXBContextFactory(contextFactory.getValue());
         context.adapt(ExtendedCamelContext.class).setStartupStepRecorder(startupStepRecorder.getValue());
+        final ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        context.setApplicationContextClassLoader(tccl);
         context.build();
         context.addLifecycleStrategy(new CamelLifecycleEventBridge());
         context.getManagementStrategy().addEventNotifier(new CamelManagementEventBridge());
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelQuarkusClassResolver.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelQuarkusClassResolver.java
new file mode 100644
index 0000000..361763c
--- /dev/null
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelQuarkusClassResolver.java
@@ -0,0 +1,99 @@
+package org.apache.camel.quarkus.core;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
+
+import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.util.CastUtils;
+import org.apache.camel.util.ObjectHelper;
+
+public class CamelQuarkusClassResolver implements ClassResolver {
+
+    private final ClassLoader applicationContextClassLoader;
+
+    public CamelQuarkusClassResolver(ClassLoader applicationContextClassLoader) {
+        this.applicationContextClassLoader = applicationContextClassLoader;
+    }
+
+    @Override
+    public Class<?> resolveClass(String name) {
+        return loadClass(name, applicationContextClassLoader);
+    }
+
+    @Override
+    public <T> Class<T> resolveClass(String name, Class<T> type) {
+        return CastUtils.cast(loadClass(name, applicationContextClassLoader));
+    }
+
+    @Override
+    public Class<?> resolveClass(String name, ClassLoader loader) {
+        return loadClass(name, loader);
+    }
+
+    @Override
+    public <T> Class<T> resolveClass(String name, Class<T> type, ClassLoader loader) {
+        return CastUtils.cast(loadClass(name, loader));
+    }
+
+    @Override
+    public Class<?> resolveMandatoryClass(String name) throws ClassNotFoundException {
+        Class<?> answer = resolveClass(name);
+        if (answer == null) {
+            throw new ClassNotFoundException(name);
+        }
+        return answer;
+    }
+
+    @Override
+    public <T> Class<T> resolveMandatoryClass(String name, Class<T> type) throws ClassNotFoundException {
+        Class<T> answer = resolveClass(name, type);
+        if (answer == null) {
+            throw new ClassNotFoundException(name);
+        }
+        return answer;
+    }
+
+    @Override
+    public Class<?> resolveMandatoryClass(String name, ClassLoader loader) throws ClassNotFoundException {
+        Class<?> answer = resolveClass(name, loader);
+        if (answer == null) {
+            throw new ClassNotFoundException(name);
+        }
+        return answer;
+    }
+
+    @Override
+    public <T> Class<T> resolveMandatoryClass(String name, Class<T> type, ClassLoader loader) throws ClassNotFoundException {
+        Class<T> answer = resolveClass(name, type, loader);
+        if (answer == null) {
+            throw new ClassNotFoundException(name);
+        }
+        return answer;
+    }
+
+    @Override
+    public InputStream loadResourceAsStream(String uri) {
+        return ObjectHelper.loadResourceAsStream(uri, applicationContextClassLoader);
+    }
+
+    @Override
+    public URL loadResourceAsURL(String uri) {
+        return ObjectHelper.loadResourceAsURL(uri, applicationContextClassLoader);
+    }
+
+    @Override
+    public Enumeration<URL> loadResourcesAsURL(String uri) {
+        return loadAllResourcesAsURL(uri);
+    }
+
+    @Override
+    public Enumeration<URL> loadAllResourcesAsURL(String uri) {
+        return ObjectHelper.loadResourcesAsURL(uri);
+    }
+
+    protected Class<?> loadClass(String name, ClassLoader loader) {
+        return ObjectHelper.loadClass(name, loader);
+    }
+
+}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 992028d..ea8d7ac 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -21,6 +21,7 @@ import java.io.InputStream;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.function.Function;
@@ -298,7 +299,7 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
     @Override
     protected ClassResolver createClassResolver() {
-        return new DefaultClassResolver(this);
+        return new CamelQuarkusClassResolver(Objects.requireNonNull(getApplicationContextClassLoader(), "applicationContextClassLoader must be set before calling createClassResolver()"));
     }
 
     @Override
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
index 6078f35..579e668 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
@@ -121,11 +121,11 @@ public final class CamelMain extends MainCommandLineSupport implements HasCamelC
         throw new IllegalStateException("Should not be invoked");
     }
 
-    Collection<MainListener> getMainListeners() {
+    public Collection<MainListener> getMainListeners() {
         return Collections.unmodifiableCollection(listeners);
     }
 
-    MainConfigurationProperties getMainConfigurationProperties() {
+    public MainConfigurationProperties getMainConfigurationProperties() {
         return mainConfigurationProperties;
     }
 
diff --git a/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioClientProducer.java b/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioClientProducer.java
index d3ea59d..74fe08f 100644
--- a/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioClientProducer.java
+++ b/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioClientProducer.java
@@ -17,8 +17,8 @@
 package org.apache.camel.quarkus.component.minio.it;
 
 import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
 import javax.inject.Named;
-import javax.ws.rs.Produces;
 
 import io.minio.MinioClient;
 
diff --git a/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioConfigProvider.java b/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioConfigProvider.java
index 809a7d4..496cc29 100644
--- a/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioConfigProvider.java
+++ b/integration-tests/minio/src/main/java/org/apache/camel/quarkus/component/minio/it/MinioConfigProvider.java
@@ -19,6 +19,7 @@ package org.apache.camel.quarkus.component.minio.it;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 import org.eclipse.microprofile.config.spi.ConfigSource;
 import org.eclipse.microprofile.config.spi.ConfigSourceProvider;
@@ -57,5 +58,10 @@ public class MinioConfigProvider implements ConfigSourceProvider {
         public String getName() {
             return MinioConfig.class.getName();
         }
+
+        @Override
+        public Set<String> getPropertyNames() {
+            return values.keySet();
+        }
     }
 }
diff --git a/integration-tests/vertx-kafka/src/main/java/org/apache/camel/quarkus/component/vertx/kafka/it/VertxKafkaProducers.java b/integration-tests/vertx-kafka/src/main/java/org/apache/camel/quarkus/component/vertx/kafka/it/VertxKafkaProducers.java
index 4ad0be0..6674b85 100644
--- a/integration-tests/vertx-kafka/src/main/java/org/apache/camel/quarkus/component/vertx/kafka/it/VertxKafkaProducers.java
+++ b/integration-tests/vertx-kafka/src/main/java/org/apache/camel/quarkus/component/vertx/kafka/it/VertxKafkaProducers.java
@@ -52,7 +52,8 @@ public class VertxKafkaProducers {
         config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
 
         KafkaConsumer<String, String> consumer = KafkaConsumer.create(vertx, config);
-        return consumer.subscribe(TOPIC_OUTBOUND);
+        consumer.subscribe(TOPIC_OUTBOUND);
+        return consumer;
     }
 
     @Produces
diff --git a/pom.xml b/pom.xml
index db770cc..fdb12d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,20 +94,22 @@
         <json-smart.version>2.4.2</json-smart.version>
         <kafka.version>2.5.0</kafka.version>
         <kudu.version>${kudu-version}</kudu.version><!-- keep in sync with Camel -->
-        <kotlin.version>1.4.31</kotlin.version><!-- keep in sync with Quarkus -->
+        <kotlin.version>1.4.32</kotlin.version><!-- keep in sync with Quarkus -->
         <netty3.version>${netty3-version}</netty3.version><!-- Spark -->
         <mvel2.version>${mvel-version}</mvel2.version><!-- keep in sync with Camel and Optaplanner -->
         <nimbus-jose-jwt.version>4.41.1</nimbus-jose-jwt.version><!-- Mess in hdfs transitive deps -->
         <okhttp.version>${squareup-okhttp-version}</okhttp.version><!-- keep in sync with okio -->
         <okio.version>${squareup-okio-version}</okio.version><!-- keep in sync with okhttp -->
+        <opencensus.version>0.28.0</opencensus.version><!-- mess in google-pubsub deps -->
         <optaplanner.version>8.2.0.Final</optaplanner.version>
+        <perfmark.version>0.23.0</perfmark.version><!-- mess in google-pubsub deps -->
+        <protobuf.version>${protobuf-version}</protobuf.version>
         <quarkiverse.freemarker.version>0.2.2</quarkiverse.freemarker.version>
         <quarkiverse-minio.version>0.2.2</quarkiverse-minio.version>
-        <quarkus.version>1.13.2.Final</quarkus.version>
+        <quarkus.version>2.0.0.Alpha1</quarkus.version>
         <quarkus-google-cloud.version>0.5.0</quarkus-google-cloud.version>
         <quarkus-hazelcast-client.version>1.1.1</quarkus-hazelcast-client.version>
         <quarkus-qpid-jms.version>0.24.0</quarkus-qpid-jms.version>
-        <protobuf.version>${protobuf-version}</protobuf.version>
         <retrofit.version>2.5.0</retrofit.version>
         <scala-2.11.version>2.11.12</scala-2.11.version><!-- Spark -->
         <smallrye.reactive.messaging.camel.version>2.9.0</smallrye.reactive.messaging.camel.version> <!-- keep in sync with Quarkus SmallRye Reactive Messaging -->
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index f510aa1..2f36a15 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -5754,6 +5754,16 @@
                 <version>${debezium.version}</version>
             </dependency>
             <dependency>
+                <groupId>io.opencensus</groupId>
+                <artifactId>opencensus-api</artifactId>
+                <version>${opencensus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.perfmark</groupId>
+                <artifactId>perfmark-api</artifactId>
+                <version>${perfmark.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>io.quarkiverse.freemarker</groupId>
                 <artifactId>quarkus-freemarker</artifactId>
                 <version>${quarkiverse.freemarker.version}</version>