From: hammett <ha...@uo...> - 2004-09-16 20:08:56
|
Hiya! So, here is my bunch of suggestion and the things I consider working on, at least reserving some part of my spare time to focus on it: ---- Configuration language ---- Something better than xml to describe aspect configurations, with a easy-to-grasp semantic and ressembling aspectj (although xml should still be supported) import MyAssembly import OtherAssembly // These declarations forms a global declaration that can be // referenced by any aspect declaration interceptors { "shoot", MyInterceptorClass in AssemblyX; "logger", MyLoggerInterceptor } // Idem, ibidem mixins { "customer", CustomerClass in CustomerAssembly } // Aspect declaration aspect JohnMcBrother for MyType { } // or aspect JohnMcBrother for (* in AspectSharp.Core) { } // or (with some regular expressions) aspect JohnMcBrother for (* in AspectSharp.Core !~ AspectEngine) { } aspect JohnMcBrother for (=~ Customer*) { } // Pointcuts aspect JohnMcBrother for MyType { pointcut execution(void DoSomething()) { interceptor { "shoot" } } pointcut execution(*) { interceptor { "logger" } } pointcut execution(* get_*()) { interceptor { MyStrangeInterceptor in MyStrangeAssembly } } } // Mixins aspect JohnMcBrother for MyType { // Mixins are now Ruby like :-) include "customer" include MyOtherMixin in MyOtherAssembly } This content will go through a lexer, parser and a semantic checking, and meanwhline constructing a object model. This same object model can be used in the xml configuration version. ---- Design changes ---- - AspectEngine be an instance class instead of a singletion/static - Drop the IMixin, IProxyAware - Drop the AopAlliance "support" ---- Refactoring ---- - The test cases are a bit confusing, I suggest start all this process by creating brand new test cases, and only after that start to code this new version. What do you guys think? Cheers, -- hammett http://www.apache.org/~hammett/ http://jroller.com/page/hammett |