Skip to content

Commit

Permalink
CAMEL-21359: camel-spring-boot - Add support for MainListener
Browse files Browse the repository at this point in the history
  • Loading branch information
davsclaus committed Jan 24, 2025
1 parent 3a1c3e1 commit 2009ad9
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import org.apache.camel.clock.Clock;
import org.apache.camel.component.properties.PropertiesComponent;
import org.apache.camel.component.properties.PropertiesParser;
import org.apache.camel.main.BaseMainSupport;
import org.apache.camel.main.DefaultConfigurationConfigurer;
import org.apache.camel.main.MainListener;
import org.apache.camel.main.RoutesCollector;
Expand Down Expand Up @@ -104,9 +103,9 @@ public class CamelAutoConfiguration {
@Bean(destroyMethod = "")
@ConditionalOnMissingBean(CamelContext.class)
CamelContext camelContext(ApplicationContext applicationContext, CamelConfigurationProperties config,
CamelBeanPostProcessor beanPostProcessor, StartupConditionStrategy startup,
CamelSpringBootApplicationController controller) throws Exception {
CamelBeanPostProcessor beanPostProcessor, StartupConditionStrategy startup) throws Exception {
Clock clock = new ResetableClock();
CamelSpringBootApplicationController controller = new CamelSpringBootApplicationController(applicationContext);
CamelContext camelContext = new SpringBootCamelContext(applicationContext,
config.getSpringboot().isWarnOnEarlyShutdown(), controller);
camelContext.getClock().add(ContextEvents.BOOT, clock);
Expand Down Expand Up @@ -288,22 +287,6 @@ static void configureStartupRecorder(CamelContext camelContext, CamelConfigurati
}
}

/**
* Create controller eager
*/
@Bean
CamelSpringBootApplicationController applicationController(ApplicationContext applicationContext) {
CamelSpringBootApplicationController controller = new CamelSpringBootApplicationController(applicationContext);

// setup main listeners eager on controller
final Map<String, MainListener> listeners = applicationContext.getBeansOfType(MainListener.class);
for (MainListener listener : listeners.values()) {
controller.getMain().addMainListener(listener);
}

return controller;
}

@Bean
@ConditionalOnMissingBean(RoutesCollector.class)
@ConditionalOnMissingClass("org.apache.camel.spring.boot.endpointdsl.EndpointDslRouteCollector")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,15 @@
import org.apache.camel.CamelContextAware;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.main.Main;
import org.apache.camel.main.MainListener;
import org.apache.camel.main.MainShutdownStrategy;
import org.apache.camel.main.SimpleMainShutdownStrategy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;

import java.util.Map;

public class CamelSpringBootApplicationController implements CamelContextAware {
private static final Logger LOG = LoggerFactory.getLogger(CamelSpringBootApplicationController.class);

Expand All @@ -35,6 +38,11 @@ public class CamelSpringBootApplicationController implements CamelContextAware {

public CamelSpringBootApplicationController(final ApplicationContext applicationContext) {
this.main = new CamelSpringMain(applicationContext);
// inject main listeners
final Map<String, MainListener> listeners = applicationContext.getBeansOfType(MainListener.class);
for (MainListener listener : listeners.values()) {
this.main.addMainListener(listener);
}
}

public Main getMain() {
Expand Down

0 comments on commit 2009ad9

Please sign in to comment.