[ 
https://issues.apache.org/jira/browse/CAMEL-23449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-23449.
---------------------------------
    Resolution: Not A Bug

Camel 4.19 onwards is Spring Boot 4, and therefore Spring 7.x and so on.

> Camel Spring Xml >= 4.19.0 no longer works with Spring 6
> --------------------------------------------------------
>
>                 Key: CAMEL-23449
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23449
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-spring-xml
>    Affects Versions: 4.19.0, 4.20.0
>            Reporter: Dr. Ernst-Udo Wallenborn
>            Priority: Major
>
> With Spring version 6.2.18 and Camel 4.19.0 or newer, our application throws 
> this at startup:
> {noformat}
> 2026-05-07 13:05:43,110 ERROR 
> [(:)][org.springframework.web.context.ContextLoader] Context initialization 
> failed
>   java.lang.NoSuchMethodError: 
> 'org.springframework.context.ApplicationContext 
> org.springframework.context.event.ContextRefreshedEvent.getSource()'
>       at 
> org.apache.camel.spring.xml.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:480)
>       at 
> org.apache.camel.spring.xml.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:99)
> {noformat}
> The code in CamelContextFactoryBean is:
> {code:java}
>         if (event.getSource() instanceof ApplicationContext) {
>             ApplicationContext appCtx = (ApplicationContext) 
> event.getSource();
> {code}
>  and hasn't changed significantly since 4.18.2. But running 
> camel-spring-xml-4.19.0.jar through the decompiler the code changes to:
> {code:java}
>     if (event.getSource() instanceof ApplicationContext) {
>       ApplicationContext appCtx = event.getSource();
> {code}
> where the typecast is removed. Apparently, Spring 7 implements getSource() in 
> ApplicationContextEvent:
> {code:java}
>       /**
>        * Get the {@link ApplicationContext} that the event was raised for.
>        * @return the {@code ApplicationContext} that the event was raised for
>        * @since 7.0
>        * @see #getApplicationContext()
>        */
>       @Override
>       public ApplicationContext getSource() {
>               return getApplicationContext();
>       }
> {code}
> and this covariant override causes the compiler to remove the cast.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to