As noted by Brian earlier the unit tests are all running happily again which means that my initial phase of mucking with the render cycle is finished. (Initial as in there's something there that will probably work but is probably not completely done changing yet).
I'd love any feedback people have on it. The parts that I'm not at all happy with are the tricky little sections in AbstractComponent / AbstractPage / Shell / (maybe one or two other of our core components ) where I had to delegate some method calls off to the new "ResponseBuilder" interface. The solution I have in place isn't ideal by any means, but it may mostly work for now. I think either some AOP love or breaking interface changes are the only other options I can think of to give it a better implementation. I'm going to skip the AOP part for now as I'm guessing it will require a large mental investment for me to learn it on a level that is needed to introduce it to tapestry. The next phase will ~finally~ be interacting with the client side again. I have the PropertySelection component working properly with JSON requests via the dojo ComboBox widget already as a proof of concept(it currently only switches to client side queries when the component parameter 'filterOnChange' is set to true), mostly as a starting proof of concept. I'm going to probably just hit one thing at a time now (hopefully faster than what it took to break all of the tapestry internals and slowly re-fix/factor them again after introducing the ResponseBuilder) , starting with the <initializtion> element in the @Script component which should probably connect to window onload events or similar depending on the context of the response..Ie for normal responses load with window.onload event / for ajax almost immediately / etc... I'm thinking that this will work in a similar fashion to the ResponseBuilder, a configurable set of script manager sort of API's will be consulted to determine how these core interactions should be imlpemented client side scripting wise. (Ie for dojo we'll wrap the entire block with dojo.event.connect(window, "onload") , if someone feels like imlpementing the prototype api they can use Event.Observe() instead. ) -- Jesse Kuhnert Tacos/Tapestry, team member/developer Open source based consulting work centered around dojo/tapestry/tacos/hivemind. http://opennotion.com