Search code examples
apache-camelcamelcasingcamel-ftp

Mocking Camel http endpoint with resource stream in camel


I have a route like following

from(direct:start)
.process(new Processor() {
                    @Override
                public void process(Exchange exchange) throws Exception {
                   exchange.setProperty("doc_url", "http://myhost:5984/test/record/doc.csv"); 
                }
}).setHeader(Exchange.HTTP_METHOD, constant("GET"))
.convertBodyTo(String.class)
.recipientList(header("doc_url")
.split().streaming.process(new MyProcessor());

I don't want to run apache couchdb every time for testing. I want to make this http endpoint refer to resource file in the codebase. How to write this?


Solution

  • you can use the Camel AdviceWith feature to intercept/replace endpoints for testing...

     camelContext.getRouteDefinition("myRouteId")
      .adviceWith(camelContext, new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception
        {
            interceptSendToEndpoint("couchdb:http://localhost/database)
            .skipSendToOriginalEndpoint()
            .to("http://localhost:5984/test/record/doc.csv");
        }
    });