Re: Factoring out exception Handling fragments.

2013-11-08 Thread Claus Ibsen
You can have a abstract base route builder class where you have shared
onException and whatnot. And then just call super.configure() in your
route classes

On Thu, Nov 7, 2013 at 10:20 PM, kraythe .  wrote:
> Greetings, I have the following exception handling code on every route that
> I make. Since it is cut and paste I would love to factor it out into some
> kind of route fragment that I could use in each route that is using it. Any
> suggestions on how I could go about this? Direct wont work and the error
> handler cannot be configured the way I want it (not to mention that there
> are a couple of routes that do slightly different things. Thanks for your
> time and here is the route snippet:
>
> .onException(Exception.class).useOriginalMessage().handled(true) //
> catch exceptions
>
> .setHeader(Exchange.FAILURE_ROUTE_ID, property(Exchange.
> FAILURE_ROUTE_ID)) // set route that errored
>
> .setHeader(Exchange.EXCEPTION_CAUGHT, simple(this.STORE_MSG_EXPR)) //
> Store reason for error
>
> .to(ExchangePattern.InOnly,
> endpointAMQ(QUEUE_CASE_AUTOMATION_DEAD)).end()
> // to DLQ
>
> *Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
> *Author of: Hardcore Java (2003) and Maintainable Java (2012)*
> *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
> *



-- 
Claus Ibsen
-
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen


Re: Factoring out exception Handling fragments.

2013-11-08 Thread kraythe .
Yeah I can inherit classes but I don't see where that gets me anywhere. How
to I declare the onException part and then use it in a route later? I know
the route DSL just builds a map that is later instantiated by the camel
engine. I want to build a part and then use it. Something like this:

Fragment generalExceptionHandling =
.onException(Exception.class).useOriginalMessage().handled(true)
.setHeader(Exchange.FAILURE_ROUTE_ID, property(Exchange.FAILURE_ROUTE_ID))
.setHeader(Exchange.EXCEPTION_CAUGHT, simple(this.STORE_MSG_EXPR))
.to(ExchangePattern.InOnly,endpointAMQ(QUEUE_CASE_AUTOMATION_DEAD)).end()

and then later

from(endpointAMQ(QUEUE_CASE_INBOX).fragment(
generalExceptionHandling).to("");

That way I can declare the fragment elsewhere and add it on to my route
later. This would keep me from having to cut and paste code all over
creation.



*Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
*Author of: Hardcore Java (2003) and Maintainable Java (2012)*
*LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
*


On Fri, Nov 8, 2013 at 2:25 AM, Claus Ibsen  wrote:

> You can have a abstract base route builder class where you have shared
> onException and whatnot. And then just call super.configure() in your
> route classes
>
> On Thu, Nov 7, 2013 at 10:20 PM, kraythe .  wrote:
> > Greetings, I have the following exception handling code on every route
> that
> > I make. Since it is cut and paste I would love to factor it out into some
> > kind of route fragment that I could use in each route that is using it.
> Any
> > suggestions on how I could go about this? Direct wont work and the error
> > handler cannot be configured the way I want it (not to mention that there
> > are a couple of routes that do slightly different things. Thanks for your
> > time and here is the route snippet:
> >
> > .onException(Exception.class).useOriginalMessage().handled(true)
> //
> > catch exceptions
> >
> > .setHeader(Exchange.FAILURE_ROUTE_ID, property(Exchange.
> > FAILURE_ROUTE_ID)) // set route that errored
> >
> > .setHeader(Exchange.EXCEPTION_CAUGHT,
> simple(this.STORE_MSG_EXPR)) //
> > Store reason for error
> >
> > .to(ExchangePattern.InOnly,
> > endpointAMQ(QUEUE_CASE_AUTOMATION_DEAD)).end()
> > // to DLQ
> >
> > *Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
> > *Author of: Hardcore Java (2003) and Maintainable Java (2012)*
> > *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
> > *
>
>
>
> --
> Claus Ibsen
> -
> Red Hat, Inc.
> Email: cib...@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
>


Re: Factoring out exception Handling fragments.

2013-11-08 Thread Taariq Levack
An abstract CXF route builder for example can handle all exceptions in a 
certain way.
No need to mention it in the subclass, just call super.configure() where you 
have the onException

Taariq


> On 08 Nov 2013, at 16:52, "kraythe ."  wrote:
> 
> Yeah I can inherit classes but I don't see where that gets me anywhere. How
> to I declare the onException part and then use it in a route later? I know
> the route DSL just builds a map that is later instantiated by the camel
> engine. I want to build a part and then use it. Something like this:
> 
> Fragment generalExceptionHandling =
> .onException(Exception.class).useOriginalMessage().handled(true)
> .setHeader(Exchange.FAILURE_ROUTE_ID, property(Exchange.FAILURE_ROUTE_ID))
> .setHeader(Exchange.EXCEPTION_CAUGHT, simple(this.STORE_MSG_EXPR))
> .to(ExchangePattern.InOnly,endpointAMQ(QUEUE_CASE_AUTOMATION_DEAD)).end()
> 
> and then later
> 
> from(endpointAMQ(QUEUE_CASE_INBOX).fragment(
> generalExceptionHandling).to("");
> 
> That way I can declare the fragment elsewhere and add it on to my route
> later. This would keep me from having to cut and paste code all over
> creation.
> 
> 
> 
> *Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
> *Author of: Hardcore Java (2003) and Maintainable Java (2012)*
> *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
> *
> 
> 
>> On Fri, Nov 8, 2013 at 2:25 AM, Claus Ibsen  wrote:
>> 
>> You can have a abstract base route builder class where you have shared
>> onException and whatnot. And then just call super.configure() in your
>> route classes
>> 
>>> On Thu, Nov 7, 2013 at 10:20 PM, kraythe .  wrote:
>>> Greetings, I have the following exception handling code on every route
>> that
>>> I make. Since it is cut and paste I would love to factor it out into some
>>> kind of route fragment that I could use in each route that is using it.
>> Any
>>> suggestions on how I could go about this? Direct wont work and the error
>>> handler cannot be configured the way I want it (not to mention that there
>>> are a couple of routes that do slightly different things. Thanks for your
>>> time and here is the route snippet:
>>> 
>>>.onException(Exception.class).useOriginalMessage().handled(true)
>> //
>>> catch exceptions
>>> 
>>>.setHeader(Exchange.FAILURE_ROUTE_ID, property(Exchange.
>>> FAILURE_ROUTE_ID)) // set route that errored
>>> 
>>>.setHeader(Exchange.EXCEPTION_CAUGHT,
>> simple(this.STORE_MSG_EXPR)) //
>>> Store reason for error
>>> 
>>>.to(ExchangePattern.InOnly,
>>> endpointAMQ(QUEUE_CASE_AUTOMATION_DEAD)).end()
>>> // to DLQ
>>> 
>>> *Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
>>> *Author of: Hardcore Java (2003) and Maintainable Java (2012)*
>>> *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
>>> *
>> 
>> 
>> 
>> --
>> Claus Ibsen
>> -
>> Red Hat, Inc.
>> Email: cib...@redhat.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>>