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

Reply via email to