Thanks!

It would be great to have some filtering functionality as well. I've added
an example as a comment on the blog.

Regards,
/Johan


Claus Ibsen-2 wrote:
> 
> Hi
> 
> I posted a blog entry about the new feature in 2.2
> http://davsclaus.blogspot.com/2010/01/apache-camel-22-improved-test-kit.html
> 
> 
> 
> On Wed, Jan 13, 2010 at 8:14 PM, Johan Haleby <[email protected]>
> wrote:
>>
>> That looks really neat and would as far as I can see really help. It
>> would be
>> simple for me to wrap this in a test base class exposing something like
>> "awaitCompletion("direct:foo")".
>>
>> Would be desirable/possible to have something similar to modify or extend
>> an
>> already defined route? Something like:
>> RouteModificationBuilder builder = new
>> RouteModificationBuilder(camelContext);
>> builder.from("direct:foo").append(new Processor(..)).apply();
>>
>> Or can you do this already?
>>
>> Thanks,
>> /Johan
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> Hi
>>>
>>> I think CAMEL-2357 is what you are looking for
>>> https://issues.apache.org/activemq/browse/CAMEL-2357
>>>
>>> If you could take a look and maybe if you got some ideas or how you
>>> would like the API to be to support your use-case.
>>> There are some code snippets of my prototype in there.
>>>
>>>
>>> On Wed, Jan 13, 2010 at 9:11 AM, Johan Haleby <[email protected]>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> Thank you very much your suggestion with event notifiers worked! But I
>>>> hope
>>>> the changes in 2.2 can make it even better since now the
>>>> ExchangeCompletedEvent is sent several times (once per "from" in the
>>>> route
>>>> definition") and thus it's hard to know the count in the latch when
>>>> you're
>>>> not sure to which endpoint the users sends the first message.
>>>>
>>>> Would you recommend using a snapshot of version 2.2 right now? (We'd
>>>> also
>>>> like to use Spring 3 in our project).
>>>>
>>>> /Johan
>>>>
>>>>
>>>> Johan Haleby wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> Thanks for your quick response. Sorry for not mentioning it in the
>>>>> previous mail but I'm using Camel 2.1 just as you suspected.
>>>>> Unfortunately
>>>>> the first solution you posted (using async send and latches) won't
>>>>> work
>>>>> "out of the box" for me because the producer template is wrapped in an
>>>>> anti-corruption layer and the test should use this anti-corruption
>>>>> layer
>>>>> to send the message.
>>>>>
>>>>> I'll look into your suggestion by subscribing to the
>>>>> ExchangeDoneEvent.
>>>>> Is
>>>>> there anywhere I can find some documentation or example of how to do
>>>>> this?
>>>>> Or was it this that you went through in chapter 6 in the book?
>>>>>
>>>>> I look forward to the changes you mention in version 2.2, seems really
>>>>> useful and looks to fit very well with what I'm trying to do here. Is
>>>>> there an expected date when 2.2 may be available?
>>>>>
>>>>> Regards,
>>>>> /Johan
>>>>>
>>>>> The first option won't work
>>>>>
>>>>> Claus Ibsen-2 wrote:
>>>>>>
>>>>>> On Tue, Jan 12, 2010 at 5:56 PM, Johan Haleby
>>>>>> <[email protected]>
>>>>>> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm configuring routes using the Java DSL and it works very well.
>>>>>>> However
>>>>>>> during testing I'd like to somehow hook into the end of an already
>>>>>>> defined
>>>>>>> route to add notification support. The reason is that in my test I'm
>>>>>>> creating a message and pass it to a queue using Camel and this
>>>>>>> message
>>>>>>> is
>>>>>>> handled by a processor. After this processor has finished executing
>>>>>>> I'd
>>>>>>> like
>>>>>>> to receive some sort of notification but only during testing. The
>>>>>>> reason
>>>>>>> is
>>>>>>> that I'd like my test to wait until the processor has finished
>>>>>>> executing
>>>>>>> in
>>>>>>> my test case so that I can verify the result of the processor. For
>>>>>>> example:
>>>>>>>
>>>>>>> public void test() {
>>>>>>>  1. send a message to queue // just as you would in production
>>>>>>>  2. wait for the processor to finish // this is where I'd like to
>>>>>>> get
>>>>>>> a
>>>>>>> notification that the processor has finished so that it's ok to
>>>>>>> continue
>>>>>>> to
>>>>>>> the next step
>>>>>>>  3. verify result
>>>>>>> }
>>>>>>>
>>>>>>> The route may look something like:
>>>>>>> from("jms:queue:myqueue).process(new MyProcessor()); // A
>>>>>>> simplification
>>>>>>> of
>>>>>>> the production route
>>>>>>>
>>>>>>> Is there a preferred way of doing this in Camel without changing the
>>>>>>> code
>>>>>>> making up the "production route"? Or is there a better way to
>>>>>>> achieve
>>>>>>> it?
>>>>>>>
>>>>>>
>>>>>> Chapter 6 in the book go over this issue and how to address that:
>>>>>> http://www.manning.com/ibsen/ (will be updated in next MEAP due this
>>>>>> month)
>>>>>>
>>>>>> However we made it easier to do nice and easy from an unit test in
>>>>>> 2.2
>>>>>> which I assume is not the version of Camel you are using.
>>>>>> In 2.2 you can advice and route by adding additional cross cutting
>>>>>> concerns such as onCompletion, interceptors etc. which you would then
>>>>>> be able to use to know when its done.
>>>>>>
>>>>>> In Camel 2.1 you got the EventNotification which you actually can use
>>>>>> for that to get notified when an Exchange is done as it emits a
>>>>>> ExchangeDoneEvent.
>>>>>> I am currently improving that for 2.2 to let you filter out of the
>>>>>> box
>>>>>> the notifier so you only receive interesting events. But that should
>>>>>> not hold you back from using that in 2.1.
>>>>>>
>>>>>> We may improve this situation even more to make it easy as it can get
>>>>>> for testing production routes with test methods. So kinda inject
>>>>>> mocks
>>>>>> at end of routes etc. so you can use that to verify behavior etc.
>>>>>>
>>>>>>
>>>>>>> /Johan
>>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://old.nabble.com/Intercept-a-processor--tp27130672p27130672.html
>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Claus Ibsen
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>>>> Open Source Integration: http://fusesource.com
>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/Intercept-a-processor--tp27130672p27140999.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/Intercept-a-processor--tp27130672p27148815.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Intercept-a-processor--tp27130672p27173286.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to