Hi all,

In preparation to the Fortress migration, I'm currently moving all TreeProcessor code to ServiceManager/ServiceSelector, doing also some code simplification along the way.

I found some places however where strong dependencies on ComponentManager/ComponentSelector exist:

1/ AbstractProcessingPipeline, which relies on Recomposable to know where to get the pipeline components from.
2/ SitemapComponentSelector/OutputComponentSelector which provide additional methods to the raw ComponentSelector


The current solution for 1/ is to use a WrapperComponentManager to translate SM->CM. This allows moving this part to SM later.

For 2/ however, moving to SM is more difficult, as it means changing the base interface to ServiceSelector to avoid these objects to be wrapped in a ServiceSelector that would hide the additional methods.

The only solution I see so far is to migrate the whole thing (i.e. pipelines included) to ServiceManager, but this means changing some base classes in lot of places. I consider all these classes to be internal to the Cocoon engine, but some advanced users out there may have written their own pipeline implementations that will be broken with these changes.

WDYT?

<rant>
The move from CM to SM is IMO one the biggest mistakes that has been made in Avalon, especially considering that the interfaces differ by a method return type (Object vs Component), therefore totally forbidding the writing of classes that implement both interfaces.
</rant>


Sylvain

--
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }



Reply via email to