cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Fagerstrom <dani...@nada.kth.se>
Subject Re: Core split status
Date Tue, 02 Jan 2007 18:14:14 GMT
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

Mime
View raw message