Ah, the joy of Git ... that was one big ass commit just now. You'd be surprised how much of that was coded while sitting sideways in my seat on the way to and from London, and much of the rest while sitting in the hospital waiting for my son to be born!
There's still lots of room for tweaking and improving performance, but creating a ComponentClassTransformWorker that does non-trivial stuff is now much, much, much easier and there's nothing left in the APIs that requires Javassist under the covers. However, many of the existing methods of ClassTransformation have been deprecated, and some of the deprecated methods are non-functional: they throw a runtime exception (these are the methods most closely tied to Javassist). Basically, where in the past you would specify Javassist script for part of a method implementation (i.e., to perform some work inside containingPageDidLoad()) the new approach is to add advice to the containingPageDidLoad() method to do the desired work. This will affect performance and memory utilization. Performance may downgrade some imperceptible amount (there's simply more method invocations going on). Memory utilization will go up; in fact, much of the new code creates many more classes in the component class loader. These new classes exist to provide efficient reflection-style access to component fields and methods (regardless of visibility). The flip side, however, is that much more of the meta-programming code will be in "normal" space, as callbacks from components, rather than in "javassist" space as runtime-generated bytecode. -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
