During the "Decomposing RequestProcessor" thread a while back, I hinted that I'd been working on some code to propose for this purpose, but had never had time to polish it enough to check in. Well, I actually took a bunch of time this weekend for precisely that purpose, and have checked in two chunks of code for your viewing and toying pleasure:
* A new jakarta-commons/sandbox package called "chain" that implements the GoF Chain of Responsibility pattern, in a way that lets you compose arbitrarily complex processing chains out of very simple classes, in a variety of different contexts. If you're familiar with Cocoon, think of the "site map" pattern but without the requirement that every dynamic step be an XSLT transformation. If you're familiar with Axis, think of the way you can compose Handler chains, but without the restriction that it is only useful in implementing a web service. Nightly builds of this package should start showing up tonight at: http://jakarta.apache.org/builds/jakarta-commons/nightly/commons-chain/ * A new contrib package in the Struts workspace called "struts-chain" that is the beginnings of a decomposition of the RequestProcessor processing pipeline, but allows the overall chain to be customzied in much more powerful manners than the way that subclassing RequestProcessor supports. You'll need to grab the CVS source to play with this one. None of the code actually works yet -- it is very definitely a work in progress -- but I *think* we'll be able to end up with something that can be added on to a Struts 1.1 distro. I won't personally have huge amounts of time to work on this over the next few months, but I will definitely participate in discussions and improvements to this code. If it all works out, I'm going to propose something like this as a foundational architecture for a Struts 2.x series that will leverage this design pattern to support extreme customization. Craig --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]