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]>

Reply via email to