Most validation services are designed to validate small RPC parameters. That is crappy infrastructure to support crap design.
I think we should start with a use case. For example, let's say I want to create a service that allows me to post one of David's keynote presentations as a zip file, results in a content hierarchy of resources (based on each of the components within the zip), and links to a separate resource (view) consisting of a slideshare-style presentation window that points to slide 1 of a virtual path though the just-posted keynote. For validation purposes, I want to exclude those components that are not actually referenced within the presentation (i.e., the bits that David decided not to use) and reject the entire presentation if it is not a keynote zip or it includes a component that looks like ActiveX. Now, how does Sling provide a validation service that a) doesn't require the entire request object be in memory; b) identifies data to be excluded; c) excludes the data before it is stored; and, d) aborts processing on data to be rejected. I can do such a thing with protocol filters or relay handlers. I can't do it if the validation occurs after request processing. To add another wrinkle, let's assume that David's presentations have a bit of repetition with respect to previously stored presos, and we only want to store the new content as nodes and create reference-only nodes for the stuff already in the repository. Finally, I'd like to be able to define a parallel resource (view) of the same presentation, except that each occurrence of the TradeGothic font is replaced with Arial (without changing the content). That's a real use case, with plenty of test data available. ;-) ....Roy
