This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit f77c3d2efe0ac25a9097043e12fab34ae16f8d7f Author: Peter Palaga <[email protected]> AuthorDate: Tue Mar 23 17:03:44 2021 +0100 Merge camel-quarkus-main into camel-quarkus-core #2358 --- .../ROOT/pages/reference/extensions/core.adoc | 18 ++++++++ .../ROOT/pages/reference/extensions/main.adoc | 24 ---------- .../core/deployment/CamelContextProcessor.java | 5 +-- .../core/deployment/main}/CamelMainHelper.java | 2 +- .../main}/CamelMainHotDeploymentProcessor.java | 5 ++- .../main}/CamelMainNativeImageProcessor.java | 7 +-- .../core/deployment/main}/CamelMainProcessor.java | 51 ++++++++++++++-------- .../deployment/main}/spi/CamelMainBuildItem.java | 2 +- .../spi/CamelMainEnabled.java} | 24 ++++++---- .../main}/spi/CamelMainListenerBuildItem.java | 2 +- .../main}/spi/CamelRoutesCollectorBuildItem.java | 2 +- .../main/CamelAutowiredDisabledTest.java} | 11 +++-- .../main/CamelComponentConfigurationTest.java} | 29 ++++++------ .../main}/CamelMainAutoConfigurationTest.java | 2 +- .../core/deployment/main}/CamelMainInjectTest.java | 2 +- .../CamelMainLambdaRouteBuilderDiscoveryTest.java | 2 +- .../deployment/main}/CamelMainObserversTest.java | 2 +- .../main}/CamelMainRouteTemplateTest.java | 2 +- .../main}/CamelMainRoutesDiscoveryTest.java | 2 +- .../main}/CamelMainRoutesFilterTest.java | 2 +- .../main}/CamelMainUnknownArgumentFailTest.java | 2 +- .../main}/CamelMainUnknownArgumentIgnoreTest.java | 2 +- .../main}/CamelMainUnknownArgumentWarnTest.java | 2 +- .../core/deployment/main/DisabledMainTest.java} | 30 +++++++------ extensions-core/core/runtime/pom.xml | 4 ++ .../org/apache/camel/quarkus/main/CamelMain.java | 0 .../camel/quarkus/main/CamelMainApplication.java | 0 .../apache/camel/quarkus/main/CamelMainConfig.java | 8 ++++ .../camel/quarkus/main/CamelMainEventBridge.java | 0 .../camel/quarkus/main/CamelMainProducers.java | 0 .../camel/quarkus/main/CamelMainRecorder.java | 0 .../quarkus/main/CamelMainRoutesCollector.java | 0 .../camel/quarkus/main/CamelMainRuntime.java | 0 .../camel/quarkus/main/events/AfterConfigure.java | 0 .../camel/quarkus/main/events/AfterStart.java | 0 .../camel/quarkus/main/events/AfterStop.java | 0 .../camel/quarkus/main/events/BeforeConfigure.java | 0 .../quarkus/main/events/BeforeInitialize.java | 0 .../camel/quarkus/main/events/BeforeStart.java | 0 .../camel/quarkus/main/events/BeforeStop.java | 0 .../camel/quarkus/main/events/MainEvent.java | 0 extensions-core/main/deployment/pom.xml | 38 ---------------- .../quarkus/main/deployment/CamelMainFeature.java | 11 +++-- extensions-core/main/runtime/pom.xml | 15 +------ .../main/resources/META-INF/quarkus-extension.yaml | 1 + .../component/jfr/deployment/JfrProcessor.java | 4 +- .../deployment/CustomMainListenerProcessor.java | 2 +- .../deployment/CustomRoutesCollectorProcessor.java | 2 +- .../camel/quarkus/component/netty/NettyBeans.java | 29 +++++++----- .../camel/quarkus/component/netty/NettyRoutes.java | 12 ----- 50 files changed, 171 insertions(+), 187 deletions(-) diff --git a/docs/modules/ROOT/pages/reference/extensions/core.adoc b/docs/modules/ROOT/pages/reference/extensions/core.adoc index ae0138b..2879a4a 100644 --- a/docs/modules/ROOT/pages/reference/extensions/core.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/core.adoc @@ -165,6 +165,24 @@ A comma separated list of Ant-path style patterns to match class names that shou What to do if it is not possible to extract CSimple expressions from a route definition at build time. | `org.apache.camel.quarkus.core.CamelConfig.FailureRemedy` | `warn` + +|icon:lock[title=Fixed at build time] [[quarkus.camel.main.enabled]]`link:#quarkus.camel.main.enabled[quarkus.camel.main.enabled]` + +If `true` all `camel-main` features are enabled; otherwise no `camel-main` features are enabled. See described the link:https://camel.apache.org/camel-quarkus/latest/user-guide/bootstrap.html#_camel_main[Bootstrap] section of Camel Quarkus documentation for more details. +| `boolean` +| `true` + +|icon:lock[title=Fixed at build time] [[quarkus.camel.main.shutdown.timeout]]`link:#quarkus.camel.main.shutdown.timeout[quarkus.camel.main.shutdown.timeout]` + +A timeout (with millisecond precision) to wait for `CamelMain++#++stop()` to finish +| `java.time.Duration` +| `PT3S` + +|icon:lock[title=Fixed at build time] [[quarkus.camel.main.arguments.on-unknown]]`link:#quarkus.camel.main.arguments.on-unknown[quarkus.camel.main.arguments.on-unknown]` + +The action to take when `CamelMain` encounters an unknown argument. fail - Prints the `CamelMain` usage statement and throws a `RuntimeException` ignore - Suppresses any warnings and the application startup proceeds as normal warn - Prints the `CamelMain` usage statement but allows the application startup to proceed as normal +| `org.apache.camel.quarkus.core.CamelConfig.FailureRemedy` +| `warn` |=== [.configuration-legend] diff --git a/docs/modules/ROOT/pages/reference/extensions/main.adoc b/docs/modules/ROOT/pages/reference/extensions/main.adoc index f3c6a80..4d37c2d 100644 --- a/docs/modules/ROOT/pages/reference/extensions/main.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/main.adoc @@ -26,27 +26,3 @@ Bootstrap Camel using Camel Main which brings advanced auto-configuration capabi ---- Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. - -== Additional Camel Quarkus configuration - -[width="100%",cols="80,5,15",options="header"] -|=== -| Configuration property | Type | Default - - -|icon:lock[title=Fixed at build time] [[quarkus.camel.main.shutdown.timeout]]`link:#quarkus.camel.main.shutdown.timeout[quarkus.camel.main.shutdown.timeout]` - -A timeout (with millisecond precision) to wait for `CamelMain++#++stop()` to finish -| `java.time.Duration` -| `PT3S` - -|icon:lock[title=Fixed at build time] [[quarkus.camel.main.arguments.on-unknown]]`link:#quarkus.camel.main.arguments.on-unknown[quarkus.camel.main.arguments.on-unknown]` - -The action to take when `CamelMain` encounters an unknown argument. fail - Prints the `CamelMain` usage statement and throws a `RuntimeException` ignore - Suppresses any warnings and the application startup proceeds as normal warn - Prints the `CamelMain` usage statement but allows the application startup to proceed as normal -| `org.apache.camel.quarkus.core.CamelConfig.FailureRemedy` -| `warn` -|=== - -[.configuration-legend] -icon:lock[title=Fixed at build time] Configuration property fixed at build time. All other configuration properties are overridable at runtime. - diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java index f19632a..0d20e85 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelContextProcessor.java @@ -23,13 +23,13 @@ import io.quarkus.arc.deployment.SyntheticBeansRuntimeInitBuildItem; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.Consume; import io.quarkus.deployment.annotations.ExecutionTime; -import io.quarkus.deployment.annotations.Overridable; import io.quarkus.deployment.annotations.Record; import io.quarkus.runtime.RuntimeValue; import org.apache.camel.CamelContext; import org.apache.camel.quarkus.core.CamelConfig; import org.apache.camel.quarkus.core.CamelContextRecorder; import org.apache.camel.quarkus.core.CamelRuntime; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainEnabled; import org.apache.camel.quarkus.core.deployment.spi.CamelContextBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelContextCustomizerBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelFactoryFinderResolverBuildItem; @@ -121,8 +121,7 @@ public class CamelContextProcessor { * @param config a reference to the Camel Quarkus configuration * @return a build item holding a {@link CamelRuntime} instance. */ - @Overridable - @BuildStep + @BuildStep(onlyIfNot = CamelMainEnabled.class) @Record(value = ExecutionTime.RUNTIME_INIT, optional = true) /* @Consume(SyntheticBeansRuntimeInitBuildItem.class) makes sure that camel-main starts after the ArC container is * fully initialized. This is required as under the hoods the camel registry may look-up beans form the diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainHelper.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java similarity index 97% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainHelper.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java index 6f60192..3f740f8 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainHelper.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.util.stream.Stream; diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainHotDeploymentProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java similarity index 92% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainHotDeploymentProcessor.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java index 8325147..574aeef 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainHotDeploymentProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.nio.file.Files; import java.nio.file.Path; @@ -24,6 +24,7 @@ import java.util.stream.Collectors; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainEnabled; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +32,7 @@ class CamelMainHotDeploymentProcessor { private static final Logger LOGGER = LoggerFactory.getLogger(CamelMainHotDeploymentProcessor.class); private static final String FILE_PREFIX = "file:"; - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) List<HotDeploymentWatchedFileBuildItem> locations() { List<HotDeploymentWatchedFileBuildItem> items = CamelMainHelper.routesIncludePatter() .filter(location -> location.startsWith(FILE_PREFIX)) diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainNativeImageProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java similarity index 93% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainNativeImageProcessor.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java index b2f19e3..4d75ffa 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainNativeImageProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -24,6 +24,7 @@ import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainEnabled; import org.apache.camel.support.ResourceHelper; import org.apache.camel.util.AntPathMatcher; import org.jboss.logging.Logger; @@ -31,7 +32,7 @@ import org.jboss.logging.Logger; public class CamelMainNativeImageProcessor { private static final Logger LOG = Logger.getLogger(CamelMainNativeImageProcessor.class); - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) ReflectiveClassBuildItem reflectiveCLasses() { // TODO: The classes below are needed to fix https://github.com/apache/camel-quarkus/issues/1005 // but we need to investigate why it does not fail with Java 1.8 @@ -45,7 +46,7 @@ public class CamelMainNativeImageProcessor { org.apache.camel.quarkus.main.CamelMainApplication.class); } - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) private void camelNativeImageResources( Capabilities capabilities, BuildProducer<NativeImageResourceBuildItem> nativeResource) { diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java similarity index 84% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainProcessor.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java index 7106972..928b87a 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainProcessor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.util.List; import java.util.stream.Collectors; @@ -29,6 +29,7 @@ import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Overridable; import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.AdditionalIndexedClassesBuildItem; +import io.quarkus.deployment.builditem.CapabilityBuildItem; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; import io.quarkus.runtime.RuntimeValue; import io.quarkus.runtime.annotations.QuarkusMain; @@ -36,11 +37,17 @@ import org.apache.camel.CamelContext; import org.apache.camel.quarkus.core.CamelConfig; import org.apache.camel.quarkus.core.CamelRecorder; import org.apache.camel.quarkus.core.CamelRuntime; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainBuildItem; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainEnabled; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainListenerBuildItem; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelRoutesCollectorBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelContextBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelRoutesBuilderClassBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelRoutesLoaderBuildItems; import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeTaskBuildItem; +import org.apache.camel.quarkus.core.deployment.spi.CamelServiceDestination; +import org.apache.camel.quarkus.core.deployment.spi.CamelServicePatternBuildItem; import org.apache.camel.quarkus.core.deployment.spi.ContainerBeansBuildItem; import org.apache.camel.quarkus.core.deployment.spi.RuntimeCamelContextCustomizerBuildItem; import org.apache.camel.quarkus.main.CamelMain; @@ -48,24 +55,23 @@ import org.apache.camel.quarkus.main.CamelMainApplication; import org.apache.camel.quarkus.main.CamelMainConfig; import org.apache.camel.quarkus.main.CamelMainProducers; import org.apache.camel.quarkus.main.CamelMainRecorder; -import org.apache.camel.quarkus.main.deployment.spi.CamelMainBuildItem; -import org.apache.camel.quarkus.main.deployment.spi.CamelMainListenerBuildItem; -import org.apache.camel.quarkus.main.deployment.spi.CamelRoutesCollectorBuildItem; +import org.apache.camel.quarkus.support.common.CamelCapabilities; import org.jboss.jandex.DotName; import org.jboss.jandex.IndexView; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class CamelMainProcessor { - private static Logger LOGGER = LoggerFactory.getLogger(CamelMainProcessor.class); - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) void unremovableBeans(BuildProducer<AdditionalBeanBuildItem> beanProducer) { beanProducer.produce(AdditionalBeanBuildItem.unremovableOf(CamelMainProducers.class)); } - @Overridable - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) + CapabilityBuildItem capability() { + return new CapabilityBuildItem(CamelCapabilities.MAIN); + } + + @BuildStep(onlyIf = CamelMainEnabled.class) @Record(value = ExecutionTime.STATIC_INIT, optional = true) public CamelRoutesLoaderBuildItems.Registry routesLoader(CamelConfig config, CamelRecorder recorder) { return config.routesDiscovery.enabled @@ -74,7 +80,7 @@ public class CamelMainProcessor { } @Overridable - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) @Record(value = ExecutionTime.STATIC_INIT, optional = true) public CamelRoutesCollectorBuildItem routesCollector( CamelMainRecorder recorder, @@ -97,7 +103,7 @@ public class CamelMainProcessor { * @return a build item holding a {@link CamelMain} instance. */ @Record(ExecutionTime.STATIC_INIT) - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) CamelMainBuildItem main( BeanContainerBuildItem beanContainer, ContainerBeansBuildItem containerBeans, @@ -142,7 +148,8 @@ public class CamelMainProcessor { * <li>Circuit Breaker * <li>Health * </ul> - * <li>take control of the application life-cycle and initiates Quarkus shutdown according to some conditions as example + * <li>take control of the application life-cycle and initiates Quarkus shutdown according to some conditions as + * example * after having processed a certain number of messages.. * </ul> * @@ -156,11 +163,13 @@ public class CamelMainProcessor { * @param camelMainConfig a {@link CamelMainConfig} * @return a build item holding a {@link CamelRuntime} instance. */ - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) @Record(value = ExecutionTime.RUNTIME_INIT, optional = true) - /* @Consume(SyntheticBeansRuntimeInitBuildItem.class) makes sure that camel-main starts after the ArC container is + /* + * @Consume(SyntheticBeansRuntimeInitBuildItem.class) makes sure that camel-main starts after the ArC container is * fully initialized. This is required as under the hoods the camel registry may look-up beans form the - * container thus we need it to be fully initialized to avoid unexpected behaviors. */ + * container thus we need it to be fully initialized to avoid unexpected behaviors. + */ @Consume(SyntheticBeansRuntimeInitBuildItem.class) CamelRuntimeBuildItem runtime( CombinedIndexBuildItem index, @@ -189,9 +198,17 @@ public class CamelMainProcessor { index.getIndex().getAnnotations(DotName.createSimple(QuarkusMain.class.getName())).isEmpty()); } - @BuildStep + @BuildStep(onlyIf = CamelMainEnabled.class) AdditionalIndexedClassesBuildItem indexCamelMainApplication() { // Required for launching CamelMain based applications from the IDE return new AdditionalIndexedClassesBuildItem(CamelMainApplication.class.getName()); } + + @BuildStep(onlyIfNot = CamelMainEnabled.class) + void coreServicePatterns(BuildProducer<CamelServicePatternBuildItem> services) { + services.produce(new CamelServicePatternBuildItem( + CamelServiceDestination.DISCOVERY, + false, + "META-INF/services/org/apache/camel/configurer/org.apache.camel.main.*")); + } } diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelMainBuildItem.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainBuildItem.java similarity index 95% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelMainBuildItem.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainBuildItem.java index 99f7da8..501705c 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelMainBuildItem.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainBuildItem.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment.spi; +package org.apache.camel.quarkus.core.deployment.main.spi; import io.quarkus.builder.item.SimpleBuildItem; import io.quarkus.runtime.RuntimeValue; diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelMainPresent.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainEnabled.java similarity index 64% rename from extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelMainPresent.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainEnabled.java index 2a222af..8612d07 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelMainPresent.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainEnabled.java @@ -14,19 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.core.deployment; +package org.apache.camel.quarkus.core.deployment.main.spi; import java.util.function.BooleanSupplier; -public class CamelMainPresent implements BooleanSupplier { +import io.quarkus.runtime.RuntimeValue; +import org.apache.camel.quarkus.main.CamelMain; +import org.apache.camel.quarkus.main.CamelMainConfig; + +/** + * Holds the {@link CamelMain} {@link RuntimeValue}. + */ +public class CamelMainEnabled implements BooleanSupplier { + + private final CamelMainConfig mainConfig; + + CamelMainEnabled(CamelMainConfig mainConfig) { + this.mainConfig = mainConfig; + } @Override public boolean getAsBoolean() { - try { - Class.forName("org.apache.camel.quarkus.main.CamelMain"); - return true; - } catch (ClassNotFoundException e) { - return false; - } + return mainConfig.enabled; } } diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelMainListenerBuildItem.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainListenerBuildItem.java similarity index 95% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelMainListenerBuildItem.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainListenerBuildItem.java index bfd4b71..1355dd1 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelMainListenerBuildItem.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelMainListenerBuildItem.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment.spi; +package org.apache.camel.quarkus.core.deployment.main.spi; import io.quarkus.builder.item.MultiBuildItem; import io.quarkus.runtime.RuntimeValue; diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelRoutesCollectorBuildItem.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelRoutesCollectorBuildItem.java similarity index 95% rename from extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelRoutesCollectorBuildItem.java rename to extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelRoutesCollectorBuildItem.java index 5454cce..c7f68e4 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/spi/CamelRoutesCollectorBuildItem.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/spi/CamelRoutesCollectorBuildItem.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment.spi; +package org.apache.camel.quarkus.core.deployment.main.spi; import io.quarkus.builder.item.SimpleBuildItem; import io.quarkus.runtime.RuntimeValue; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainAutoConfigurationTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelAutowiredDisabledTest.java similarity index 91% copy from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainAutoConfigurationTest.java copy to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelAutowiredDisabledTest.java index 9d45d7a..f6430b6 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainAutoConfigurationTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelAutowiredDisabledTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; @@ -40,7 +40,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; import static org.assertj.core.api.Assertions.assertThat; -public class CamelMainAutoConfigurationTest { +public class CamelAutowiredDisabledTest { @RegisterExtension static final QuarkusUnitTest CONFIG = new QuarkusUnitTest() .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) @@ -55,6 +55,7 @@ public class CamelMainAutoConfigurationTest { Properties props = new Properties(); props.setProperty("quarkus.banner.enabled", "false"); props.setProperty("quarkus.arc.remove-unused-beans", "false"); + props.setProperty("camel.context.autowiredenabled", "false"); try { props.store(writer, ""); @@ -74,11 +75,9 @@ public class CamelMainAutoConfigurationTest { assertThat(component.getExchangeFormatter()).isInstanceOf(MyExchangeFormatter.class); }); - // ensure that the exchange formatter is taken from the container as - // LogComponent has no default instance thus it should be auto-wired - // by camel-main + // ensure that camel.context.autowiredenabled = false disables autowiring of the exchange formatter assertThat(main.getCamelContext().getComponent("log", LogComponent.class)).satisfies(component -> { - assertThat(component.getExchangeFormatter()).isInstanceOf(MyOtherExchangeFormatter.class); + assertThat(component.getExchangeFormatter()).isNull(); }); } diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelComponentConfigurationTest.java similarity index 73% copy from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java copy to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelComponentConfigurationTest.java index e58cbad..1b6447e 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelComponentConfigurationTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; @@ -23,8 +23,10 @@ import java.util.Properties; import javax.inject.Inject; +import io.quarkus.arc.Arc; import io.quarkus.test.QuarkusUnitTest; -import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.CamelContext; +import org.apache.camel.component.direct.DirectComponent; import org.apache.camel.quarkus.main.CamelMain; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.Asset; @@ -35,21 +37,24 @@ import org.junit.jupiter.api.extension.RegisterExtension; import static org.assertj.core.api.Assertions.assertThat; -public class CamelMainRoutesDiscoveryTest { +public class CamelComponentConfigurationTest { @RegisterExtension static final QuarkusUnitTest CONFIG = new QuarkusUnitTest() .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) .addAsResource(applicationProperties(), "application.properties")); + private static final int TIMEOUT = 1234; + @Inject - CamelMain main; + CamelContext camelContext; public static Asset applicationProperties() { Writer writer = new StringWriter(); Properties props = new Properties(); props.setProperty("quarkus.banner.enabled", "false"); - props.setProperty("quarkus.camel.routes-discovery.enabled", "false"); + props.setProperty("quarkus.arc.remove-unused-beans", "false"); + props.setProperty("camel.component.direct.timeout", String.valueOf(TIMEOUT)); try { props.store(writer, ""); @@ -61,15 +66,13 @@ public class CamelMainRoutesDiscoveryTest { } @Test - public void testRoutesDiscovery() { - assertThat(main.getCamelContext().getRoutes()).isEmpty(); - assertThat(main.configure().getRoutesBuilders()).isEmpty(); + public void testComponentAutoConfiguration() { + assertThat(camelContext.getComponent("direct", DirectComponent.class).getTimeout()).isEqualTo(TIMEOUT); } - public static class MyRoute extends RouteBuilder { - @Override - public void configure() throws Exception { - from("direct:in").routeId("my-route").to("log:out"); - } + @Test + public void mainAvailable() { + assertThat(Arc.container().instance(CamelMain.class).isAvailable()).isTrue(); } + } diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainAutoConfigurationTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainAutoConfigurationTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainAutoConfigurationTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainAutoConfigurationTest.java index 9d45d7a..8d18cdf 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainAutoConfigurationTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainAutoConfigurationTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainInjectTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainInjectTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainInjectTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainInjectTest.java index 14de57f..1967ad7 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainInjectTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainInjectTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainLambdaRouteBuilderDiscoveryTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainLambdaRouteBuilderDiscoveryTest.java similarity index 97% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainLambdaRouteBuilderDiscoveryTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainLambdaRouteBuilderDiscoveryTest.java index f2e951d..f45c428 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainLambdaRouteBuilderDiscoveryTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainLambdaRouteBuilderDiscoveryTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainObserversTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainObserversTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainObserversTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainObserversTest.java index 214b286..dcc7e8e 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainObserversTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainObserversTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRouteTemplateTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRouteTemplateTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRouteTemplateTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRouteTemplateTest.java index e91c15d..7277807 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRouteTemplateTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRouteTemplateTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesDiscoveryTest.java similarity index 97% copy from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java copy to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesDiscoveryTest.java index e58cbad..0ca47c3 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesDiscoveryTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesFilterTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesFilterTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesFilterTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesFilterTest.java index fa0ea0f..8568a1a 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesFilterTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainRoutesFilterTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentFailTest.java similarity index 97% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentFailTest.java index 13ba8da..fdc8ff1 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentFailTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentFailTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentIgnoreTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentIgnoreTest.java index 7ffa54b..c10a0a6 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentIgnoreTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentIgnoreTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentWarnTest.java similarity index 98% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentWarnTest.java index a112944..db70234 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainUnknownArgumentWarnTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/CamelMainUnknownArgumentWarnTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/DisabledMainTest.java similarity index 71% rename from extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java rename to extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/DisabledMainTest.java index e58cbad..3043a31 100644 --- a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRoutesDiscoveryTest.java +++ b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/main/DisabledMainTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main.deployment; +package org.apache.camel.quarkus.core.deployment.main; import java.io.IOException; import java.io.StringWriter; @@ -23,8 +23,10 @@ import java.util.Properties; import javax.inject.Inject; +import io.quarkus.arc.Arc; import io.quarkus.test.QuarkusUnitTest; -import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.CamelContext; +import org.apache.camel.component.direct.DirectComponent; import org.apache.camel.quarkus.main.CamelMain; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.Asset; @@ -35,21 +37,25 @@ import org.junit.jupiter.api.extension.RegisterExtension; import static org.assertj.core.api.Assertions.assertThat; -public class CamelMainRoutesDiscoveryTest { +public class DisabledMainTest { @RegisterExtension static final QuarkusUnitTest CONFIG = new QuarkusUnitTest() .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) .addAsResource(applicationProperties(), "application.properties")); + private static final int TIMEOUT = 1234; + @Inject - CamelMain main; + CamelContext camelContext; public static Asset applicationProperties() { Writer writer = new StringWriter(); Properties props = new Properties(); props.setProperty("quarkus.banner.enabled", "false"); - props.setProperty("quarkus.camel.routes-discovery.enabled", "false"); + props.setProperty("quarkus.arc.remove-unused-beans", "false"); + props.setProperty("camel.component.direct.timeout", String.valueOf(TIMEOUT)); + props.setProperty("quarkus.camel.main.enabled", "false"); try { props.store(writer, ""); @@ -61,15 +67,13 @@ public class CamelMainRoutesDiscoveryTest { } @Test - public void testRoutesDiscovery() { - assertThat(main.getCamelContext().getRoutes()).isEmpty(); - assertThat(main.configure().getRoutesBuilders()).isEmpty(); + public void componentAutoConfigurationNotWorking() { + assertThat(camelContext.getComponent("direct", DirectComponent.class).getTimeout()).isNotEqualTo(TIMEOUT); } - public static class MyRoute extends RouteBuilder { - @Override - public void configure() throws Exception { - from("direct:in").routeId("my-route").to("log:out"); - } + @Test + public void mainUnavailable() { + assertThat(Arc.container().instance(CamelMain.class).isAvailable()).isFalse(); } + } diff --git a/extensions-core/core/runtime/pom.xml b/extensions-core/core/runtime/pom.xml index ade5d9a..1596936 100644 --- a/extensions-core/core/runtime/pom.xml +++ b/extensions-core/core/runtime/pom.xml @@ -94,6 +94,10 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-main</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-microprofile-config</artifactId> </dependency> diff --git a/extensions-core/main/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 similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainApplication.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainApplication.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainApplication.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainApplication.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainConfig.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainConfig.java similarity index 85% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainConfig.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainConfig.java index e249b93..140f125 100644 --- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainConfig.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainConfig.java @@ -26,6 +26,14 @@ import org.apache.camel.quarkus.core.CamelConfig.FailureRemedy; @ConfigRoot(name = "camel.main", phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED) public class CamelMainConfig { + /** + * If {@code true} all {@code camel-main} features are enabled; otherwise no {@code camel-main} features are + * enabled. See described the + * <a href="https://camel.apache.org/camel-quarkus/latest/user-guide/bootstrap.html#_camel_main">Bootstrap</a> + * section of Camel Quarkus documentation for more details. + */ + @ConfigItem(defaultValue = "true") + public boolean enabled; /** * Build time configuration options for {@link CamelMain} shutdown. diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainEventBridge.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainEventBridge.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainEventBridge.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainEventBridge.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java similarity index 100% copy from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java copy to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRecorder.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRuntime.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRuntime.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRuntime.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRuntime.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterConfigure.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterConfigure.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterConfigure.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterConfigure.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStart.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStart.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStart.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStart.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStop.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStop.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStop.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/AfterStop.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeConfigure.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeConfigure.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeConfigure.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeConfigure.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeInitialize.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeInitialize.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeInitialize.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeInitialize.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStart.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStart.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStart.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStart.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStop.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStop.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStop.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/BeforeStop.java diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/MainEvent.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/MainEvent.java similarity index 100% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/events/MainEvent.java rename to extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/main/events/MainEvent.java diff --git a/extensions-core/main/deployment/pom.xml b/extensions-core/main/deployment/pom.xml index 4ada70e..e261a75 100644 --- a/extensions-core/main/deployment/pom.xml +++ b/extensions-core/main/deployment/pom.xml @@ -28,17 +28,6 @@ <name>Camel Quarkus :: Main :: Deployment</name> <dependencies> - <!-- quarkus --> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-core-deployment</artifactId> - </dependency> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-arc-deployment</artifactId> - </dependency> - - <!-- camel --> <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-main</artifactId> @@ -47,33 +36,6 @@ <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-core-deployment</artifactId> </dependency> - - <!-- test dependencies --> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-direct</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-log</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-junit5-internal</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.awaitility</groupId> - <artifactId>awaitility</artifactId> - <scope>test</scope> - </dependency> </dependencies> <build> diff --git a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainFeature.java b/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainFeature.java index 24565c4..3f44c0e 100644 --- a/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainFeature.java +++ b/extensions-core/main/deployment/src/main/java/org/apache/camel/quarkus/main/deployment/CamelMainFeature.java @@ -17,20 +17,19 @@ package org.apache.camel.quarkus.main.deployment; import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.builditem.CapabilityBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; -import org.apache.camel.quarkus.support.common.CamelCapabilities; +import org.jboss.logging.Logger; class CamelMainFeature { + private static final Logger LOG = Logger.getLogger(CamelMainFeature.class); private static final String FEATURE = "camel-main"; @BuildStep FeatureBuildItem feature() { + // see https://github.com/apache/camel-quarkus/issues/2358 + LOG.warnf( + "camel-quarkus-main is deprecated and will be removed in the future; use camel-quarkus-core instead"); return new FeatureBuildItem(FEATURE); } - @BuildStep - CapabilityBuildItem capability() { - return new CapabilityBuildItem(CamelCapabilities.MAIN); - } } diff --git a/extensions-core/main/runtime/pom.xml b/extensions-core/main/runtime/pom.xml index 2b11042..6fb1545 100644 --- a/extensions-core/main/runtime/pom.xml +++ b/extensions-core/main/runtime/pom.xml @@ -32,6 +32,7 @@ <properties> <camel.quarkus.jvmSince>1.0.0</camel.quarkus.jvmSince> <camel.quarkus.nativeSince>1.0.0</camel.quarkus.nativeSince> + <quarkus.metadata.deprecated>true</quarkus.metadata.deprecated> </properties> <dependencyManagement> @@ -48,23 +49,9 @@ <dependencies> <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-core</artifactId> - </dependency> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-arc</artifactId> - </dependency> - <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-core</artifactId> </dependency> - - <!-- camel --> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-main</artifactId> - </dependency> </dependencies> <build> diff --git a/extensions-core/main/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-core/main/runtime/src/main/resources/META-INF/quarkus-extension.yaml index 1f24897..514f7bf 100644 --- a/extensions-core/main/runtime/src/main/resources/META-INF/quarkus-extension.yaml +++ b/extensions-core/main/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -29,3 +29,4 @@ metadata: - "integration" status: - "stable" + - "deprecated" \ No newline at end of file diff --git a/extensions-jvm/jfr/deployment/src/main/java/org/apache/camel/quarkus/component/jfr/deployment/JfrProcessor.java b/extensions-jvm/jfr/deployment/src/main/java/org/apache/camel/quarkus/component/jfr/deployment/JfrProcessor.java index ef8ad15..8956642 100644 --- a/extensions-jvm/jfr/deployment/src/main/java/org/apache/camel/quarkus/component/jfr/deployment/JfrProcessor.java +++ b/extensions-jvm/jfr/deployment/src/main/java/org/apache/camel/quarkus/component/jfr/deployment/JfrProcessor.java @@ -23,7 +23,7 @@ import io.quarkus.deployment.builditem.FeatureBuildItem; import io.quarkus.deployment.pkg.steps.NativeBuild; import org.apache.camel.quarkus.component.jfr.CamelJfrConfig; import org.apache.camel.quarkus.component.jfr.CamelJfrRecorder; -import org.apache.camel.quarkus.core.deployment.CamelMainPresent; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainEnabled; import org.apache.camel.quarkus.core.deployment.spi.CamelServiceDestination; import org.apache.camel.quarkus.core.deployment.spi.CamelServicePatternBuildItem; import org.apache.camel.quarkus.core.deployment.spi.CamelStartupStepRecorderBuildItem; @@ -37,7 +37,7 @@ class JfrProcessor { return new FeatureBuildItem(FEATURE); } - @BuildStep(onlyIf = { CamelMainPresent.class }) + @BuildStep(onlyIf = { CamelMainEnabled.class }) CamelServicePatternBuildItem excludeCamelJfrServicePattern() { // Prevent camel main from overwriting the FlightRecorderStartupStepRecorder configured by this extension return new CamelServicePatternBuildItem(CamelServiceDestination.DISCOVERY, false, diff --git a/integration-tests-support/custom-main-listener/deployment/src/main/java/org/apache/camel/quarkus/it/support/mainlistener/deployment/CustomMainListenerProcessor.java b/integration-tests-support/custom-main-listener/deployment/src/main/java/org/apache/camel/quarkus/it/support/mainlistener/deployment/CustomMainListenerProcessor.java index 81f8ef3..2ddee21 100644 --- a/integration-tests-support/custom-main-listener/deployment/src/main/java/org/apache/camel/quarkus/it/support/mainlistener/deployment/CustomMainListenerProcessor.java +++ b/integration-tests-support/custom-main-listener/deployment/src/main/java/org/apache/camel/quarkus/it/support/mainlistener/deployment/CustomMainListenerProcessor.java @@ -19,8 +19,8 @@ package org.apache.camel.quarkus.it.support.mainlistener.deployment; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Record; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelMainListenerBuildItem; import org.apache.camel.quarkus.it.support.mainlistener.CustomMainListenerRecorder; -import org.apache.camel.quarkus.main.deployment.spi.CamelMainListenerBuildItem; public class CustomMainListenerProcessor { @Record(ExecutionTime.STATIC_INIT) diff --git a/integration-tests-support/custom-routes-collector/deployment/src/main/java/org/apache/camel/quarkus/main/runtime/support/deployment/CustomRoutesCollectorProcessor.java b/integration-tests-support/custom-routes-collector/deployment/src/main/java/org/apache/camel/quarkus/main/runtime/support/deployment/CustomRoutesCollectorProcessor.java index 5c03edf..41678e5 100644 --- a/integration-tests-support/custom-routes-collector/deployment/src/main/java/org/apache/camel/quarkus/main/runtime/support/deployment/CustomRoutesCollectorProcessor.java +++ b/integration-tests-support/custom-routes-collector/deployment/src/main/java/org/apache/camel/quarkus/main/runtime/support/deployment/CustomRoutesCollectorProcessor.java @@ -19,7 +19,7 @@ package org.apache.camel.quarkus.main.runtime.support.deployment; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Record; -import org.apache.camel.quarkus.main.deployment.spi.CamelRoutesCollectorBuildItem; +import org.apache.camel.quarkus.core.deployment.main.spi.CamelRoutesCollectorBuildItem; import org.apache.camel.quarkus.main.runtime.support.CustomRoutesCollectorRecorder; public class CustomRoutesCollectorProcessor { diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java b/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyBeans.java similarity index 57% rename from extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java rename to integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyBeans.java index f830cc3..7db57f5 100644 --- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java +++ b/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyBeans.java @@ -14,22 +14,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.main; +package org.apache.camel.quarkus.component.netty; import javax.enterprise.inject.Produces; -import javax.inject.Singleton; +import javax.inject.Named; -@Singleton -public class CamelMainProducers { - private volatile CamelMain main; +import io.netty.channel.ChannelHandler; +import org.apache.camel.component.netty.ChannelHandlerFactory; - public void setMain(CamelMain main) { - this.main = main; +public class NettyBeans { + @Produces + @Named("tcpNullDelimitedHandler") + ChannelHandlerFactory tcpNullDelimitedHandler() { + return NettyCodecHelper.createNullDelimitedHandler("tcp"); } - @Singleton @Produces - CamelMain camelMain() { - return this.main; + @Named("bytesDecoder") + ChannelHandler bytesDecoder() { + return NettyCodecHelper.createBytesDecoder(); } + + @Produces + @Named("bytesEncoder") + private ChannelHandler bytesEncoder() { + return NettyCodecHelper.createBytesEncoder(); + } + } diff --git a/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyRoutes.java b/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyRoutes.java index 117d5f6..e46af69 100644 --- a/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyRoutes.java +++ b/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyRoutes.java @@ -16,22 +16,10 @@ */ package org.apache.camel.quarkus.component.netty; -import io.netty.channel.ChannelHandler; -import org.apache.camel.BindToRegistry; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.netty.ChannelHandlerFactory; public class NettyRoutes extends RouteBuilder { - @BindToRegistry("tcpNullDelimitedHandler") - private ChannelHandlerFactory tcpNullDelimitedHandler = NettyCodecHelper.createNullDelimitedHandler("tcp"); - - @BindToRegistry("bytesDecoder") - private ChannelHandler bytesDecoder = NettyCodecHelper.createBytesDecoder(); - - @BindToRegistry("bytesEncoder") - private ChannelHandler bytesEncoder = NettyCodecHelper.createBytesEncoder(); - @Override public void configure() { from("netty:tcp://localhost:{{camel.netty.test-tcp-port}}?textline=true&sync=true")
