--- Daniel Fagerstrom <[EMAIL PROTECTED]> schrieb: > Upayavira wrote: > > > So, I have created a wiki page: > > > > http://wiki.apache.org/cocoon/PublicAPIClasses > > > > Please go there and mark classes public/private as > necessary. As it > > says at the top of that page, if you disagree with > someone, change it > > to "dispute" or D for short. Then it becomes an > opportunity for some > > healthy argument! > > Wow! that's a lot of classes. While I aplaud the > initiative, 673 classes > are huge amount to classify. I would suggest that we > start discussing > principles first a bit. > > IMO we need to find two set of interfaces/classes: > the API of Cocoon, > and the set of classes (components) that an > application programmer need > JavaDoc for. > > I guess this thread is mainly about the second set, > but I find it hard > to adress whoyhout discussing the first one. > > Cocoon API > ========== > > These are the interfaces that we intend an > application programmer to > implement while building Cocoon applications. Our > "contract" with the > user is that we do our best to keep these > interfaces. And when that > would be a to large hinder for further development > of Cocoon, we follow > standard practices for deprecation or interface > modification. > > We should IMO put the Cocoon API in one or possibly > several pure > interface jars (bundles). > > So what is the Cocoon API? All interfaces used in > cocoon-core-sitemap.xconf are part of the Cocoon > API: Generator, > Transformer, Serializer, Reader, Matcher, Selector, > Action, > ProcessingPipeline. Then the interfaces refered to > in the Cocoon API > must be part of the API as well by transitive > closure. So here we get > various exceptions, SitemapModelComponent, XMLPipe, > XMLProducer and much > more. The ObjectModelHelper with dependencies is > also part of the API. > > Then we can continue to take a look at > cocoon-core.xconf. Most of the > interfaces used here are probably part of the Cocoon > API: InputModule, > OutputModule, Source (with extending interfaces: > WritableSource and > maybe some more), to mention some obvious. For some > of the interfaces > here it is less clear if they are part of the Cocoon > API, as an example > are we going to support the use of Processor? To > connect to a current > discussion. > > Maybe there are part of the Cocoon API that not is > used for components > and "sitemap components"? We obviously support > Servlet e.g. > > "Public API Classes" > ==================== > > This is what a user needs to build own components, > use components from > flowscript or using Cocoon from other applications > or environments. > > Here we have all (or most) components defined in > cocoon-core-sitemap.xconf and cocoon-core.xconf. The > CocoonBean and > CocoonServlet would also be part of this. Some > utility classes from util > and xml and abstract classes that helps implementing > different component > classes could also be part of the public API > classes. > > --- o0o --- > > So if you think that the above is a good idea, we > could work > incrementally: Start with defining the Cocoon API: > one list of sitemap > component interfaces, one with component interfaces > and one where people > could add other intefaces that should be part of the > Cocoon API. Then we > could mark what should be public and private in > these lists. > > We also need to have a list with the transitive > closure of all > interfaces and classes that the previous lists > depends on (hopefully > some IDE or other tool can generate that list). As > the dependencies also > need to be part of the Cocoon API. This will also > give as an indication > if there are parts of Cocoon that would need to be > refactored to give > cleaner and more focused interfaces. > > When we have agreed about what is the Cocoon API, I > would be happy if we > could move it to an own jar. > > After or in parallell with finding the Cocoon API, > we could work on the > "public API classes", following similar principles. > Listing all > components from our configuration for marking them > public or private and > also utility classes. And then a list of the > transitive closure of the > dependencies. Also the public API classes should go > to one or several > "component" bundles. > > WDYT?
I agree completly with you! -- Reinhard ___________________________________________________________ Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de