Berin Loritsch wrote:
Vadim Gritsenko wrote:Berin, Please see example sent in response to Ken's question: Generator g; Component c = g; This *will* fail to compile.Of course if it was written explicitly like a good programmer should, it would compile: Generator g = // ... lookup of Generator Comonent c = (Component) g;
I guess you know that modern IDEs do not appreciate this code style (unnecessary class cast). And after removing Component from Generator and all implementing classes (you are not in favour of keeping deprecated interface there, are you? the whole point was in reducing amount of deprecations) this will become dangerous class cast.
However, when would this ever happen?
When, say, you happen to collect components in an array. Or see below.
Who ever goes from an interface with methods to one without methods?
Avalon does ;-)
Or any avalon-like code, like CocoonComponentManager (which means chances are there is MyCompanyComponentManager somewhere out there).
This only seems to be an accademic issue, and not a real world code example.
Berin, that was you who taught us to work hard to keep backward compatibility. It should be you who should argue on this point instead of me! But if you want to go down the road of "academic" and "practical" backward compatibility, then I rest my case.
IOW, what does it buy you to perform the bad code snippet above?
For all practical and real requirements, it is safe to remove the
Component interface from the Generator interface, et. al.
Upgrading to Fortress or the CVS version of ECM, and then removing
the Component interface from the core interfaces should give you
the piece of mind that everything should compile and run.
Try it as an experiment.
I'm planning to. Really. When fortress is "ready" - or, better one - when beta release is due?
But do not complain when it breaks compilation of your favorite client's code ;-)
PS If any part of this email sounds offensive it means I have to take english classes ;-)
Vadim
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]