[
https://issues.apache.org/jira/browse/CAMEL-10394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15582731#comment-15582731
]
Quinn Stevenson commented on CAMEL-10394:
-----------------------------------------
Could this be related to https://issues.apache.org/jira/browse/CAMEL-9570?
If I use the same type of workaround (a subclass of BlueprintCamelContext and
bypass the Camel Blueprint Extender), I can make it work.
> BlueprintCamelContext cannot find components created in
> RouteBuilder.configure method
> -------------------------------------------------------------------------------------
>
> Key: CAMEL-10394
> URL: https://issues.apache.org/jira/browse/CAMEL-10394
> Project: Camel
> Issue Type: Bug
> Components: camel-blueprint
> Reporter: Quinn Stevenson
> Assignee: Grzegorz Grzybek
>
> When a simple java RouteBuilder that creates a component and adds it to the
> context in the configure method is used in a blueprint, the context cannot
> find the component.
> Example Builder:
> public class TimerRouteBuilder extends RouteBuilder {
> @Override
> public void configure() throws Exception {
> TimerComponent timerComponent = new TimerComponent();
> getContext().addComponent("my-timer", timerComponent);
> from( "my-timer://test-timer")
> .log("Timer Fired")
> .to("mock://result");
> }
> }
> Example Blueprint:
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="
> http://www.osgi.org/xmlns/blueprint/v1.0.0
> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
> http://camel.apache.org/schema/blueprint
> http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
> <bean id="timer-route-builder"
> class="com.pronoia.camel.builder.TimerRouteBuilder"/>
> <camelContext id="blueprint-context"
> xmlns="http://camel.apache.org/schema/blueprint">
> <routeBuilder ref="timer-route-builder"/>
> </camelContext>
> </blueprint>
> This test fails:
> public class BlueprintTest extends CamelBlueprintTestSupport {
> @EndpointInject(uri = "mock://result")
> MockEndpoint result;
> @Override
> protected String getBlueprintDescriptor() {
> return "/OSGI-INF/blueprint/blueprint.xml";
> }
> @Test
> public void testRoute() throws Exception {
> result.expectedMessageCount(5);
> assertMockEndpointsSatisfied(10, TimeUnit.SECONDS);
> }
> }
> But this test passes
> public class CamelTest extends CamelTestSupport {
> @EndpointInject(uri = "mock://result")
> MockEndpoint result;
> @Override
> protected RoutesBuilder createRouteBuilder() throws Exception {
> return new TimerRouteBuilder();
> }
> @Test
> public void testRoute() throws Exception {
> result.expectedMessageCount(5);
> assertMockEndpointsSatisfied(10, TimeUnit.SECONDS);
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)