Move reactor-netty related build steps to a separate support extension
diff --git a/catalog/pom.xml b/catalog/pom.xml
index 8caf3c6..f9edefc 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -3728,6 +3728,19 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty</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-support-retrofit</artifactId>
<version>${project.version}</version>
<type>pom</type>
diff --git a/extensions-support/pom.xml b/extensions-support/pom.xml
index ae8fb8c..53be603 100644
--- a/extensions-support/pom.xml
+++ b/extensions-support/pom.xml
@@ -47,6 +47,7 @@
<module>jetty</module>
<module>mail</module>
<module>mongodb</module>
+ <module>reactor-netty</module>
<module>retrofit</module>
<module>spring</module>
<module>webhook</module>
diff --git a/extensions-support/reactor-netty/deployment/pom.xml b/extensions-support/reactor-netty/deployment/pom.xml
new file mode 100644
index 0000000..34eba52
--- /dev/null
+++ b/extensions-support/reactor-netty/deployment/pom.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty-parent</artifactId>
+ <version>1.7.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-support-reactor-netty-deployment</artifactId>
+ <name>Camel Quarkus :: Support :: Reactor Netty :: Deployment</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-core-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-netty-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-micrometer-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-extension-processor</artifactId>
+ <version>${quarkus.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/extensions-support/reactor-netty/deployment/src/main/java/org/apache/camel/quarkus/support/reactor/netty/deployment/ReactorNettySupportProcessor.java b/extensions-support/reactor-netty/deployment/src/main/java/org/apache/camel/quarkus/support/reactor/netty/deployment/ReactorNettySupportProcessor.java
new file mode 100644
index 0000000..76f4993
--- /dev/null
+++ b/extensions-support/reactor-netty/deployment/src/main/java/org/apache/camel/quarkus/support/reactor/netty/deployment/ReactorNettySupportProcessor.java
@@ -0,0 +1,53 @@
+/*
+ * 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.support.reactor.netty.deployment;
+
+import java.util.stream.Stream;
+
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
+
+public class ReactorNettySupportProcessor {
+ static final String FEATURE = "camel-support-reactor-netty";
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+
+ @BuildStep
+ void runtimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClasses) {
+ Stream.of(
+ // TODO: move these io.netty.* items to Quarkus https://github.com/apache/camel-quarkus/issues/2142
+ "io.netty.handler.ssl.OpenSsl",
+ "io.netty.internal.tcnative.SSL",
+ "io.netty.util.NetUtil",
+
+ "reactor.netty.http.client.HttpClient",
+ "reactor.netty.tcp.TcpClient",
+ "reactor.netty.resources.DefaultLoopNativeDetector",
+ "reactor.netty.resources.DefaultLoopEpoll",
+ "reactor.netty.resources.DefaultLoopKQueue",
+ "reactor.netty.resources.MicrometerPooledConnectionProviderMeterRegistrar",
+ "reactor.netty.Metrics")
+ .map(RuntimeInitializedClassBuildItem::new)
+ .forEach(runtimeInitializedClasses::produce);
+ }
+
+}
diff --git a/extensions-support/reactor-netty/pom.xml b/extensions-support/reactor-netty/pom.xml
new file mode 100644
index 0000000..32d5f1b
--- /dev/null
+++ b/extensions-support/reactor-netty/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-build-parent</artifactId>
+ <version>1.7.0-SNAPSHOT</version>
+ <relativePath>../../poms/build-parent/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-support-reactor-netty-parent</artifactId>
+ <name>Camel Quarkus :: Support :: Reactor Netty</name>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>deployment</module>
+ <module>runtime</module>
+ </modules>
+</project>
diff --git a/extensions-support/reactor-netty/runtime/pom.xml b/extensions-support/reactor-netty/runtime/pom.xml
new file mode 100644
index 0000000..7ac70d8
--- /dev/null
+++ b/extensions-support/reactor-netty/runtime/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty-parent</artifactId>
+ <version>1.7.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>camel-quarkus-support-reactor-netty</artifactId>
+ <name>Camel Quarkus :: Support :: Reactor Netty :: Runtime</name>
+
+ <properties>
+ <camel.quarkus.jvmSince>1.7.0</camel.quarkus.jvmSince>
+ <camel.quarkus.nativeSince>1.7.0</camel.quarkus.nativeSince>
+ </properties>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-bom</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-netty</artifactId>
+ </dependency>
+ <!-- As lazy as we are, we prefer not to manage reactor-netty.
+ We can afford that because our build items do not actually
+ require reactor-netty as a dependency.
+ We assume that modules that will depend on this one will have reactor-netty as a dependency
+ as a transitive dependency via azure-storage-blob or similar
+ <dependency>
+ <groupId>io.projectreactor.netty</groupId>
+ <artifactId>reactor-netty</artifactId>
+ </dependency> -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-micrometer</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-extension-processor</artifactId>
+ <version>${quarkus.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/extensions-support/reactor-netty/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-support/reactor-netty/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..da68086
--- /dev/null
+++ b/extensions-support/reactor-netty/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,27 @@
+#
+# 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.
+#
+
+---
+name: "Camel Quarkus Support Reactor Netty"
+description: "Camel Quarkus Support Reactor Netty"
+metadata:
+ unlisted: true
+ keywords:
+ - "camel"
+ guide: "https://quarkus.io/guides/camel"
+ categories:
+ - "integration"
diff --git a/extensions/azure-storage-blob/deployment/pom.xml b/extensions/azure-storage-blob/deployment/pom.xml
index 345e6b9..669a51a 100644
--- a/extensions/azure-storage-blob/deployment/pom.xml
+++ b/extensions/azure-storage-blob/deployment/pom.xml
@@ -35,17 +35,13 @@
<artifactId>camel-quarkus-core-deployment</artifactId>
</dependency>
<dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-netty-deployment</artifactId>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty-deployment</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-azure-storage-blob</artifactId>
</dependency>
- <dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-micrometer-deployment</artifactId>
- </dependency>
</dependencies>
<build>
diff --git a/extensions/azure-storage-blob/deployment/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/deployment/AzureStorageBlobProcessor.java b/extensions/azure-storage-blob/deployment/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/deployment/AzureStorageBlobProcessor.java
index ac17357..218a0db 100644
--- a/extensions/azure-storage-blob/deployment/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/deployment/AzureStorageBlobProcessor.java
+++ b/extensions/azure-storage-blob/deployment/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/deployment/AzureStorageBlobProcessor.java
@@ -26,7 +26,6 @@
import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageProxyDefinitionBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
import org.jboss.jandex.ClassInfo;
import org.jboss.jandex.DotName;
@@ -45,23 +44,6 @@
}
@BuildStep
- void runtimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClasses) {
- Stream.of(
- "io.netty.handler.ssl.OpenSsl",
- "io.netty.internal.tcnative.SSL",
- "io.netty.util.NetUtil",
- "reactor.netty.http.client.HttpClient",
- "reactor.netty.tcp.TcpClient",
- "reactor.netty.resources.DefaultLoopNativeDetector",
- "reactor.netty.resources.DefaultLoopEpoll",
- "reactor.netty.resources.DefaultLoopKQueue",
- "reactor.netty.resources.MicrometerPooledConnectionProviderMeterRegistrar",
- "reactor.netty.Metrics")
- .map(RuntimeInitializedClassBuildItem::new)
- .forEach(runtimeInitializedClasses::produce);
- }
-
- @BuildStep
void proxyDefinitions(BuildProducer<NativeImageProxyDefinitionBuildItem> proxyDefinitions) {
Stream.of(
"com.azure.storage.blob.implementation.AppendBlobsImpl$AppendBlobsService",
diff --git a/extensions/azure-storage-blob/runtime/pom.xml b/extensions/azure-storage-blob/runtime/pom.xml
index 63701a1..1c66c90 100644
--- a/extensions/azure-storage-blob/runtime/pom.xml
+++ b/extensions/azure-storage-blob/runtime/pom.xml
@@ -53,17 +53,13 @@
<artifactId>camel-quarkus-core</artifactId>
</dependency>
<dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-netty</artifactId>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure-storage-blob</artifactId>
</dependency>
- <dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-micrometer</artifactId>
- </dependency>
</dependencies>
<build>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index d4e57cc..0c16870 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -4944,6 +4944,16 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty</artifactId>
+ <version>${camel-quarkus.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-reactor-netty-deployment</artifactId>
+ <version>${camel-quarkus.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-support-retrofit</artifactId>
<version>${camel-quarkus.version}</version>
</dependency>