camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Proctor <>
Subject Using Policy to alter Definitions before building
Date Mon, 05 Jul 2010 15:00:30 GMT

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

    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
        WrapProcessor wrap = new WrapProcessor(target, childProcessor);
        return wrap;
View this message in context:
Sent from the Camel - Users mailing list archive at

View raw message