This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch 3.40.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit c71d9b80846008e06d082d1e1dfdcd120b984d01 Author: James Netherton <[email protected]> AuthorDate: Mon Oct 12 18:32:03 2026 +0100 Fixes #9311. Fix quarkus.camel.cli.enabled=false not disabling the CLI connector Exclude the Camel cli-connector-factory service from discovery so that Camel does not fall back to its default factory when the extension does not register one. Co-authored-by: Claude Opus 5.5 <[email protected]> --- .../cli/connector/deployment/CliConnectorProcessor.java | 16 ++++++++++++---- .../connector/deployment/CliConnectorDisabledTest.java | 5 +++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/extensions-jvm/cli-connector/deployment/src/main/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorProcessor.java b/extensions-jvm/cli-connector/deployment/src/main/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorProcessor.java index 8461d504f3..f0ce008a69 100644 --- a/extensions-jvm/cli-connector/deployment/src/main/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorProcessor.java +++ b/extensions-jvm/cli-connector/deployment/src/main/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorProcessor.java @@ -20,7 +20,6 @@ import java.util.function.BooleanSupplier; import io.quarkus.builder.Version; import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.annotations.BuildSteps; import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.FeatureBuildItem; @@ -29,21 +28,30 @@ import org.apache.camel.quarkus.component.cli.connector.CamelCliConnectorConfig; import org.apache.camel.quarkus.component.cli.connector.CamelCliConnectorRecorder; import org.apache.camel.quarkus.core.JvmOnlyRecorder; import org.apache.camel.quarkus.core.deployment.spi.CamelBeanBuildItem; +import org.apache.camel.quarkus.core.deployment.spi.CamelServiceDestination; +import org.apache.camel.quarkus.core.deployment.spi.CamelServicePatternBuildItem; import org.apache.camel.spi.CliConnectorFactory; import org.jboss.logging.Logger; -@BuildSteps(onlyIf = CliConnectorProcessor.CliConnectorEnabled.class) class CliConnectorProcessor { private static final Logger LOG = Logger.getLogger(CliConnectorProcessor.class); private static final String FEATURE = "camel-cli-connector"; - @BuildStep + @BuildStep(onlyIf = CliConnectorEnabled.class) FeatureBuildItem feature() { return new FeatureBuildItem(FEATURE); } @BuildStep + CamelServicePatternBuildItem cliConnectorFactoryServicePattern() { + // The factory is either provided by this extension, or the CLI connector is disabled. This is added as an + // exclusion since core defines an include path filter for META-INF/services/org/apache/camel/* + return new CamelServicePatternBuildItem(CamelServiceDestination.DISCOVERY, false, + "META-INF/services/org/apache/camel/" + CliConnectorFactory.FACTORY); + } + + @BuildStep(onlyIf = CliConnectorEnabled.class) @Record(value = ExecutionTime.STATIC_INIT) CamelBeanBuildItem camelBeanBuildItem(CamelCliConnectorRecorder recorder) { return new CamelBeanBuildItem("quarkusCliConnectorFactory", @@ -54,7 +62,7 @@ class CliConnectorProcessor { /** * Remove this once this extension starts supporting the native mode. */ - @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class) + @BuildStep(onlyIf = { CliConnectorEnabled.class, NativeOrNativeSourcesBuild.class }) @Record(value = ExecutionTime.RUNTIME_INIT) void warnJvmInNative(JvmOnlyRecorder recorder) { JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time diff --git a/extensions-jvm/cli-connector/deployment/src/test/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorDisabledTest.java b/extensions-jvm/cli-connector/deployment/src/test/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorDisabledTest.java index 20cd50cc00..86718c68ff 100644 --- a/extensions-jvm/cli-connector/deployment/src/test/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorDisabledTest.java +++ b/extensions-jvm/cli-connector/deployment/src/test/java/org/apache/camel/quarkus/component/cli/connector/deployment/CliConnectorDisabledTest.java @@ -19,6 +19,7 @@ package org.apache.camel.quarkus.component.cli.connector.deployment; import io.quarkus.test.QuarkusExtensionTest; import jakarta.inject.Inject; import org.apache.camel.CamelContext; +import org.apache.camel.spi.CliConnector; import org.apache.camel.spi.CliConnectorFactory; import org.apache.camel.support.CamelContextHelper; import org.junit.jupiter.api.Test; @@ -39,5 +40,9 @@ public class CliConnectorDisabledTest { void cliConnectorDisabled() { CliConnectorFactory factory = CamelContextHelper.findSingleByType(context, CliConnectorFactory.class); assertNull(factory); + + // Verify Camel did not fall back to discovering its default factory from the classpath + assertNull(context.getCamelContextExtension().getContextPlugin(CliConnectorFactory.class)); + assertNull(context.hasService(CliConnector.class)); } }
