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 2021/04/20 06:15:51 UTC
[camel] branch master updated: CAMEL-16527: Unable to disable
component or endpoint autowiring with camel-main
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new d45e254 CAMEL-16527: Unable to disable component or endpoint autowiring with camel-main
d45e254 is described below
commit d45e254875f52d0fb7e668f39ad29539f5161536
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Apr 20 08:14:54 2021 +0200
CAMEL-16527: Unable to disable component or endpoint autowiring with camel-main
---
.../impl/engine/AutowiredLifecycleStrategy.java | 25 ++++++++++++++--------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AutowiredLifecycleStrategy.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AutowiredLifecycleStrategy.java
index 574b329..e2b878a 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AutowiredLifecycleStrategy.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AutowiredLifecycleStrategy.java
@@ -38,33 +38,40 @@ class AutowiredLifecycleStrategy extends LifecycleStrategySupport {
// provisional maps to hold components, dataformats, languages that are created during
// starting camel, but need to defer autowiring until later in case additional configuration
- // would turn this per instance
+ // would turn off autowired for some components
private final Map<String, Component> autowrieComponents = new HashMap<>();
private final Map<String, DataFormat> autowrieDataFormats = new HashMap<>();
private final Map<String, Language> autowrieLanguages = new HashMap<>();
private final ExtendedCamelContext camelContext;
- private volatile boolean initialized;
+ private volatile boolean initializing;
public AutowiredLifecycleStrategy(CamelContext camelContext) {
this.camelContext = (ExtendedCamelContext) camelContext;
}
@Override
- public void onContextInitialized(CamelContext context) throws VetoCamelContextStartException {
- // we are initializd so lets do autowiring on what we have collected during bootstrap
+ public void onContextInitializing(CamelContext context) throws VetoCamelContextStartException {
+ // we have parsed configuration (such as via camel-main) and are now initializing
+ // so lets do autowiring on what we have collected so far
+ // we also need to eager autowire components as when they create endpoints they must be configured with
+ // those autowired options
autowrieComponents.forEach(this::autowireComponent);
autowrieDataFormats.forEach(this::autowireDataFormat);
autowrieLanguages.forEach(this::autowireLanguage);
autowrieComponents.clear();
autowrieDataFormats.clear();
autowrieLanguages.clear();
- // we are now done initialized
- initialized = true;
+ initializing = true;
+ }
+
+ @Override
+ public void onContextStopped(CamelContext context) {
+ initializing = false;
}
@Override
public void onComponentAdd(String name, Component component) {
- if (initialized) {
+ if (initializing) {
autowireComponent(name, component);
} else {
autowrieComponents.put(name, component);
@@ -73,7 +80,7 @@ class AutowiredLifecycleStrategy extends LifecycleStrategySupport {
@Override
public void onDataFormatCreated(String name, DataFormat dataFormat) {
- if (initialized) {
+ if (initializing) {
autowireDataFormat(name, dataFormat);
} else {
autowrieDataFormats.put(name, dataFormat);
@@ -82,7 +89,7 @@ class AutowiredLifecycleStrategy extends LifecycleStrategySupport {
@Override
public void onLanguageCreated(String name, Language language) {
- if (initialized) {
+ if (initializing) {
autowireLanguage(name, language);
} else {
autowrieLanguages.put(name, language);