This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push: new 1d047ca chore: add some doc about camel-main build steps 1d047ca is described below commit 1d047caad133e53a24dbe55b309900d1ca60b3e5 Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Wed Oct 9 12:36:35 2019 +0200 chore: add some doc about camel-main build steps --- .../quarkus/core/deployment/BuildProcessor.java | 36 ++++++++++++++++------ 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java index d7a77c4..fc759c1 100644 --- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java +++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java @@ -151,6 +151,13 @@ class BuildProcessor { beanProducer.produce(AdditionalBeanBuildItem.unremovableOf(CamelMainProducers.class)); } + /** + * This method is responsible to configure camel-main during static init phase which means + * discovering routes, listeners and services that need to be bound to the camel-main. + * <p> + * This method should not attempt to start or initialize camel-main as this need to be done + * at runtime. + */ @SuppressWarnings("unchecked") @Record(ExecutionTime.STATIC_INIT) @BuildStep(onlyIfNot = Flags.MainDisabled.class) @@ -182,25 +189,36 @@ class BuildProcessor { return new CamelMainBuildItem(main); } + /** + * This method is responsible to start camel-main ar runtime. + * + * @param recorder the recorder. + * @param main a reference to a {@link CamelMain}. + * @param registry a reference to a {@link Registry}; note that this parameter is here as placeholder to + * ensure the {@link Registry} is fully configured before starting camel-main. + * @param executors the {@link org.apache.camel.spi.ReactiveExecutor} to be configured on camel-main, this + * happens during {@link ExecutionTime#RUNTIME_INIT} because the executor may need to start + * threads and so on. Note that we now expect a list of executors but that's because there is + * no way as of quarkus 0.23.x to have optional items. + * @param shutdown a reference to a {@link io.quarkus.runtime.ShutdownContext} used to register shutdown logic. + * @param startList a placeholder to ensure camel-main start 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. + */ @Record(ExecutionTime.RUNTIME_INIT) @BuildStep(onlyIfNot = Flags.MainDisabled.class) void start( CamelMainRecorder recorder, CamelMainBuildItem main, - // TODO: keep this as placeholder to ensure the registry is fully configured - // before starting the camel context CamelRuntimeRegistryBuildItem registry, - // TODO: replace with @Overridable - List<CamelReactiveExecutorBuildItem> reactiveExecutors, + List<CamelReactiveExecutorBuildItem> executors, // TODO: replace with @Overridable ShutdownContextBuildItem shutdown, - // TODO: keep this list as placeholder to ensure the ArC container is fully - // started before starting main List<ServiceStartBuildItem> startList) { - if (reactiveExecutors.size() > 1) { + if (executors.size() > 1) { throw new IllegalArgumentException("Detected multiple reactive executors"); - } else if (reactiveExecutors.size() == 1) { - recorder.setReactiveExecutor(main.getInstance(), reactiveExecutors.get(0).getInstance()); + } else if (executors.size() == 1) { + recorder.setReactiveExecutor(main.getInstance(), executors.get(0).getInstance()); } recorder.start(shutdown, main.getInstance());