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
The following commit(s) were added to refs/heads/main by this push:
new bfd7ad16a25 CAMEL-22233: camel-spring-boot - Properties component
should eager be configured (#1463)
bfd7ad16a25 is described below
commit bfd7ad16a25dcf189b87b3d13be91d78975c3eab
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Jul 11 15:59:20 2025 +0200
CAMEL-22233: camel-spring-boot - Properties component should eager be
configured (#1463)
---
.../src/main/docs/spring-boot.json | 26 +++---
.../camel/spring/boot/CamelAutoConfiguration.java | 44 +++++++++-
.../PropertiesComponentConfiguration.java | 2 +-
.../PropertiesComponentAutoConfiguration.java | 95 ----------------------
...rk.boot.autoconfigure.AutoConfiguration.imports | 1 -
5 files changed, 55 insertions(+), 113 deletions(-)
diff --git a/core/camel-spring-boot/src/main/docs/spring-boot.json
b/core/camel-spring-boot/src/main/docs/spring-boot.json
index f139ba3b1f2..f4bd625e757 100644
--- a/core/camel-spring-boot/src/main/docs/spring-boot.json
+++ b/core/camel-spring-boot/src/main/docs/spring-boot.json
@@ -64,8 +64,8 @@
},
{
"name": "camel.component.properties",
- "type":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration"
+ "type": "org.apache.camel.spring.boot.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration"
},
{
"name": "camel.dataformat",
@@ -370,72 +370,72 @@
"name": "camel.component.properties.auto-discover-properties-sources",
"type": "java.lang.Boolean",
"description": "Whether to automatically discovery instances of
PropertiesSource from registry and service factory.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration",
"defaultValue": true
},
{
"name": "camel.component.properties.default-fallback-enabled",
"type": "java.lang.Boolean",
"description": "If false, the component does not attempt to find a
default for the key by looking after the colon separator.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration",
"defaultValue": true
},
{
"name": "camel.component.properties.encoding",
"type": "java.lang.String",
"description": "Encoding to use when loading properties file from the
file system or classpath. If no encoding has been set, then the properties
files is loaded using ISO-8859-1 encoding (latin-1) as documented by
java.util.Properties#load(java.io.InputStream)",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration"
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration"
},
{
"name": "camel.component.properties.environment-variable-mode",
"type": "java.lang.Integer",
"description": "Sets the OS environment variables mode (0 = never, 1 =
fallback, 2 = override). The default mode (override) is to use OS environment
variables if present, and override any existing properties. OS environment
variable mode is checked before JVM system property mode",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration",
"defaultValue": 2
},
{
"name": "camel.component.properties.ignore-missing-location",
"type": "java.lang.Boolean",
"description": "Whether to silently ignore if a location cannot be
located, such as a properties file not found.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration",
"defaultValue": false
},
{
"name": "camel.component.properties.initial-properties",
"type": "java.lang.String",
"description": "Sets initial properties which will be used before any
locations are resolved. The option is a java.util.Properties type.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration"
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration"
},
{
"name": "camel.component.properties.location",
"type": "java.lang.String",
"description": "A list of locations to load properties. You can use
comma to separate multiple locations. This option will override any default
locations and only use the locations from this option.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration"
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration"
},
{
"name": "camel.component.properties.nested-placeholder",
"type": "java.lang.Boolean",
"description": "Whether to support nested property placeholders. A
nested placeholder, means that a placeholder, has also a placeholder, that
should be resolved (recursively).",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration",
"defaultValue": false
},
{
"name": "camel.component.properties.override-properties",
"type": "java.lang.String",
"description": "Sets a special list of override properties that take
precedence and will use first, if a property exist. The option is a
java.util.Properties type.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration"
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration"
},
{
"name": "camel.component.properties.properties-parser",
"type": "java.lang.String",
"description": "To use a custom PropertiesParser. The option is a
org.apache.camel.component.properties.PropertiesParser type.",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration"
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration"
},
{
"name": "camel.component.properties.system-properties-mode",
"type": "java.lang.Integer",
"description": "Sets the JVM system property mode (0 = never, 1 =
fallback, 2 = override). The default mode (override) is to use system
properties if present, and override any existing properties. OS environment
variable mode is checked before JVM system property mode",
- "sourceType":
"org.apache.camel.spring.boot.properties.PropertiesComponentConfiguration",
+ "sourceType":
"org.apache.camel.spring.boot.PropertiesComponentConfiguration",
"defaultValue": 2
},
{
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 de7cee12e8f..989b54a2751 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
@@ -22,6 +22,7 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
@@ -83,7 +84,7 @@ import org.springframework.core.env.MutablePropertySources;
@ImportRuntimeHints(CamelRuntimeHints.class)
@Configuration(proxyBeanMethods = false)
-@EnableConfigurationProperties({CamelConfigurationProperties.class,
CamelStartupConditionConfigurationProperties.class})
+@EnableConfigurationProperties({CamelConfigurationProperties.class,
CamelStartupConditionConfigurationProperties.class,
PropertiesComponentConfiguration.class})
@Import(TypeConversionConfiguration.class)
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
public class CamelAutoConfiguration {
@@ -383,9 +384,46 @@ public class CamelAutoConfiguration {
// (PropertiesComponent extends ServiceSupport) would be used for bean
// destruction. And we want Camel to handle the lifecycle.
@Bean(destroyMethod = "")
- PropertiesComponent properties(PropertiesParser parser) {
+ PropertiesComponent properties(ApplicationContext applicationContext,
PropertiesParser parser, PropertiesComponentConfiguration configuration) {
PropertiesComponent pc = new PropertiesComponent();
- pc.setPropertiesParser(parser);
+ if (configuration.getAutoDiscoverPropertiesSources() != null) {
+
pc.setAutoDiscoverPropertiesSources(configuration.getAutoDiscoverPropertiesSources());
+ }
+ if (configuration.getDefaultFallbackEnabled() != null) {
+
pc.setDefaultFallbackEnabled(configuration.getDefaultFallbackEnabled());
+ }
+ if (configuration.getEncoding() != null) {
+ pc.setEncoding(configuration.getEncoding());
+ }
+ if (configuration.getEnvironmentVariableMode() != null) {
+
pc.setEnvironmentVariableMode(configuration.getEnvironmentVariableMode());
+ }
+ if (configuration.getSystemPropertiesMode() != null) {
+
pc.setSystemPropertiesMode(configuration.getSystemPropertiesMode());
+ }
+ if (configuration.getIgnoreMissingLocation() != null) {
+
pc.setIgnoreMissingLocation(configuration.getIgnoreMissingLocation());
+ }
+ if (configuration.getNestedPlaceholder() != null) {
+ pc.setNestedPlaceholder(configuration.getNestedPlaceholder());
+ }
+ if (configuration.getLocation() != null) {
+ pc.setLocation(configuration.getLocation());
+ }
+ if (configuration.getInitialProperties() != null) {
+ Properties prop =
applicationContext.getBean(configuration.getInitialProperties(),
Properties.class);
+ pc.setInitialProperties(prop);
+ }
+ if (configuration.getOverrideProperties() != null) {
+ Properties prop =
applicationContext.getBean(configuration.getOverrideProperties(),
Properties.class);
+ pc.setOverrideProperties(prop);
+ }
+ if (configuration.getPropertiesParser() != null) {
+ PropertiesParser pp =
applicationContext.getBean(configuration.getPropertiesParser(),
PropertiesParser.class);
+ pc.setPropertiesParser(pp);
+ } else {
+ pc.setPropertiesParser(parser);
+ }
return pc;
}
diff --git
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/properties/PropertiesComponentConfiguration.java
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/PropertiesComponentConfiguration.java
similarity index 99%
rename from
core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/properties/PropertiesComponentConfiguration.java
rename to
core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/PropertiesComponentConfiguration.java
index b4a6c5ab31c..d65791d8e87 100644
---
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/properties/PropertiesComponentConfiguration.java
+++
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/PropertiesComponentConfiguration.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.spring.boot.properties;
+package org.apache.camel.spring.boot;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/properties/PropertiesComponentAutoConfiguration.java
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/properties/PropertiesComponentAutoConfiguration.java
deleted file mode 100644
index 2096b68c8af..00000000000
---
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/properties/PropertiesComponentAutoConfiguration.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.spring.boot.properties;
-
-import java.util.Properties;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.properties.PropertiesComponent;
-import org.apache.camel.component.properties.PropertiesParser;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import
org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Lazy;
-
-@Configuration(proxyBeanMethods = false)
-@Conditional({ ConditionalOnCamelContextAndAutoConfigurationBeans.class })
-@AutoConfigureAfter(CamelAutoConfiguration.class)
-@EnableConfigurationProperties({ PropertiesComponentConfiguration.class })
-public class PropertiesComponentAutoConfiguration {
-
- @Autowired
- private ApplicationContext applicationContext;
- @Autowired
- private CamelContext camelContext;
-
- @Lazy
- @Bean(name = "properties-component")
- @ConditionalOnMissingBean(PropertiesComponent.class)
- public PropertiesComponent
configurePropertiesComponent(PropertiesComponentConfiguration configuration)
- throws Exception {
- PropertiesComponent component = new PropertiesComponent();
- component.setCamelContext(camelContext);
-
- if (configuration.getAutoDiscoverPropertiesSources() != null) {
-
component.setAutoDiscoverPropertiesSources(configuration.getAutoDiscoverPropertiesSources());
- }
- if (configuration.getDefaultFallbackEnabled() != null) {
-
component.setDefaultFallbackEnabled(configuration.getDefaultFallbackEnabled());
- }
- if (configuration.getEncoding() != null) {
- component.setEncoding(configuration.getEncoding());
- }
- if (configuration.getEnvironmentVariableMode() != null) {
-
component.setEnvironmentVariableMode(configuration.getEnvironmentVariableMode());
- }
- if (configuration.getSystemPropertiesMode() != null) {
-
component.setSystemPropertiesMode(configuration.getSystemPropertiesMode());
- }
- if (configuration.getIgnoreMissingLocation() != null) {
-
component.setIgnoreMissingLocation(configuration.getIgnoreMissingLocation());
- }
- if (configuration.getNestedPlaceholder() != null) {
-
component.setNestedPlaceholder(configuration.getNestedPlaceholder());
- }
- if (configuration.getLocation() != null) {
- component.setLocation(configuration.getLocation());
- }
- if (configuration.getInitialProperties() != null) {
- Properties prop =
camelContext.getRegistry().lookupByNameAndType(configuration.getInitialProperties(),
- Properties.class);
- component.setInitialProperties(prop);
- }
- if (configuration.getOverrideProperties() != null) {
- Properties prop =
camelContext.getRegistry().lookupByNameAndType(configuration.getOverrideProperties(),
- Properties.class);
- component.setOverrideProperties(prop);
- }
- if (configuration.getPropertiesParser() != null) {
- PropertiesParser parser = camelContext.getRegistry()
- .lookupByNameAndType(configuration.getPropertiesParser(),
PropertiesParser.class);
- component.setPropertiesParser(parser);
- }
- return component;
- }
-}
diff --git
a/core/camel-spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
b/core/camel-spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 33babc9c09c..251d6b9bcf3 100644
---
a/core/camel-spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++
b/core/camel-spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -29,7 +29,6 @@
org.apache.camel.spring.boot.cloud.CamelCloudServiceDiscoveryAutoConfiguration
org.apache.camel.spring.boot.cloud.CamelCloudServiceFilterAutoConfiguration
org.apache.camel.spring.boot.cloud.CamelCloudServiceChooserAutoConfiguration
org.apache.camel.spring.boot.cluster.ClusteredRouteControllerAutoConfiguration
-org.apache.camel.spring.boot.properties.PropertiesComponentAutoConfiguration
org.apache.camel.spring.boot.routecontroller.SupervisingRouteControllerAutoConfiguration
org.apache.camel.spring.boot.security.CamelSSLAutoConfiguration
org.apache.camel.spring.boot.threadpool.CamelThreadPoolAutoConfiguration