Execptions cannot be propagated to the parent route when using LogEIP
---------------------------------------------------------------------

                 Key: CAMEL-4388
                 URL: https://issues.apache.org/jira/browse/CAMEL-4388
             Project: Camel
          Issue Type: Bug
          Components: camel-core
            Reporter: Sergey Zhemzhitsky
            Priority: Critical


Here is unit test that demonstrates the problem.
For the unit test pass successfully it's necessary to delete LogEIP from the 
route.

{code}
package org.apache.camel.impl;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

public class PropagateExceptionTest extends CamelTestSupport {

    @Test
    public void failure() throws Exception {
        getMockEndpoint("mock:handleFailure").whenAnyExchangeReceived(new 
Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                throw new RuntimeException("TEST EXCEPTION");
            }
        });

        getMockEndpoint("mock:exceptionFailure").expectedMessageCount(1);
        sendBody("direct:startFailure", "Hello World");
        assertMockEndpointsSatisfied();
    }

    @Test
    public void success() throws Exception {
        getMockEndpoint("mock:handleSuccess").whenAnyExchangeReceived(new 
Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                throw new RuntimeException("TEST EXCEPTION");
            }
        });

        getMockEndpoint("mock:exceptionSuccess").expectedMessageCount(1);
        sendBody("direct:startSuccess", "Hello World");
        assertMockEndpointsSatisfied();
    }

    @Override
    protected RouteBuilder[] createRouteBuilders() throws Exception {
        return new RouteBuilder[] {
                new RouteBuilder() {
                    public void configure() throws Exception {
                        from("direct:startFailure")
                            .onException(Throwable.class)
                                .to("mock:exceptionFailure")
                                .end()
                            .to("direct:handleFailure")
                            .to("mock:resultFailure");

                        from("direct:handleFailure")
                            .errorHandler(noErrorHandler())
                            .log("FAULTY LOG")
                            .to("mock:handleFailure");
                    }
                },

                new RouteBuilder() {
                    public void configure() throws Exception {
                        from("direct:startSuccess")
                            .onException(Throwable.class)
                                .to("mock:exceptionSuccess")
                                .end()
                            .to("direct:handleSuccess")
                            .to("mock:resultSuccess");

                        from("direct:handleSuccess")
                            .errorHandler(noErrorHandler())
                            .to("mock:handleSuccess");
                    }
                }
        };
    }
}
{code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to