You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/08/27 09:31:56 UTC

[camel-spring-boot] branch main updated (817f9b50379 -> a391f64eeed)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git


    from 817f9b50379 CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI
     new 8610053e18b CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI
     new a391f64eeed CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../connector/CliConnectorAutoConfiguration.java   |  6 ++---
 .../cli/connector/SpringCliConnectorFactory.java   |  2 +-
 .../cli/connector/SpringLocalCliConnector.java     |  4 +++-
 .../camel/spring/boot/CamelAutoConfiguration.java  | 26 ++++++++++++++++++++++
 4 files changed, 32 insertions(+), 6 deletions(-)


[camel-spring-boot] 01/02: CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit 8610053e18b67565a89b72c1bebe95d850cbf4d3
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 27 10:03:10 2022 +0200

    CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI
---
 .../camel/springboot/cli/connector/SpringCliConnectorFactory.java     | 2 +-
 .../camel/springboot/cli/connector/SpringLocalCliConnector.java       | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringCliConnectorFactory.java b/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringCliConnectorFactory.java
index dbcb2e93e11..63188ec1733 100644
--- a/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringCliConnectorFactory.java
+++ b/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringCliConnectorFactory.java
@@ -31,7 +31,7 @@ public class SpringCliConnectorFactory extends DefaultCliConnectorFactory {
     @Override
     public CliConnector createConnector() {
         if (isEnabled()) {
-            return new SpringLocalCliConnector(applicationContext);
+            return new SpringLocalCliConnector(this, applicationContext);
         } else {
             return null;
         }
diff --git a/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringLocalCliConnector.java b/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringLocalCliConnector.java
index 8edfe228609..6cb7fa11952 100644
--- a/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringLocalCliConnector.java
+++ b/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/SpringLocalCliConnector.java
@@ -17,13 +17,15 @@
 package org.apache.camel.springboot.cli.connector;
 
 import org.apache.camel.cli.connector.LocalCliConnector;
+import org.apache.camel.spi.CliConnectorFactory;
 import org.springframework.context.support.AbstractApplicationContext;
 
 public class SpringLocalCliConnector extends LocalCliConnector {
 
     private final AbstractApplicationContext applicationContext;
 
-    public SpringLocalCliConnector(AbstractApplicationContext applicationContext) {
+    public SpringLocalCliConnector(CliConnectorFactory cliConnectorFactory, AbstractApplicationContext applicationContext) {
+        super(cliConnectorFactory);
         this.applicationContext = applicationContext;
     }
 


[camel-spring-boot] 02/02: CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit a391f64eeed93349061fa298792c400cfe6860b5
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 27 11:11:01 2022 +0200

    CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI
---
 .../connector/CliConnectorAutoConfiguration.java   |  6 ++---
 .../camel/spring/boot/CamelAutoConfiguration.java  | 26 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/CliConnectorAutoConfiguration.java b/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/CliConnectorAutoConfiguration.java
index c3ca214dd29..267c0066455 100644
--- a/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/CliConnectorAutoConfiguration.java
+++ b/components-starter/camel-cli-connector-starter/src/main/java/org/apache/camel/springboot/cli/connector/CliConnectorAutoConfiguration.java
@@ -23,8 +23,7 @@ import java.util.jar.Manifest;
 
 import org.apache.camel.spi.CliConnectorFactory;
 import org.springframework.boot.SpringBootVersion;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -34,8 +33,7 @@ import org.springframework.context.support.AbstractApplicationContext;
 
 @Configuration(proxyBeanMethods = false)
 @ConditionalOnProperty(name = "camel.cli.enabled", matchIfMissing = true)
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@AutoConfigureBefore(name = "org.apache.camel.spring.boot.CamelAutoConfiguration") // configure early to have Camel CLI during startup
 @EnableConfigurationProperties({CliConnectorConfiguration.class})
 public class CliConnectorAutoConfiguration {
 
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index c2c846edb93..9270c586ac9 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -26,20 +26,25 @@ import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.FluentProducerTemplate;
 import org.apache.camel.ProducerTemplate;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.properties.PropertiesComponent;
 import org.apache.camel.component.properties.PropertiesParser;
 import org.apache.camel.main.DefaultConfigurationConfigurer;
 import org.apache.camel.main.RoutesCollector;
 import org.apache.camel.model.Model;
 import org.apache.camel.spi.BeanRepository;
+import org.apache.camel.spi.CliConnector;
+import org.apache.camel.spi.CliConnectorFactory;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spring.spi.ApplicationContextBeanRepository;
 import org.apache.camel.spring.spi.CamelBeanPostProcessor;
 import org.apache.camel.support.DefaultRegistry;
+import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.startup.LoggingStartupStepRecorder;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
@@ -126,6 +131,9 @@ public class CamelAutoConfiguration {
             }
         }
 
+        // setup cli connector eager
+        configureCliConnector(applicationContext, camelContext);
+
         camelContext.adapt(ExtendedCamelContext.class).setPackageScanClassResolver(new FatJarPackageScanClassResolver());
         camelContext.adapt(ExtendedCamelContext.class).setPackageScanResourceResolver(new FatJarPackageScanResourceResolver());
 
@@ -144,6 +152,24 @@ public class CamelAutoConfiguration {
         return camelContext;
     }
 
+    static void configureCliConnector(ApplicationContext applicationContext,
+                                      CamelContext camelContext) {
+
+        // factory is bound eager into spring bean registry
+        try {
+            CliConnectorFactory ccf = applicationContext.getBean(CliConnectorFactory.class);
+            CliConnector connector = ccf.createConnector();
+            camelContext.addService(connector, true);
+            // force start cli connector early as otherwise it will be deferred until context is started
+            // but, we want status available during startup phase
+            ServiceHelper.startService(connector);
+        } catch (BeansException e) {
+            // optional so ignore
+        } catch (Exception e) {
+            throw RuntimeCamelException.wrapRuntimeException(e);
+        }
+    }
+
     static void configureStartupRecorder(CamelContext camelContext, CamelConfigurationProperties config) {
         if ("false".equals(config.getStartupRecorder())) {
             camelContext.adapt(ExtendedCamelContext.class).getStartupStepRecorder().setEnabled(false);