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.git


The following commit(s) were added to refs/heads/main by this push:
     new f79cc775d8b camel-aws - Add dev console for AWS secrets
f79cc775d8b is described below

commit f79cc775d8bd0c8d92e6c1b2096a2d18ed365c50
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Sep 8 08:28:25 2022 +0200

    camel-aws - Add dev console for AWS secrets
---
 .../component/aws/secretsmanager/SecretsDevConsole.java    |  8 +++++---
 .../java/org/apache/camel/console/DevConsoleRegistry.java  |  8 ++++++++
 .../java/org/apache/camel/spi/PropertiesComponent.java     |  5 +++++
 .../org/apache/camel/impl/engine/AbstractCamelContext.java | 12 +++++++++++-
 .../apache/camel/impl/engine/BasePackageScanResolver.java  | 10 ++++++++++
 .../impl/engine/DefaultPackageScanResourceResolver.java    |  9 ---------
 .../camel/component/properties/PropertiesComponent.java    | 10 +++++++++-
 .../camel/impl/console/DefaultDevConsoleRegistry.java      | 14 +++++++++++---
 8 files changed, 59 insertions(+), 17 deletions(-)

diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
index 47f6181122c..9df22cb9476 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
@@ -47,9 +47,11 @@ public class SecretsDevConsole extends AbstractDevConsole {
     protected void doStart() throws Exception {
         super.doStart();
 
-        PropertiesFunction pf = 
getCamelContext().getPropertiesComponent().getPropertiesFunction("aws");
-        if (pf instanceof SecretsManagerPropertiesFunction) {
-            propertiesFunction = (SecretsManagerPropertiesFunction) pf;
+        if 
(getCamelContext().getPropertiesComponent().hasPropertiesFunction("aws")) {
+            PropertiesFunction pf = 
getCamelContext().getPropertiesComponent().getPropertiesFunction("aws");
+            if (pf instanceof SecretsManagerPropertiesFunction) {
+                propertiesFunction = (SecretsManagerPropertiesFunction) pf;
+            }
         }
         AwsVaultConfiguration aws = 
getCamelContext().getVaultConfiguration().getAwsVaultConfiguration();
         if (aws != null && aws.isRefreshEnabled()) {
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/console/DevConsoleRegistry.java 
b/core/camel-api/src/main/java/org/apache/camel/console/DevConsoleRegistry.java
index 3f843b2268f..bfc36bca1b6 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/console/DevConsoleRegistry.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/console/DevConsoleRegistry.java
@@ -110,4 +110,12 @@ public interface DevConsoleRegistry extends 
CamelContextAware, StaticService, Id
      */
     void loadDevConsoles();
 
+    /**
+     * Loads custom dev consoles by scanning classpath.
+     *
+     * @param force force re-scanning such as when additional JARs has been 
added to the classpath that
+     *              can include custom dev consoles
+     */
+    void loadDevConsoles(boolean force);
+
 }
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java 
b/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java
index 093e2f856de..4c284a7618f 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java
@@ -194,6 +194,11 @@ public interface PropertiesComponent extends StaticService 
{
      */
     PropertiesFunction getPropertiesFunction(String name);
 
+    /**
+     * Is there a {@link PropertiesFunction} with the given name?
+     */
+    boolean hasPropertiesFunction(String name);
+
     /**
      * Whether to silently ignore if a location cannot be located, such as a 
properties file not found.
      */
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index d89ae2be645..bbbec22a1ed 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -2871,7 +2871,7 @@ public abstract class AbstractCamelContext extends 
BaseService
         }
         // ensure additional dev consoles is loaded
         if (devConsole) {
-            StartupStep step4 = 
startupStepRecorder.beginStep(CamelContext.class, null, "Scan DevConsoles");
+            StartupStep step4 = 
startupStepRecorder.beginStep(CamelContext.class, null, "Scan DevConsoles 
(phase 1)");
             DevConsoleRegistry dcr = getExtension(DevConsoleRegistry.class);
             if (dcr != null) {
                 dcr.loadDevConsoles();
@@ -3420,6 +3420,16 @@ public abstract class AbstractCamelContext extends 
BaseService
             startupStepRecorder.endStep(subStep);
         }
 
+        // ensure extra dev consoles is loaded in case additional JARs has 
been dynamically added to the classpath
+        if (devConsole) {
+            StartupStep step = 
startupStepRecorder.beginStep(CamelContext.class, null, "Scan DevConsoles 
(phase 2)");
+            DevConsoleRegistry dcr = getExtension(DevConsoleRegistry.class);
+            if (dcr != null) {
+                dcr.loadDevConsoles(true);
+            }
+            startupStepRecorder.endStep(step);
+        }
+
         long cacheCounter = beanIntrospection != null ? 
beanIntrospection.getCachedClassesCounter() : 0;
         if (cacheCounter > 0) {
             LOG.debug("Clearing BeanIntrospection cache with {} objects using 
during starting Camel", cacheCounter);
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BasePackageScanResolver.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BasePackageScanResolver.java
index fb69ad07cd6..50d5e34d8a1 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BasePackageScanResolver.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/BasePackageScanResolver.java
@@ -61,6 +61,16 @@ public abstract class BasePackageScanResolver extends 
ServiceSupport implements
         classLoaders.add(BasePackageScanResolver.class.getClassLoader());
     }
 
+    @Override
+    protected void doInit() throws Exception {
+        super.doInit();
+
+        // ensure we also use app context class-loader
+        if (camelContext.getApplicationContextClassLoader() != null) {
+            addClassLoader(camelContext.getApplicationContextClassLoader());
+        }
+    }
+
     @Override
     public CamelContext getCamelContext() {
         return camelContext;
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
index acefea650e3..00516579e52 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
@@ -332,13 +332,4 @@ public class DefaultPackageScanResourceResolver extends 
BasePackageScanResolver
         }
     }
 
-    @Override
-    protected void doInit() throws Exception {
-        ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        // noop
-    }
 }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
 
b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 93b51b39089..f349ce26ba9 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -574,11 +574,19 @@ public class PropertiesComponent extends ServiceSupport
         propertiesFunctionResolver.addPropertiesFunction(function);
     }
 
+    @Override
+    public boolean hasPropertiesFunction(String name) {
+        return propertiesFunctionResolver.hasFunction(name);
+    }
+
     /**
      * Is there a {@link PropertiesFunction} with the given name?
+     *
+     * @deprecated  use hasPropertiesFunction
      */
+    @Deprecated
     public boolean hasFunction(String name) {
-        return propertiesFunctionResolver.hasFunction(name);
+        return hasPropertiesFunction(name);
     }
 
     @ManagedAttribute(description = "System properties mode")
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
index 8577305469e..7b97e6a7f96 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
@@ -164,21 +164,29 @@ public class DefaultDevConsoleRegistry extends 
ServiceSupport implements DevCons
 
     @Override
     public void loadDevConsoles() {
+        loadDevConsoles(false);
+    }
+
+    @Override
+    public void loadDevConsoles(boolean force) {
         StopWatch watch = new StopWatch();
 
-        if (!loadDevConsolesDone) {
+        if (!loadDevConsolesDone || force) {
             loadDevConsolesDone = true;
 
             DefaultDevConsolesLoader loader = new 
DefaultDevConsolesLoader(camelContext);
             Collection<DevConsole> col = loader.loadDevConsoles();
 
             if (col.size() > 0) {
+                int added = 0;
                 // register the loaded consoles
                 for (DevConsole console : col) {
-                    register(console);
+                    if (register(console)) {
+                        added++;
+                    }
                 }
                 String time = TimeUtils.printDuration(watch.taken(), true);
-                LOG.debug("Dev consoles (scanned: {}) loaded in {}", 
col.size(), time);
+                LOG.debug("Dev consoles (scanned: {} registered:{}) loaded in 
{}", col.size(), added, time);
             }
         }
     }

Reply via email to