On Thu, Jul 03, 2008 at 08:32:33PM +0200, St?phane Ducasse wrote:
I was wondering what is the amount of work to add traits support. The problem is that I do not have a big picture about all the palyer: classDecorator, classEditor.... It does not look complex but I'm ill so comment and a class diagram would help.
SystemEditor is an experiment done by Colin to try out a model he had to make loading truly atomic. He did the first 90% of the work; he made the model and got it passing the test suite. He then abandoned it and went back to working on Monticello2. Now, I am doing the other 90% of the work: fixing bugs, and cleaning up the code. ClassDecorator is something I made just 2 weeks ago to bring some extensibility to SystemEditor. Classes don't have the same properties on every system. On 3.9 systems, they have a traitDescription. In Tweak, they have fields. On Squeak 3.x, they have an organization. In Spoon, they have tags. So, there would be things like: - TraitDecorator - TweakFieldDecorator - ClassOrganizationDecorator - NaiadTagDecorator depending on the system, and which extra packages are loaded. These decorators would insert behavior and state at various points in the life of a class editor (definition time, build time, migration time, etc.). They were inspired roughly by PRDocument decorators in Pier.
Why there is no common superclass?
MetaclassEditor needs to be a subclass of Behavior, since it creates instances (in order to support the class protocol: the class of a ClassEditor is a MetaclassEditor). The others, however could be subclasses of an AbstractEditor. I have created an AbstractEditor in my latest code (not yet uploaded), so that doing "AbstractEditor on: anObject" will create an instance of the correct editor class. Also, MethodDictionaryEditor and SystemEditor could both be subclasses of a DictionaryEditor; they share a lot of behavior like that.
<snip lots of great code comments>
Thanks for the comments in the code. I will definitely apply them. Also, thanks for your comments. They are helping a lot. I have a lot of the makings of a design document now. -- Matthew Fulmer -- http://mtfulmer.wordpress.com/