Hi Felix

That seems to be exactly what I'm searching for. Thank you very much,
also for the docu page on the Sling site itself.
I was a little bit confused concerning the Filter implementation because
of the thread [1] on the list a year ago...

BTW there's a little mistake on the docu on top, instead of javax.servlet.Filter
you wrote javax.jcr.Filter.

[1] http://markmail.org/message/okmvvgs5ff64i3xa

best regards
mike

> >>> ... snip snap ...
> > What I try tio achieve is run some legacy stuff shoulder to
> shoulder with
> > new stuff which entirely is built on Sling. So the
> MyServlet (or call it
> > LegacyServlet) should check (as OptingServlet) if the
> request is a call
> > to the legacy stuff and handle it in this case. If not,
> accepts() on the
> > LegacyServlet should return false and the request should be
> handled by the
> > default Servlets of Sling (or any other registered Servlet
> for the request).
>
> Ok, the crucial point here is "any other registered Servlet": If Sling
> decides to no check for another servlet, your LegacyServlet will never
> be asked whether it accepts the request or not.
>
> > So plugging in the functionality to the existing
> DefaultGetServlet and the
> > SlingPostServlet is probably not the solution.
>
> Agreed, but mainly due to how servlet resolution works.
>
> > Extending from the existing default Servlets seems to fit
> better in this case.
> > Maybe also Filters could help in this case, but as far as I
> understood filters
> > are not preprocessed in a Sling standalone app, so the
> solution with filters
> > would be bound to using Sling in a Servlet container (which
> I do not prefer!).
>
> Filter processing inside Sling is always the same because Sling is
> managing the filters themselves and does not work with the servlet
> container filter processing. As such Filters registered as Filter
> services in Sling always work the same, no matter what.
>
> So for your legacy issue, I would suggest you create a request filter
> (filter.scope="request") which checks whether the request is for a
> legacy resource or a sling resource.
>
> If the request is for a legacy resource, the filter processes the
> request in the legacy way and terminates the request after that by
> simply not calling the FilterChain.doFilter method.
>
> If the request for a Sling resource (non-legacy), the request
> is simply
> passed through to the filter chain calling FilterChain.doFilter.
>
> Would that work for you ?
>
> Regards
> Felix
>
> PS: I have just written down some more information on filters which
> should appear on the site in an hour or two, until then the page may
> already be seen at http://cwiki.apache.org/SLINGxSITE/filters.html
>
>

Reply via email to