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]

Reply via email to