You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by liugang <cl...@gmail.com> on 2012/11/16 07:07:23 UTC

Problem of Intercept with When Condition

Hi All:

 

I have following codes:

                                     intercept().process(new Processor() {

 

                                               public void process(Exchange
exchange) throws Exception {

 
System.out.println("Intercept without condition");

                                               }

                                     }).when(simple("${in.body} ==
'a'")).process(new Processor() {

 

                                               public void process(Exchange
exchange) throws Exception {

 
System.out.println("Intercept when body equals 'a'");

                                               }

                                     });

 
from("timer:foo?repeatCount=1").setBody(constant("b")).process(

                                                        new Processor() {

 

                                                                 public void
process(Exchange exchange)

 
throws Exception {

 
System.out.println(exchange.getIn().getBody(

 
String.class));

                                                                 }

                                                        });

 

The result is:

 

Intercept without condition

Intercept when body equals 'a'

Intercept without condition

Intercept when body equals 'a'

b

 

But I think the correct one should be:

 

Intercept without condition

Intercept without condition

b

 

and if I move the when condition to next behind the intercept(), then it
works fine. 

 

Does anybody can have a look, and check it's a Camel bug or not?

 

Thanks

GangLiu


RE: Problem of Intercept with When Condition

Posted by liugang <cl...@gmail.com>.
Ok, understand. 

Thanks.

-----Original Message-----
From: Claus Ibsen [mailto:claus.ibsen@gmail.com] 
Sent: Friday, November 16, 2012 4:46 PM
To: users@camel.apache.org
Subject: Re: Problem of Intercept with When Condition

On Fri, Nov 16, 2012 at 8:52 AM, liugang <cl...@gmail.com> wrote:
> Hi Claus:
>
> Ah, ok, if so, then no problem.
> But from the code, user can write everything what he wants, there's no any
> hint to indicate that. May be it's better to improve it.
>

Thats not really possible as we have stretched how far you can take
plain Java language as a DSL.

And if you follow the documentation then you get it correct. And if
you follow common sense.

eg I want to intercept WHEN x == 5


>
> Thanks
> GangLiu
> -----Original Message-----
> From: Claus Ibsen [mailto:claus.ibsen@gmail.com]
> Sent: Friday, November 16, 2012 3:49 PM
> To: users@camel.apache.org
> Subject: Re: Problem of Intercept with When Condition
>
> On Fri, Nov 16, 2012 at 8:01 AM, liugang <cl...@gmail.com> wrote:
>> Hi Willem:
>>
>> Yes, if you add the "when" close to the "intercept", there's no problem.
>>
>> But if add some more between them, for example:
>>         Intercept().process(processor).when(....).to(...);
>>
>> Then you will see the problem.
>>
>
> The when *must* be right after the intercept!
>
>> Please have a try.
>>
>> Thanks
>> GangLiu
>>
>> -----Original Message-----
>> From: Willem jiang [mailto:willem.jiang@gmail.com]
>> Sent: Friday, November 16, 2012 2:53 PM
>> To: users@camel.apache.org
>> Subject: Re: Problem of Intercept with When Condition
>>
>> Hi,
>>
>> I just did a quick test on camel trunk, I cannot reproduce the error that
> you get.
>> You can check out the unit test here[1].
>>
>>
>
[1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org
> /apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java
>>
>> --
>> Willem Jiang
>>
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Web: http://www.fusesource.com | http://www.redhat.com
>> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
> (English)
>>           http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
>> Twitter: willemjiang
>> Weibo: willemjiang
>>
>>
>>
>>
>>
>> On Friday, November 16, 2012 at 2:07 PM, liugang wrote:
>>
>>> Hi All:
>>>
>>>
>>> I have following codes:
>>>
>>> intercept().process(new Processor() {
>>>
>>>
>>> public void process(Exchange
>>> exchange) throws Exception {
>>>
>>> System.out.println("Intercept without condition");
>>>
>>> }
>>>
>>> }).when(simple("${in.body} ==
>>> 'a'")).process(new Processor() {
>>>
>>>
>>> public void process(Exchange
>>> exchange) throws Exception {
>>>
>>> System.out.println("Intercept when body equals 'a'");
>>>
>>> }
>>>
>>> });
>>>
>>> from("timer:foo?repeatCount=1").setBody(constant("b")).process(
>>>
>>> new Processor() {
>>>
>>>
>>> public void
>>> process(Exchange exchange)
>>>
>>> throws Exception {
>>>
>>> System.out.println(exchange.getIn().getBody(
>>>
>>> String.class));
>>>
>>> }
>>>
>>> });
>>>
>>>
>>> The result is:
>>>
>>>
>>> Intercept without condition
>>>
>>> Intercept when body equals 'a'
>>>
>>> Intercept without condition
>>>
>>> Intercept when body equals 'a'
>>>
>>> b
>>>
>>>
>>> But I think the correct one should be:
>>>
>>>
>>> Intercept without condition
>>>
>>> Intercept without condition
>>>
>>> b
>>>
>>>
>>> and if I move the when condition to next behind the intercept(), then it
>>> works fine.
>>>
>>>
>>> Does anybody can have a look, and check it's a Camel bug or not?
>>>
>>>
>>> Thanks
>>>
>>> GangLiu
>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Email: cibsen@redhat.com
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen


Re: Problem of Intercept with When Condition

Posted by Claus Ibsen <cl...@gmail.com>.
On Fri, Nov 16, 2012 at 8:52 AM, liugang <cl...@gmail.com> wrote:
> Hi Claus:
>
> Ah, ok, if so, then no problem.
> But from the code, user can write everything what he wants, there's no any
> hint to indicate that. May be it's better to improve it.
>

Thats not really possible as we have stretched how far you can take
plain Java language as a DSL.

And if you follow the documentation then you get it correct. And if
you follow common sense.

eg I want to intercept WHEN x == 5


>
> Thanks
> GangLiu
> -----Original Message-----
> From: Claus Ibsen [mailto:claus.ibsen@gmail.com]
> Sent: Friday, November 16, 2012 3:49 PM
> To: users@camel.apache.org
> Subject: Re: Problem of Intercept with When Condition
>
> On Fri, Nov 16, 2012 at 8:01 AM, liugang <cl...@gmail.com> wrote:
>> Hi Willem:
>>
>> Yes, if you add the "when" close to the "intercept", there's no problem.
>>
>> But if add some more between them, for example:
>>         Intercept().process(processor).when(....).to(...);
>>
>> Then you will see the problem.
>>
>
> The when *must* be right after the intercept!
>
>> Please have a try.
>>
>> Thanks
>> GangLiu
>>
>> -----Original Message-----
>> From: Willem jiang [mailto:willem.jiang@gmail.com]
>> Sent: Friday, November 16, 2012 2:53 PM
>> To: users@camel.apache.org
>> Subject: Re: Problem of Intercept with When Condition
>>
>> Hi,
>>
>> I just did a quick test on camel trunk, I cannot reproduce the error that
> you get.
>> You can check out the unit test here[1].
>>
>>
> [1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org
> /apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java
>>
>> --
>> Willem Jiang
>>
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Web: http://www.fusesource.com | http://www.redhat.com
>> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
> (English)
>>           http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
>> Twitter: willemjiang
>> Weibo: willemjiang
>>
>>
>>
>>
>>
>> On Friday, November 16, 2012 at 2:07 PM, liugang wrote:
>>
>>> Hi All:
>>>
>>>
>>> I have following codes:
>>>
>>> intercept().process(new Processor() {
>>>
>>>
>>> public void process(Exchange
>>> exchange) throws Exception {
>>>
>>> System.out.println("Intercept without condition");
>>>
>>> }
>>>
>>> }).when(simple("${in.body} ==
>>> 'a'")).process(new Processor() {
>>>
>>>
>>> public void process(Exchange
>>> exchange) throws Exception {
>>>
>>> System.out.println("Intercept when body equals 'a'");
>>>
>>> }
>>>
>>> });
>>>
>>> from("timer:foo?repeatCount=1").setBody(constant("b")).process(
>>>
>>> new Processor() {
>>>
>>>
>>> public void
>>> process(Exchange exchange)
>>>
>>> throws Exception {
>>>
>>> System.out.println(exchange.getIn().getBody(
>>>
>>> String.class));
>>>
>>> }
>>>
>>> });
>>>
>>>
>>> The result is:
>>>
>>>
>>> Intercept without condition
>>>
>>> Intercept when body equals 'a'
>>>
>>> Intercept without condition
>>>
>>> Intercept when body equals 'a'
>>>
>>> b
>>>
>>>
>>> But I think the correct one should be:
>>>
>>>
>>> Intercept without condition
>>>
>>> Intercept without condition
>>>
>>> b
>>>
>>>
>>> and if I move the when condition to next behind the intercept(), then it
>>> works fine.
>>>
>>>
>>> Does anybody can have a look, and check it's a Camel bug or not?
>>>
>>>
>>> Thanks
>>>
>>> GangLiu
>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Email: cibsen@redhat.com
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

RE: Problem of Intercept with When Condition

Posted by liugang <cl...@gmail.com>.
Hi Claus:

Ah, ok, if so, then no problem.
But from the code, user can write everything what he wants, there's no any
hint to indicate that. May be it's better to improve it.


Thanks
GangLiu
-----Original Message-----
From: Claus Ibsen [mailto:claus.ibsen@gmail.com] 
Sent: Friday, November 16, 2012 3:49 PM
To: users@camel.apache.org
Subject: Re: Problem of Intercept with When Condition

On Fri, Nov 16, 2012 at 8:01 AM, liugang <cl...@gmail.com> wrote:
> Hi Willem:
>
> Yes, if you add the "when" close to the "intercept", there's no problem.
>
> But if add some more between them, for example:
>         Intercept().process(processor).when(....).to(...);
>
> Then you will see the problem.
>

The when *must* be right after the intercept!

> Please have a try.
>
> Thanks
> GangLiu
>
> -----Original Message-----
> From: Willem jiang [mailto:willem.jiang@gmail.com]
> Sent: Friday, November 16, 2012 2:53 PM
> To: users@camel.apache.org
> Subject: Re: Problem of Intercept with When Condition
>
> Hi,
>
> I just did a quick test on camel trunk, I cannot reproduce the error that
you get.
> You can check out the unit test here[1].
>
>
[1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org
/apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java
>
> --
> Willem Jiang
>
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Web: http://www.fusesource.com | http://www.redhat.com
> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
(English)
>           http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
>
>
>
>
>
> On Friday, November 16, 2012 at 2:07 PM, liugang wrote:
>
>> Hi All:
>>
>>
>> I have following codes:
>>
>> intercept().process(new Processor() {
>>
>>
>> public void process(Exchange
>> exchange) throws Exception {
>>
>> System.out.println("Intercept without condition");
>>
>> }
>>
>> }).when(simple("${in.body} ==
>> 'a'")).process(new Processor() {
>>
>>
>> public void process(Exchange
>> exchange) throws Exception {
>>
>> System.out.println("Intercept when body equals 'a'");
>>
>> }
>>
>> });
>>
>> from("timer:foo?repeatCount=1").setBody(constant("b")).process(
>>
>> new Processor() {
>>
>>
>> public void
>> process(Exchange exchange)
>>
>> throws Exception {
>>
>> System.out.println(exchange.getIn().getBody(
>>
>> String.class));
>>
>> }
>>
>> });
>>
>>
>> The result is:
>>
>>
>> Intercept without condition
>>
>> Intercept when body equals 'a'
>>
>> Intercept without condition
>>
>> Intercept when body equals 'a'
>>
>> b
>>
>>
>> But I think the correct one should be:
>>
>>
>> Intercept without condition
>>
>> Intercept without condition
>>
>> b
>>
>>
>> and if I move the when condition to next behind the intercept(), then it
>> works fine.
>>
>>
>> Does anybody can have a look, and check it's a Camel bug or not?
>>
>>
>> Thanks
>>
>> GangLiu
>
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen


Re: Problem of Intercept with When Condition

Posted by Claus Ibsen <cl...@gmail.com>.
On Fri, Nov 16, 2012 at 8:01 AM, liugang <cl...@gmail.com> wrote:
> Hi Willem:
>
> Yes, if you add the "when" close to the "intercept", there's no problem.
>
> But if add some more between them, for example:
>         Intercept().process(processor).when(....).to(...);
>
> Then you will see the problem.
>

The when *must* be right after the intercept!

> Please have a try.
>
> Thanks
> GangLiu
>
> -----Original Message-----
> From: Willem jiang [mailto:willem.jiang@gmail.com]
> Sent: Friday, November 16, 2012 2:53 PM
> To: users@camel.apache.org
> Subject: Re: Problem of Intercept with When Condition
>
> Hi,
>
> I just did a quick test on camel trunk, I cannot reproduce the error that you get.
> You can check out the unit test here[1].
>
> [1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java
>
> --
> Willem Jiang
>
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Web: http://www.fusesource.com | http://www.redhat.com
> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
>           http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
>
>
>
>
>
> On Friday, November 16, 2012 at 2:07 PM, liugang wrote:
>
>> Hi All:
>>
>>
>> I have following codes:
>>
>> intercept().process(new Processor() {
>>
>>
>> public void process(Exchange
>> exchange) throws Exception {
>>
>> System.out.println("Intercept without condition");
>>
>> }
>>
>> }).when(simple("${in.body} ==
>> 'a'")).process(new Processor() {
>>
>>
>> public void process(Exchange
>> exchange) throws Exception {
>>
>> System.out.println("Intercept when body equals 'a'");
>>
>> }
>>
>> });
>>
>> from("timer:foo?repeatCount=1").setBody(constant("b")).process(
>>
>> new Processor() {
>>
>>
>> public void
>> process(Exchange exchange)
>>
>> throws Exception {
>>
>> System.out.println(exchange.getIn().getBody(
>>
>> String.class));
>>
>> }
>>
>> });
>>
>>
>> The result is:
>>
>>
>> Intercept without condition
>>
>> Intercept when body equals 'a'
>>
>> Intercept without condition
>>
>> Intercept when body equals 'a'
>>
>> b
>>
>>
>> But I think the correct one should be:
>>
>>
>> Intercept without condition
>>
>> Intercept without condition
>>
>> b
>>
>>
>> and if I move the when condition to next behind the intercept(), then it
>> works fine.
>>
>>
>> Does anybody can have a look, and check it's a Camel bug or not?
>>
>>
>> Thanks
>>
>> GangLiu
>
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

RE: Problem of Intercept with When Condition

Posted by liugang <cl...@gmail.com>.
Hi Willem:

Yes, if you add the "when" close to the "intercept", there's no problem.

But if add some more between them, for example: 
	Intercept().process(processor).when(....).to(...);

Then you will see the problem.

Please have a try.

Thanks
GangLiu

-----Original Message-----
From: Willem jiang [mailto:willem.jiang@gmail.com] 
Sent: Friday, November 16, 2012 2:53 PM
To: users@camel.apache.org
Subject: Re: Problem of Intercept with When Condition

Hi,

I just did a quick test on camel trunk, I cannot reproduce the error that you get.
You can check out the unit test here[1].

[1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java 

-- 
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang 
Weibo: willemjiang





On Friday, November 16, 2012 at 2:07 PM, liugang wrote:

> Hi All:
> 
> 
> I have following codes:
> 
> intercept().process(new Processor() {
> 
> 
> public void process(Exchange
> exchange) throws Exception {
> 
> System.out.println("Intercept without condition");
> 
> }
> 
> }).when(simple("${in.body} ==
> 'a'")).process(new Processor() {
> 
> 
> public void process(Exchange
> exchange) throws Exception {
> 
> System.out.println("Intercept when body equals 'a'");
> 
> }
> 
> });
> 
> from("timer:foo?repeatCount=1").setBody(constant("b")).process(
> 
> new Processor() {
> 
> 
> public void
> process(Exchange exchange)
> 
> throws Exception {
> 
> System.out.println(exchange.getIn().getBody(
> 
> String.class));
> 
> }
> 
> });
> 
> 
> The result is:
> 
> 
> Intercept without condition
> 
> Intercept when body equals 'a'
> 
> Intercept without condition
> 
> Intercept when body equals 'a'
> 
> b
> 
> 
> But I think the correct one should be:
> 
> 
> Intercept without condition
> 
> Intercept without condition
> 
> b
> 
> 
> and if I move the when condition to next behind the intercept(), then it
> works fine. 
> 
> 
> Does anybody can have a look, and check it's a Camel bug or not?
> 
> 
> Thanks
> 
> GangLiu 



Re: Problem of Intercept with When Condition

Posted by Willem jiang <wi...@gmail.com>.
Hi,

I just did a quick test on camel trunk, I cannot reproduce the error that you get.
You can check out the unit test here[1].

[1]https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java 

-- 
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang 
Weibo: willemjiang





On Friday, November 16, 2012 at 2:07 PM, liugang wrote:

> Hi All:
> 
> 
> I have following codes:
> 
> intercept().process(new Processor() {
> 
> 
> public void process(Exchange
> exchange) throws Exception {
> 
> System.out.println("Intercept without condition");
> 
> }
> 
> }).when(simple("${in.body} ==
> 'a'")).process(new Processor() {
> 
> 
> public void process(Exchange
> exchange) throws Exception {
> 
> System.out.println("Intercept when body equals 'a'");
> 
> }
> 
> });
> 
> from("timer:foo?repeatCount=1").setBody(constant("b")).process(
> 
> new Processor() {
> 
> 
> public void
> process(Exchange exchange)
> 
> throws Exception {
> 
> System.out.println(exchange.getIn().getBody(
> 
> String.class));
> 
> }
> 
> });
> 
> 
> The result is:
> 
> 
> Intercept without condition
> 
> Intercept when body equals 'a'
> 
> Intercept without condition
> 
> Intercept when body equals 'a'
> 
> b
> 
> 
> But I think the correct one should be:
> 
> 
> Intercept without condition
> 
> Intercept without condition
> 
> b
> 
> 
> and if I move the when condition to next behind the intercept(), then it
> works fine. 
> 
> 
> Does anybody can have a look, and check it's a Camel bug or not?
> 
> 
> Thanks
> 
> GangLiu