Sylvain Wallez wrote: > > Okay. Let me throw in more arguments ;-) > Great!
> How many protocols do we have for which parent and children make sense ? > Actually 2 : 'file' and 'slide' (and 'cvs' soon). For other protocols > such as 'cocoon', 'resource', 'blob', 'xmldb', 'http', etc, this has no > meaning. > > How many components do we have that use a source's parent and children ? > Actually one : DirectoryGenerator, or its TraversableSource counterpart. > > So should we add a lot of methods to Source for these few protocols and > components ? I would say no. > Ok, seems reasonable. > Furthermore, I consider that DirectoryGenerator should fail hard if we > try to generate from a source that is not traversable (as it does today > if it's not given a file). So we should be able to know not only if a > Source has children or not, but if it actually supports this feature. > Yes. true. A isTraversable() would work. > Finally, what about WriteableSource, VersionableSource, LockableSource, > InspectableSource, etc ? Should we merge their methods to Source ? If > not, then why a particular case for TraversableSource ? > Hmm, nice point. Yes, if it's true that a TraversableSource is only used in 5% of the cases then it should be a separate interface. The others you mention above are of course separate interface, so you're right that it's only natural separate TraversableSource as well. > > And as far as code cleanliness is concerned, an "instanceof" test seems > more OOP to me than a isTraversable() method that tells us if is we have > the right to use getParent() and getChildren(). With a separate > interface, these methods do not exist if they do not make sense. > This is a point were a not really agree with. If I always have to do instanceof tests and class casts, something is wrong with OOP then in my eyes. Anyway, I think your arguments are better than mine (sniff). So, we have a TraversableSource or HierarchicalSource or ...? What do you think about the ModifiableSource in Excalibur? (That should be the replacement for WriteableSource - please let *me* win this time ;) ) Carsten --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]