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

Claus Ibsen updated CAMEL-10747:
--------------------------------
    Fix Version/s: 2.17.6

> CamelContext is not been set in VMConsumer when used with POJO @Consume
> -----------------------------------------------------------------------
>
>                 Key: CAMEL-10747
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10747
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.17.4, 2.17.5, 2.18.1
>         Environment: Ubuntu 16.04, OpenJDK 1.7, OpenJDK 1.8, Spring 
> 4.2.6.RELEASE
>            Reporter: Christopher Harris
>             Fix For: 2.17.6, 2.18.3, 2.19.0
>
>
> In Spring environment, [DefaultCamelBeanPostProcessor relies on 
> CamelPostProcessorHelper to inject 
> consumer|https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelBeanPostProcessor.java#L214]
>  , when [CamelPostProcessorHelper creates a 
> VMConsumer|https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java#L108]
>  from the endpoint based on the use of @Consume annotation, it then tries to 
> start the consumer as a service. 
> Because the consumer endpoint of @Consume was created using the camel context 
> from CamelPostProcessorHelper, it puts the VMConsumer  service in to 
> [deferred 
> start|https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java#L123]
>  until the camel context is finished starting. The service is ultimately been 
> [added to the 
> DeferServiceStartupListener|https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java#L1333].
>  Then the DeferServiceStartupListener tries to start the VMConsumer at a 
> later stage. 2.17.3 and 2.18.0 does not suffer this problem.
> The problem is non of the process above has considered the fact that the 
> VMConsumer is an instance of CamelContextAware and injects the correct camel 
> context to it. This then leads to the VMConsumer tries to prepare the 
> exchange with a null pointer reference as its camel context.
> Because the exchange now has null as camel context, a NPE is thrown at 
> https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java#L519
>  when it tries to create the exchange id.
> This problem only happened after issue 
> [CAMEL-10406|https://issues.apache.org/jira/browse/CAMEL-10406] is merged in



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to