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

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

commit ad466ad998179d8c9557c0a1760b8c20b9d3901f
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Jun 30 07:53:56 2026 +0200

    CAMEL-23858: camel-spring-boot - Configuring camel.main.profile should be 
supported
---
 .../src/main/docs/spring-boot.json                 |  6 +++++
 .../camel/spring/boot/CamelAutoConfiguration.java  | 27 ++++++++++++++++++++++
 .../CamelErrorRegistryAutoConfiguration.java       |  4 ++++
 .../CamelSecurityPolicyAutoConfiguration.java      |  8 +++++++
 .../boot/trace/CamelTraceAutoConfiguration.java    |  4 ++++
 tooling/camel-spring-boot-dependencies/pom.xml     |  2 +-
 6 files changed, 50 insertions(+), 1 deletion(-)

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 cf2734271fe..80b6541d6ca 100644
--- a/core/camel-spring-boot/src/main/docs/spring-boot.json
+++ b/core/camel-spring-boot/src/main/docs/spring-boot.json
@@ -852,6 +852,12 @@
       "sourceType": 
"org.apache.camel.spring.boot.CamelConfigurationProperties$Main",
       "defaultValue": 1000
     },
+    {
+      "name": "camel.main.profile",
+      "type": "java.lang.String",
+      "description": "Camel profile to use when running. The dev profile is 
for development, which enables a set of additional developer focus 
functionality, tracing, debugging, and gathering additional runtime statistics 
that are useful during development. However, those additional features has a 
slight overhead cost, and are not enabled for production profile. The default 
profile is prod.",
+      "sourceType": 
"org.apache.camel.spring.boot.CamelConfigurationProperties$Main"
+    },
     {
       "name": "camel.main.route-filter-exclude-pattern",
       "type": "java.lang.String",
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 434c2662288..047af95ba91 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
@@ -37,6 +37,7 @@ import org.apache.camel.component.properties.PropertiesParser;
 import org.apache.camel.main.DebuggerConfigurationProperties;
 import org.apache.camel.main.DefaultConfigurationConfigurer;
 import org.apache.camel.main.MainListener;
+import org.apache.camel.main.ProfileConfigurer;
 import org.apache.camel.main.RoutesCollector;
 import org.apache.camel.main.fatjar.FatJarPackageScanClassResolver;
 import org.apache.camel.main.fatjar.FatJarPackageScanResourceResolver;
@@ -216,6 +217,11 @@ public class CamelAutoConfiguration {
                     config.getMain().getRouteFilterIncludePattern(), 
config.getMain().getRouteFilterExcludePattern());
         }
 
+        // configure profile (dev/prod) defaults before applying main 
configuration,
+        // so that profile defaults are set but user-explicit properties take 
precedence
+        Properties autoConfigured = 
doExtractCamelMainProperties(applicationContext);
+        ProfileConfigurer.configureCommon(camelContext, 
config.getMain().getProfile(), config.getMain(), autoConfigured);
+
         // configure the common/default options
         DefaultConfigurationConfigurer.configure(camelContext, 
config.getMain());
         // lookup and configure SPI beans
@@ -230,6 +236,27 @@ public class CamelAutoConfiguration {
         return camelContext;
     }
 
+    /**
+     * Collect all camel.main.* property names that the user has explicitly 
configured
+     * so that ProfileConfigurer does not override them with profile defaults.
+     */
+    protected static Properties 
doExtractCamelMainProperties(ApplicationContext applicationContext) {
+        Properties answer = new Properties();
+        Environment env = applicationContext.getEnvironment();
+        if (env instanceof ConfigurableEnvironment cev) {
+            cev.getPropertySources().forEach(ps -> {
+                if (ps instanceof EnumerablePropertySource<?> eps) {
+                    for (String n : eps.getPropertyNames()) {
+                        if (n.startsWith("camel.main.")) {
+                            answer.put(n, cev.getProperty(n, ""));
+                        }
+                    }
+                }
+            });
+        }
+        return answer;
+    }
+
     protected static Map<String, String> 
doExtractVariablesFromSpringBoot(ConfigurableEnvironment env) {
         Map<String, String> answer = new LinkedHashMap<>();
 
diff --git 
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/errorregistry/CamelErrorRegistryAutoConfiguration.java
 
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/errorregistry/CamelErrorRegistryAutoConfiguration.java
index d5dc728314c..401ca4d9690 100644
--- 
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/errorregistry/CamelErrorRegistryAutoConfiguration.java
+++ 
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/errorregistry/CamelErrorRegistryAutoConfiguration.java
@@ -33,6 +33,10 @@ public class CamelErrorRegistryAutoConfiguration {
 
     @Bean
     public ErrorRegistry errorRegistry(CamelContext camelContext, 
CamelErrorRegistryConfigurationProperties config) {
+        // dev profile enables error registry to capture routing errors for 
tooling (TUI)
+        if (!config.isEnabled() && 
"dev".equals(camelContext.getCamelContextExtension().getProfile())) {
+            config.setEnabled(true);
+        }
         if (!config.isEnabled()) {
             return null;
         }
diff --git 
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSecurityPolicyAutoConfiguration.java
 
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSecurityPolicyAutoConfiguration.java
index 984c010961a..909287d45c7 100644
--- 
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSecurityPolicyAutoConfiguration.java
+++ 
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/security/CamelSecurityPolicyAutoConfiguration.java
@@ -50,6 +50,14 @@ public class CamelSecurityPolicyAutoConfiguration {
     SecurityPolicyResult camelSecurityPolicyResult(CamelContext camelContext,
             CamelSecurityPolicyConfigurationProperties config, Environment 
environment) {
 
+        // apply profile-based security defaults
+        String profile = camelContext.getCamelContextExtension().getProfile();
+        if ("dev".equals(profile) && config.getInsecureDevPolicy() == null) {
+            config.setInsecureDevPolicy("allow");
+        } else if ("prod".equals(profile) && 
"warn".equals(config.getPolicy())) {
+            config.setPolicy("fail");
+        }
+
         SecurityConfigurationProperties securityConfig = 
applySecurityProperties(camelContext, config);
 
         Map<String, Object> camelProperties = 
extractCamelProperties(environment);
diff --git 
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java
 
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java
index c3d3f3b0b34..9c03a19d5ba 100644
--- 
a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java
+++ 
b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java
@@ -32,6 +32,10 @@ public class CamelTraceAutoConfiguration {
     @Bean
     public BacklogTracer backlogTracer(CamelContext camelContext, 
CamelTraceConfigurationProperties config)
             throws Exception {
+        // dev profile enables tracer standby so tooling (TUI) can activate 
tracing on demand
+        if (!config.isStandby() && 
"dev".equals(camelContext.getCamelContextExtension().getProfile())) {
+            config.setStandby(true);
+        }
         if (!config.isEnabled() && !config.isStandby()) {
             return null;
         }
diff --git a/tooling/camel-spring-boot-dependencies/pom.xml 
b/tooling/camel-spring-boot-dependencies/pom.xml
index 87a4fddc99c..c768db4ef8d 100644
--- a/tooling/camel-spring-boot-dependencies/pom.xml
+++ b/tooling/camel-spring-boot-dependencies/pom.xml
@@ -5223,7 +5223,7 @@
       <dependency>
         <groupId>org.junit</groupId>
         <artifactId>junit-start</artifactId>
-        <version>6.1.0</version>
+        <version>6.1.1</version>
       </dependency>
       <dependency>
         <groupId>org.xmlunit</groupId>

Reply via email to