Peter, >>Our three choices again, with Gerhard's too. >> >>(1) Change Component to Object for lookup method >> > >-1 - backwards incompatible > >>(2) Create a new method in the same ComponentManager interface >> >> variations : "lookup2", "resolve" >> > >-1 - backwards incompatible > So interfaces, once defined are immutable? Hmmm, I think you made a mistake here. Adding a method was "relaxed" as an incompatability when JDK migrated from 1.1 to 1.2. Before then. any diffrence in any method as illustrated by some checksum/hash/serialID was enough to make the JVM barf. After that it would consider methods on a case by case basis before deciding to barf. Compilation is different of course, but I will not accept the two word phrase "backwards incompatible" for this.
Keep your objection Peter by all means, but do not cite backwards compatible as the reason.... >>(3) Clone a set of interfaces & exceptions into a new package, either >>with the same names, or not. >> >>(4) Create a new interface in the existing package >> >> e.g. GenericComponentManager >> > >either of those are backwards compatible so fine. > >>PD> If Sun jumped off a cliff would you do it too ? >> >>No, but I think that a "2" suffix is not so objectionable to get around a >>return type issue. >> > >perhaps. I wont veto it but I really dislike it. Consider LogEnabled vs >Loggable2 - which do you think is easier to understand/read. :) > Not quite the same think. LogEnabled / Loggable is not Avalon's raisen detre. Component Assemply, Component orientated Programming is. Beside, you know how much trouble we got in over logging. We have a framework that is multiple years old. Did some refactoring/asbtarctions six months ago, and lo and behold the commons team dive in with Apache's third logging framework. It ends up looking like ours with the same multiple implementations. Part of that <conjecture/>could be because of the name of the beast - LogEnabled rather than first choices - Logger & Loggable. Let me raise another example: JDBC. Sun changed massively the methods on the latest interfaces for this. It is not possible even to cross compile them. Luckily for us and AvalonDB Ant has an <exclude/> directive and with Java extends I can have one codebase for both versions. JDBC is in far wider use than Avalon. I guess it is a jump of cliff/bridge issue again, but Sun did not baulk at the prospect. >So +1 to doing something backwards compatible in framework4.x > Given that (2) is backwards compatible in so far as code compiled for the current ComponentManager would continue to work for a future version with *extra* methods, is (2) back in the running? >If this aint accepted then we can prototype framework5 relatively fast and >even keep it compatible with framework4.x by putting it in a new package. ie >we could go back to > while (unhappy) { newPackage = package.clone(); } >org.apache.framework > - Paul > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>