camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicky Sandhu <karajd...@gmail.com>
Subject Re: Camel 1.2 - CatchProcessor not working?
Date Thu, 25 Oct 2007 19:27:21 GMT

Hi Hendrik,
 Good catch. I have opened an issue
(https://issues.apache.org/activemq/browse/CAMEL-191) and submitted a patch
for review. 
Nicky

Hendrik S. wrote:
> 
> Hi,
> 
> We have used camel 1.1 for our project and wanted to upgrade to 1.2 (We
> were missing the @Headers Tag in 1.1).
> 
> But we found a bug in the try - catch handler: I the catch block is a
> pipline, the pipline (in the catch block) detects that the exchange has
> failed and aborts the catch handler. :(
> 
> I've worte a simple unit test to demonstrate this:
> 
> public class TestTryCatch {
> 
>   public class MyBean {
>   
>     public void process( Object obj ) {
>       if( obj instanceof Integer )
>         Logger.getLogger( TestTryCatch.MyBean.class ).info( "processing
> Integer: " + obj );
>       else
>         throw new IllegalArgumentException( "Need an Integer, please!" );
>     }
>     
>   }
>   
>   public class MyOtherBean {
>     
>     public void process( Object obj ) {
>       Logger.getLogger( TestTryCatch.MyBean.class ).info( "processing: " +
> obj );
>     }
>     
>   }
>   
>   @Test
>   public void test() throws Exception {
>     Registry registry = new Registry() {
> 
>       public Object lookup( String name ) {
>         return null;
>       }
> 
>       public <T> T lookup( String name, Class<T> type ) {
>         return null;
>       }
>       
>     };
> 
>     CamelContext cc = new DefaultCamelContext( registry );
>     
>     
>     @SuppressWarnings("unchecked")
>     final Endpoint<Exchange> in = cc.getEndpoint( "direct:in" );
>     @SuppressWarnings("unchecked")
>     final Endpoint<Exchange> out = cc.getEndpoint( "log:out" );
>     @SuppressWarnings("unchecked")
>     final Endpoint<Exchange> error = cc.getEndpoint( "log:error" );
>     
>     final MyBean myBean = new MyBean();
>     final MyOtherBean otherBean = new MyOtherBean();
>     
>     cc.addRoutes( new RouteBuilder() {
> 
>       @Override
>       public void configure() throws Exception {
>         RouteType s = from(in);
>         
>         TryType t = s.tryBlock();
>         t.bean( myBean ).to( out );
>         t.handle( java.lang.Exception.class ).bean( otherBean ).to( error
> );
>       }
>       
>     } );
> 
>     cc.start();
>     
>     CamelTemplate<Exchange> t = new CamelTemplate<Exchange>(cc);
>     t.sendBody( in, Integer.valueOf( 10 ) );
>     
>     t.sendBody( in, "This will fail..." ); // the catch handler will not
> process this correctly!
>     
>     Thread.sleep( 1000 );
>     
>   }
>   
> }
> 
> 

-- 
View this message in context: http://www.nabble.com/Camel-1.2---CatchProcessor-not-working--tf4690438s22882.html#a13414030
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message