AOP in Squeak

Aspect-Oriented Programming in Squeak


People

Code

http://www.squeaksource.com/DynamicAspects

This Page


Web


Todo

  • Cannot get "instead" working on methods done
  • Properly update colors in aspect browser done
  • Proper updating for: pointcut add/remove/change, advice add/remove done
  • How to distinguish AOP links from other Geppetto links? -> Use properties in links done
  • Selectively activate/install advices? no
  • Adapt aspects to code changes? future work ...
  • Automatically reinstall aspect on changes done
  • Optimize category/class/method filtering (use existing collections, don’t create new ones) done
  • How to combine block conditions? (Non-literal creation of blocks?) done
  • Specify reifications for block conditions separately? done
  • Method execution pointcuts only apply where method is defined, not subclasses done
  • Pointcut/Advice visibility in aspect browser done
  • Aspect overview browser future work
  • Convenience stuff in DAPointcut constructors
  • Aspects are not properly installed after first loading of code done
  • Improve aspect browser button state done
  • Problems when installing aspects on empty methods (not when using directly gplinks) done
  • Executing method instead with operation reification does somehow produce inconsistency between reflective and compiled method (link is present in compiled method but not in reflective method) done
  • Updating: Aspects do not update when pointucts/advices are removed (difficult to check if method once really was a pointcut or advice), update on original code changes untested
  • Caching: make use of caches in DAPointcut and DAJoinPoint future work
  • Handle Seaside dependencies in examples done
  • Use pragmas instead of ugly advice names done
  • Easy "disabled by default" method done
  • Disable test aspects, install/uninstall during tests partially
  • Reread all source code comments, add important class comments on usage
  • Updating does not consider inheritance

Caveats

  • Pointcuts and join points are always reevaluated
  • Meta classes are treated as having the same category as their instance
  • Implementation currently doesn’t respect traits
  • Flow pointcut: after should always execute when before did (link conditions can change)
Last changed by admin on 21 April 2009