camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Need an interceptSendTo hook
Date Fri, 22 Apr 2016 18:35:31 GMT
On Fri, Apr 22, 2016 at 6:23 PM, Jeff Segal <jeffrey.segal@gmail.com> wrote:
> Minh - that's exactly what I'm trying to do. The issue is that I don't have
> a great hook to insert my advice where I want.
>
> Claus - here's a rough example:
>
> from("direct:start")
>         .setBody().constant(someXml)
>         .split().xpath(anXpathExpression)
>             .setHeader("myHeader", constant(somethingObtainedFromXpath))
>             .to("mock:polluted")
>             .split().xpath(anotherXpath)
>                 .to("seda:result");
>
>
> Let's say that I wanted to write some tests that ensured that the first
> xpath gave me what I wanted. I could just do what I've shown above and
> throw a mock endpoint in there that I can use as an adviceWith
> interceptSendTo hook, but I'm wondering if there's a better alternative
> than that.

If you assign ids, to you eips then you can use advice with to select
and add after/before them etc.
Or without id's you can do that based on EIPs type, such as split,
setHeader etc.

Take a look at those weaveById, weaveByType etc, and those selectors
http://camel.apache.org/advicewith.html

For example to add a mock before the 1st setHeader

weaveByType(SetHeaderDefinition.class).before().to("mock:beforeMyHeader")




>
> Jeff
>
>
>
>
> On Fri, Apr 22, 2016 at 6:58 AM, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>
>> On Thu, Apr 21, 2016 at 8:18 PM, Jeff Segal <jeffrey.segal@gmail.com>
>> wrote:
>> > I've got a route that I'd like to do some unit testing on at various
>> > stages. It does a few splits, sets some headers, etc. The problem is that
>> > there's no actual endpoint for me to intercept until the very end, but
>> I'd
>> > like to do some verification midway through.
>> >
>> > I suppose I could add arbitrary mock endpoints in key spots to use as
>> > interceptSendTo hooks, but I'd rather not pollute my route with test
>> > scaffolding like that. I've also tried using vanilla intercept().when()
>> > calls but those end up casting too wide a net to be useful (or don't
>> offer
>> > a straightforward way for to intercept where and only where I want to).
>> >
>> > Is there a better alternative to solving this problem than injecting
>> > arbitrary mocks into my production routes?
>> >
>>
>> Can you provide an example. I think that would help understand what you
>> explain.
>>
>>
>> > Jeff
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> http://davsclaus.com @davsclaus
>> Camel in Action 2: https://www.manning.com/ibsen2
>>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Mime
View raw message