Christopher Harris created CAMEL-10747:
------------------------------------------
Summary: 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.18.1, 2.17.5, 2.17.4
Environment: Ubuntu 16.04, OpenJDK 1.7, OpenJDK 1.8, Spring
4.2.6.RELEASE
Reporter: Christopher Harris
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)