[ 
https://issues.apache.org/activemq/browse/CAMEL-1509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50969#action_50969
 ] 

Willem Jiang commented on CAMEL-1509:
-------------------------------------

Hi
Can you add a check for the camelCtx.isStarted() for waiting for camelCtx 
starting?
{code}
camelCtx = new DefaultCamelContext()
route = new MyRoute()
camelCtx.addRoutes(route);

Thread.start {
    camelCtx.start();
}

while (!camelCtx.isStarted() || camelCtx.isStarting()) {
    Thread.sleep(1000)
}
{code}
I just checked the code. If the camelCtx.start() code is running later than the 
camelCtx.isStarting() check,
the test will failed since the route rule is not started yet.


> DefaultCamelContext.isStarting returns incorrect status
> -------------------------------------------------------
>
>                 Key: CAMEL-1509
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1509
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 1.6.0, 2.0-M1
>            Reporter: Alexander Kleymenov
>            Assignee: Willem Jiang
>
> DefaultCamelContext.isStarting returns true while it actually not started.
> So the following groovy test case fails:
> {code:title=test.groovy}
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.language.groovy.GroovyRouteBuilder;
> class Foo {
>     def name
>     def data
>     void run(data) {
>         println "[${name}] got ${data}"
>         this.data = data
>     }
> }
> public class MyRoute extends GroovyRouteBuilder {
>     def bean = new Foo(name: "bean")
>     protected void configure() {
>         from("direct:start").bean(bean, "run")
>     }
> }
> camelCtx = new DefaultCamelContext()
> route = new MyRoute()
> camelCtx.addRoutes(route);
> Thread.start {
>     camelCtx.start();
> }
> while (camelCtx.isStarting()) {
>     Thread.sleep(1000)
> }
> camelCtx.createProducerTemplate().sendBody("direct:start", "data")
> if (!route.bean.data) {
>     println "FAILED: no data has been received!"
> } else {
>     println "PASSED"
> }
> camelCtx.stop();
> {code}
> Note, after moving of  
> {code}
> camelCtx.addRoutes(route)
> {code}
>  after
> {code}
> Thread.start {
>     camelCtx.start();
> }
> {code}
> the test passes.
> Also the program does not finish after camelCtx.stop();

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to