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));
}
}