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 708f8c846c Fixes #9311. Fix quarkus.camel.cli.enabled=false not 
disabling the CLI connector
708f8c846c is described below

commit 708f8c846c9c794817bef89cbb44bc17c66f118d
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));
     }
 }

Reply via email to