On Mon, Jul 5, 2010 at 5:53 PM, Mark Proctor <[email protected]> wrote:
>
>  On 05/07/2010 16:32, Claus Ibsen-2 [via Camel] wrote:
>> Hi
>>
>> Have you looked at org.apache.camel.spi.InterceptStrategy?
> Looking at the code, the child Processor instance is already created, so
> I'm not sure it would be safe to change the child definitions?
>

Ah you are looking for a hook into the processor creation process?

I wonder if we should introduce a SPI for that instead of turning
Policy into what it was not designed for.
Instead a ProcessorCreator SPI could be used. Finding a good name for
the class is always a challenge.

interface ProcessorCreatorStrategy {

   Processor createChildProcessor(RouteContext routeContext,
ProcessorDefinition definition, boolean mandatory) throws Exception

}

There could be additional methods in the future so maybe a
ProcessorDefinitionStrategy is a better name?


Then you can leverage this callback to eavesdrop and do whatever you want.







> Mark
>>
>>
>> On Mon, Jul 5, 2010 at 5:00 PM, Mark Proctor <[hidden email]
>> </user/SendEmail.jtp?type=node&node=696580&i=0>> 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
>> <http://camel.465427.n5.nabble.com/Using-Policy-to-alter-Definitions-before-building-tp696567p696567.html?by-user=t>
>> > 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
>> <http://fusesource.com?by-user=t>
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>>
>> ------------------------------------------------------------------------
>> View message @
>> http://camel.465427.n5.nabble.com/Using-Policy-to-alter-Definitions-before-building-tp696567p696580.html
>>
>> To unsubscribe from Using Policy to alter Definitions before building,
>> click here
>> < (link removed) ==>.
>>
>>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Using-Policy-to-alter-Definitions-before-building-tp696567p696584.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

Reply via email to