[
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.19.0
2.18.3
> 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)