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

fmariani 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 11646e76e17 Handle Spring Security Async Proxy
11646e76e17 is described below

commit 11646e76e17128c13c4835926ed20b01b61ac2bb
Author: Croway <federico.mariani.1...@gmail.com>
AuthorDate: Thu Mar 20 12:58:37 2025 +0100

    Handle Spring Security Async Proxy
---
 .../SpringBootPlatformHttpAutoConfiguration.java   | 33 ++++++++++++++--------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git 
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
 
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
index 041d13a6d3c..c091fddaf95 100644
--- 
a/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
+++ 
b/components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpAutoConfiguration.java
@@ -19,7 +19,8 @@ package org.apache.camel.component.platform.http.springboot;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.platform.http.PlatformHttpComponent;
 import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
@@ -36,33 +37,41 @@ import java.util.concurrent.Executor;
 @AutoConfigureAfter(name = { 
"org.apache.camel.component.servlet.springboot.PlatformHttpComponentAutoConfiguration",
         
"org.apache.camel.component.servlet.springboot.PlatformHttpComponentConverter" 
})
 public class SpringBootPlatformHttpAutoConfiguration {
-
-    @Autowired
-    CamelContext camelContext;
-
-    @Autowired
-    List<Executor> executors;
+    private static final Logger LOG = 
LoggerFactory.getLogger(SpringBootPlatformHttpAutoConfiguration.class);
 
     @Bean(name = "platform-http-engine")
     @ConditionalOnMissingBean(PlatformHttpEngine.class)
-    public PlatformHttpEngine springBootPlatformHttpEngine(Environment env) {
+    public PlatformHttpEngine springBootPlatformHttpEngine(Environment env, 
List<Executor> executors) {
         Executor executor;
 
         if (executors != null && !executors.isEmpty()) {
+            executors.forEach(e -> LOG.debug("Analyzing executor: {}", 
e.getClass().getName()));
             executor = executors.stream()
-                    .filter(e -> e instanceof ThreadPoolTaskExecutor || e 
instanceof SimpleAsyncTaskExecutor)
-                    .findFirst()
-                    .orElseThrow(() -> new RuntimeException("No 
ThreadPoolTaskExecutor or SimpleAsyncTaskExecutor configured"));
+                    .filter(e -> {
+                        try {
+                            return 
Class.forName("org.springframework.security.task.DelegatingSecurityContextAsyncTaskExecutor").isInstance(e);
+                        } catch (ClassNotFoundException ex) {
+                            // No problem, spring-security is not configured
+                            return false;
+                        }
+                    }).findAny().orElseGet(() ->
+                            executors.stream()
+                                    .filter(e -> e instanceof 
ThreadPoolTaskExecutor || e instanceof SimpleAsyncTaskExecutor)
+                                    .findFirst()
+                                    .orElseThrow(() -> new 
RuntimeException("No ThreadPoolTaskExecutor, SimpleAsyncTaskExecutor or 
DelegatingSecurityContextAsyncTaskExecutor configured"))
+                    );
         } else {
             throw new RuntimeException("No Executor configured");
         }
+
+        LOG.debug("Using executor: {}", executor.getClass().getName());
         int port = Integer.parseInt(env.getProperty("server.port", "8080"));
         return new SpringBootPlatformHttpEngine(port, executor);
     }
 
     @Bean
     @DependsOn("configurePlatformHttpComponent")
-    public CamelRequestHandlerMapping 
platformHttpEngineRequestMapping(PlatformHttpEngine engine) {
+    public CamelRequestHandlerMapping 
platformHttpEngineRequestMapping(PlatformHttpEngine engine, CamelContext 
camelContext) {
         PlatformHttpComponent component = 
camelContext.getComponent("platform-http", PlatformHttpComponent.class);
         CamelRequestHandlerMapping answer = new 
CamelRequestHandlerMapping(component, engine);
         return answer;

Reply via email to