Simone Gianni skrev:
Daniel Fagerstrom wrote:
The pipeline layer consists of:

 cocoon-pipeline-api - Interfaces: ProcessingPipeline, sitemap
component and basic XML interfaces, the environment abstraction,
caching interfaces and needed exceptions.
 cocoon-pipeline-impl - The various implementations of
ProcessingPipeline together with classes that they depend on and
various abstract classes for the sitemap components.
 cocoon-pipeline-components - generators, transformers, serializers,
readers, some sources and xpointer and xslt components.

Here probably some of the abstract classes should be moved to the api
module, but I didn't want to make the api to heavy in the first step.
Also the impl module probably contains components and utility class
that would be better to factor out to own modules.

Maybe the component module should be split into a base and an optional
module?

Right now the dependency graph is:

 api -> impl -> components

while it rather should be

 api -> impl
 api -> components

Hi Daniel, very good work!

Thanks :)

But I'm missing something : if *-impl
contains abstract classes for components, and *-components contains that
components, how can they not depend on the abstract classes they extend?

You are absolutely right. Abstract base classes intended for reuse should be part of the API. But as we, IMHO, severely overuse abstract base classes in and as the abstract base classes would increase the number of dependencies for the API and as we are trying to decrease the Avalon dependencies, I felt rather reluctant to put all the abstract classes in the API. And because of that the components depends on the impl instead of just the API. I hope we will be able to get to the point where the abstract base classes have more reasonable dependencies and can be moved to that API or maybe some pipeline util module.

/Daniel

Reply via email to