I seem to be having an issue with using NotifyBuilder on a nested route, when
using "direct:..." consumer. fromRoute(...).whenDone(..) and
from(...).whenDone(...) do not seem to Work in my case.

I am running camel 2.16.2 on a windows 8 box.

The test below fails on the  testFromRouteDirect and testFromEndpointDirect
test cases. Is that a bug or intended behaviour?

---
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.NotifyBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultExchange;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

import java.util.concurrent.TimeUnit;

public class NotifyWhenNestedRouteIsDone extends CamelTestSupport {

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {

                from("direct:a")
                        .routeId("A")
                        .to("seda:doStuffLater")
                        .to("direct:doStuffNow")
                        .log(LoggingLevel.INFO, "Did stuff");

                from("seda:doStuffLater")
                        .routeId("B")
                        .log(LoggingLevel.INFO, "Procrastinating");

                from("direct:doStuffNow")
                        .routeId("C")
                        .log(LoggingLevel.INFO, "Doing stuff");
            }
        };
    }

    @Test
    public void testFromRouteSeda() {
        NotifyBuilder nb = new
NotifyBuilder(context).fromRoute("B").whenDone(1).create();
        Exchange exchange = new DefaultExchange(context);
        exchange = template.send("direct:a", exchange);
        boolean done = nb.matches(5, TimeUnit.SECONDS);
        assertTrue("Timed out waiting for notify builder fromRoute(B)",
done);
    }

    @Test
    public void testFromEndpointSeda() {
        NotifyBuilder nb = new
NotifyBuilder(context).from("seda:doStuffLater").whenDone(1).create();
        Exchange exchange = new DefaultExchange(context);
        exchange = template.send("direct:a", exchange);
        boolean done = nb.matches(5, TimeUnit.SECONDS);
        assertTrue("Timed out waiting for notify builder
from(seda:doStuffLater)", done);
    }

    @Test
    public void testFromRouteDirect() {
        NotifyBuilder nb = new
NotifyBuilder(context).fromRoute("C").whenDone(1).create();
        Exchange exchange = new DefaultExchange(context);
        exchange = template.send("direct:a", exchange);
        boolean done = nb.matches(5, TimeUnit.SECONDS);
        assertTrue("Timed out waiting for notify builder fromRoute(C)",
done);
    }

    @Test
    public void testFromEndpointDirect() {
        NotifyBuilder nb = new
NotifyBuilder(context).from("direct:doStuffNow").whenDone(1).create();
        Exchange exchange = new DefaultExchange(context);
        exchange = template.send("direct:a", exchange);
        boolean done = nb.matches(5, TimeUnit.SECONDS);
        assertTrue("Timed out waiting for notify builder
from(seda:doStuffNow)", done);
    }
}
---

Kind regards
Søren



--
View this message in context: 
http://camel.465427.n5.nabble.com/An-issue-with-NotifyBuilder-on-nested-routes-tp5777774.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to