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 <[email protected]>
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);
}
}
}