camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Using Policy to alter Definitions before building
Date Mon, 05 Jul 2010 15:31:36 GMT
Hi

Have you looked at org.apache.camel.spi.InterceptStrategy?


On Mon, Jul 5, 2010 at 5:00 PM, Mark Proctor <mproctor@codehaus.org> wrote:
>
> As well as using Policy to wrap the child processors, I'd like to be able to
> change/augment the child definitions before they are built. My current use
> case for this is so I can augment the DataFormats, with additional
> configurations. Additionally this Policy also takes care of setting the
> current context ClassLoader, but that already works fine with the existing
> Policy wrap api.
>
> API comptability is a problem, but as a sketch to what I'm trying to
> achieve, here is a change that while a little clunky (due api compatability)
> should achieve the job. This allows the wrap to still call the child
> Process, via the delegate, but to also inspect and change the child
> Definitions prior to building.
>
> public interface DefinitionAwarePolicy extends Policy {
>    Processor wrap(RouteContext routeContext,
> ProcessorDefinition<ProcessorDefinition> processorDefinition, Processor
> processor);
> }
>
> PolicyDefinition.
>    public Processor createProcessor(RouteContext routeContext) throws
> Exception {
>        DelegateProcessor childProcessor = new DelegateProcessor();
>
>        Policy policy = resolvePolicy(routeContext);
>        ObjectHelper.notNull(policy, "policy", this);
>        Processor target;
>        if ( policy instanceof Policy ) {
>            target = policy.wrap(routeContext, childProcessor);
>        } else {
>            target = ((DefinitionAwarePolicy)policy).wrap(routeContext,
> this, childProcessor);
>        }
>
>        childProcessor.setProcessor( this.createChildProcessor(routeContext,
> true) );
>
>        // wrap the target so it becomes a service and we can manage its
> lifecycle
>        WrapProcessor wrap = new WrapProcessor(target, childProcessor);
>        return wrap;
>    }
> --
> View this message in context: http://camel.465427.n5.nabble.com/Using-Policy-to-alter-Definitions-before-building-tp696567p696567.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

Mime
View raw message