Quinn Stevenson created CAMEL-10394:
---------------------------------------
Summary: 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)