You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "dr.jeff" <jl...@systechnologies.com> on 2007/04/19 01:32:51 UTC

[camel] InterceptorProcessor

In this example:
                from("queue:a")
                .intercept()
                	.add(interceptor1)
                	.add(interceptor2)
                	.target()
                		.to("queue:b");
the interceptors process a passing message in the order:
interceptor2.process(), interceptor1.process()
Is that the intended behavior?
-- 
View this message in context: http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10069237
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.


Re: [camel] InterceptorProcessor

Posted by "dr.jeff" <jl...@systechnologies.com>.
Right. Got it. Thanks.

Hiram Chirino wrote:
> 
> That's because your doing the println AFTER you call super.process().
> Try doing it before.
> 
> On 4/19/07, dr.jeff <jl...@systechnologies.com> wrote:
>>
>> package test;
>>
>> import org.apache.camel.Endpoint;
>> import org.apache.camel.Exchange;
>> import org.apache.camel.Message;
>> import org.apache.camel.Processor;
>> import org.apache.camel.Producer;
>> import org.apache.camel.builder.RouteBuilder;
>> import org.apache.camel.impl.DefaultCamelContext;
>> import org.apache.camel.processor.InterceptorProcessor;
>>
>> public class InterceptorTest {
>>
>>         public static class StringProcessor implements
>> Processor<Exchange> {
>>                 public void process(Exchange e) {
>>                         System.err.println("process: " + e.getIn());
>>                 }
>>         }
>>
>>     final InterceptorProcessor<Exchange> interceptor1 = new
>> InterceptorProcessor<Exchange>() {
>>         @Override
>>         public void process(Exchange e) {
>>                 super.process(e);
>>                 System.err.println("interceptor1: " + e.getIn());
>>         }
>>     };
>>
>>     final InterceptorProcessor<Exchange> interceptor2 = new
>> InterceptorProcessor<Exchange>() {
>>         @Override
>>         public void process(Exchange e) {
>>                 super.process(e);
>>                 System.err.println("interceptor2: " + e.getIn());
>>         }
>>     };
>>
>>         public InterceptorTest() {
>>                 try {
>>                         DefaultCamelContext container = new
>> DefaultCamelContext();
>>                         container.addRoutes(new RouteBuilder() {
>>                     @SuppressWarnings("unchecked")
>>                                 public void configure() {
>>                         from("queue:a")
>>                          .intercept()
>>                                  .add(interceptor1)
>>                                  .add(interceptor2)
>>                                  .target()
>>                                          .to("queue:b");
>>
>>                         from("queue:b").process(new StringProcessor());
>>                     }
>>                 });
>>                         container.start();
>>
>>                         Endpoint<Exchange> endpoint =
>> container.resolveEndpoint("queue:a");
>>                         Exchange exchange = endpoint.createExchange();
>>                 Message m = exchange.getIn();
>>                 m.setBody("test");
>>                 Producer<Exchange> producer = endpoint.createProducer();
>>                 producer.process(exchange);
>>                 Thread.sleep(5000); //let queues clean out
>>                 } catch (Exception e) {
>>                         e.printStackTrace();
>>                 }
>>         }
>>
>>         public static void main(String[] args) {
>>                 new InterceptorTest();
>>         }
>>
>> }
>>
>> The output is:
>> interceptor2: Message: test
>> interceptor1: Message: test
>> process: Message: test
>>
>> I'm using camel-core that I checked out about 2 hours ago from svn.
>>
>> Hiram Chirino wrote:
>> >
>> > It should not be the case.  I just added a test case to verify that
>> > interceptor1 is being called before interceptor2, and it seems that
>> > everything is fine.
>> >
>> > see:
>> >
>> https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/InterceptorBuilderTest.java
>> >
>> > Did you have a test case that shows this is broken?
>> >
>> >
>> > On 4/18/07, dr.jeff <jl...@systechnologies.com> wrote:
>> >>
>> >> In this example:
>> >>                 from("queue:a")
>> >>                 .intercept()
>> >>                         .add(interceptor1)
>> >>                         .add(interceptor2)
>> >>                         .target()
>> >>                                 .to("queue:b");
>> >> the interceptors process a passing message in the order:
>> >> interceptor2.process(), interceptor1.process()
>> >> Is that the intended behavior?
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10069237
>> >> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>> > --
>> > Regards,
>> > Hiram
>> >
>> > Blog: http://hiramchirino.com
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10082302
>> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> Regards,
> Hiram
> 
> Blog: http://hiramchirino.com
> 
> 

-- 
View this message in context: http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10082712
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.


Re: [camel] InterceptorProcessor

Posted by Hiram Chirino <hi...@hiramchirino.com>.
That's because your doing the println AFTER you call super.process().
Try doing it before.

On 4/19/07, dr.jeff <jl...@systechnologies.com> wrote:
>
> package test;
>
> import org.apache.camel.Endpoint;
> import org.apache.camel.Exchange;
> import org.apache.camel.Message;
> import org.apache.camel.Processor;
> import org.apache.camel.Producer;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.processor.InterceptorProcessor;
>
> public class InterceptorTest {
>
>         public static class StringProcessor implements Processor<Exchange> {
>                 public void process(Exchange e) {
>                         System.err.println("process: " + e.getIn());
>                 }
>         }
>
>     final InterceptorProcessor<Exchange> interceptor1 = new
> InterceptorProcessor<Exchange>() {
>         @Override
>         public void process(Exchange e) {
>                 super.process(e);
>                 System.err.println("interceptor1: " + e.getIn());
>         }
>     };
>
>     final InterceptorProcessor<Exchange> interceptor2 = new
> InterceptorProcessor<Exchange>() {
>         @Override
>         public void process(Exchange e) {
>                 super.process(e);
>                 System.err.println("interceptor2: " + e.getIn());
>         }
>     };
>
>         public InterceptorTest() {
>                 try {
>                         DefaultCamelContext container = new DefaultCamelContext();
>                         container.addRoutes(new RouteBuilder() {
>                     @SuppressWarnings("unchecked")
>                                 public void configure() {
>                         from("queue:a")
>                          .intercept()
>                                  .add(interceptor1)
>                                  .add(interceptor2)
>                                  .target()
>                                          .to("queue:b");
>
>                         from("queue:b").process(new StringProcessor());
>                     }
>                 });
>                         container.start();
>
>                         Endpoint<Exchange> endpoint = container.resolveEndpoint("queue:a");
>                         Exchange exchange = endpoint.createExchange();
>                 Message m = exchange.getIn();
>                 m.setBody("test");
>                 Producer<Exchange> producer = endpoint.createProducer();
>                 producer.process(exchange);
>                 Thread.sleep(5000); //let queues clean out
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>         }
>
>         public static void main(String[] args) {
>                 new InterceptorTest();
>         }
>
> }
>
> The output is:
> interceptor2: Message: test
> interceptor1: Message: test
> process: Message: test
>
> I'm using camel-core that I checked out about 2 hours ago from svn.
>
> Hiram Chirino wrote:
> >
> > It should not be the case.  I just added a test case to verify that
> > interceptor1 is being called before interceptor2, and it seems that
> > everything is fine.
> >
> > see:
> > https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/InterceptorBuilderTest.java
> >
> > Did you have a test case that shows this is broken?
> >
> >
> > On 4/18/07, dr.jeff <jl...@systechnologies.com> wrote:
> >>
> >> In this example:
> >>                 from("queue:a")
> >>                 .intercept()
> >>                         .add(interceptor1)
> >>                         .add(interceptor2)
> >>                         .target()
> >>                                 .to("queue:b");
> >> the interceptors process a passing message in the order:
> >> interceptor2.process(), interceptor1.process()
> >> Is that the intended behavior?
> >> --
> >> View this message in context:
> >> http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10069237
> >> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
> >>
> >>
> >
> >
> > --
> > Regards,
> > Hiram
> >
> > Blog: http://hiramchirino.com
> >
> >
>
> --
> View this message in context: http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10082302
> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
>
>


-- 
Regards,
Hiram

Blog: http://hiramchirino.com

Re: [camel] InterceptorProcessor

Posted by "dr.jeff" <jl...@systechnologies.com>.
package test;

import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.processor.InterceptorProcessor;

public class InterceptorTest {
	
	public static class StringProcessor implements Processor<Exchange> {
		public void process(Exchange e) {
			System.err.println("process: " + e.getIn());
		}
	}
	
    final InterceptorProcessor<Exchange> interceptor1 = new
InterceptorProcessor<Exchange>() {
    	@Override
    	public void process(Exchange e) {
    		super.process(e);
    		System.err.println("interceptor1: " + e.getIn());
    	}
    };
    
    final InterceptorProcessor<Exchange> interceptor2 = new
InterceptorProcessor<Exchange>() {
    	@Override
    	public void process(Exchange e) {
    		super.process(e);
    		System.err.println("interceptor2: " + e.getIn());
    	}
    };

	public InterceptorTest() {
		try {
			DefaultCamelContext container = new DefaultCamelContext();
			container.addRoutes(new RouteBuilder() {
	            @SuppressWarnings("unchecked")
				public void configure() { 
	                from("queue:a") 
	                 .intercept() 
	                         .add(interceptor1) 
	                         .add(interceptor2) 
	                         .target() 
	                                 .to("queue:b"); 

	            	from("queue:b").process(new StringProcessor());
	            }
	        });
			container.start();
			
			Endpoint<Exchange> endpoint = container.resolveEndpoint("queue:a");
			Exchange exchange = endpoint.createExchange();
	        Message m = exchange.getIn();
	        m.setBody("test");
	        Producer<Exchange> producer = endpoint.createProducer();
	        producer.process(exchange);
	        Thread.sleep(5000); //let queues clean out
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new InterceptorTest();
	}

}

The output is:
interceptor2: Message: test
interceptor1: Message: test
process: Message: test

I'm using camel-core that I checked out about 2 hours ago from svn.

Hiram Chirino wrote:
> 
> It should not be the case.  I just added a test case to verify that
> interceptor1 is being called before interceptor2, and it seems that
> everything is fine.
> 
> see:
> https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/InterceptorBuilderTest.java
> 
> Did you have a test case that shows this is broken?
> 
> 
> On 4/18/07, dr.jeff <jl...@systechnologies.com> wrote:
>>
>> In this example:
>>                 from("queue:a")
>>                 .intercept()
>>                         .add(interceptor1)
>>                         .add(interceptor2)
>>                         .target()
>>                                 .to("queue:b");
>> the interceptors process a passing message in the order:
>> interceptor2.process(), interceptor1.process()
>> Is that the intended behavior?
>> --
>> View this message in context:
>> http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10069237
>> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> Regards,
> Hiram
> 
> Blog: http://hiramchirino.com
> 
> 

-- 
View this message in context: http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10082302
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.


Re: [camel] InterceptorProcessor

Posted by Hiram Chirino <hi...@hiramchirino.com>.
It should not be the case.  I just added a test case to verify that
interceptor1 is being called before interceptor2, and it seems that
everything is fine.

see: https://svn.apache.org/repos/asf/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/InterceptorBuilderTest.java

Did you have a test case that shows this is broken?


On 4/18/07, dr.jeff <jl...@systechnologies.com> wrote:
>
> In this example:
>                 from("queue:a")
>                 .intercept()
>                         .add(interceptor1)
>                         .add(interceptor2)
>                         .target()
>                                 .to("queue:b");
> the interceptors process a passing message in the order:
> interceptor2.process(), interceptor1.process()
> Is that the intended behavior?
> --
> View this message in context: http://www.nabble.com/-camel--InterceptorProcessor-tf3604072s2354.html#a10069237
> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
>
>


-- 
Regards,
Hiram

Blog: http://hiramchirino.com