You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@sling.apache.org by sam ” <sk...@gmail.com> on 2012/07/23 20:28:54 UTC

letting resourceSuperType's script to handle the request before/after current script

Hey,

I have:
/apps/image/base
/apps/image/derived/POST.jsp
/content/image/sling:resourceType = "image/derived"

POST /content/image

is handled by /apps/image/derived/POST.jsp, which is what I want.

I want POST.jsp  to be same as SlingPostServlet  but add some custom logic
(read properties from other Resource, transform, and  persist to current
Node  if criteria is met).

I tried this in POST.jsp:
<%
final SlingRequestProcessor requestProcessor =
sling.getService(SlingRequestProcessor.class);
requestProcessor.processRequest(slingRequest, slingResponse,
resourceResolver);
%>

caused infinite recursion and crashed sling instance.

I tried:
<%
final SlingPostServlet postServlet =
sling.getService(SlingPostServlet.class);
postServlet.doPost(slingRequest, slingResponse);
%>

but .doPost() is protected.



I don't need to call SlingPostServlet specifically.  I want to have
resourceSuperType's script to handle request first before my POST.jsp
handles the request.
Or, I want POST.jsp  to massage request object  and persist some properties
to repository before delegating request handling to resourceSuperType.

Is this possible?

Re: letting resourceSuperType's script to handle the request before/after current script

Posted by Eric Norman <er...@gmail.com>.
Maybe you can just forward the request and specify a different resourceType?

Something like this:

<sling:forward resource="${resource}" resourceType="sling/servlet/default"/>



On Mon, Jul 23, 2012 at 11:28 AM, sam ” <sk...@gmail.com> wrote:

> Hey,
>
> I have:
> /apps/image/base
> /apps/image/derived/POST.jsp
> /content/image/sling:resourceType = "image/derived"
>
> POST /content/image
>
> is handled by /apps/image/derived/POST.jsp, which is what I want.
>
> I want POST.jsp  to be same as SlingPostServlet  but add some custom logic
> (read properties from other Resource, transform, and  persist to current
> Node  if criteria is met).
>
> I tried this in POST.jsp:
> <%
> final SlingRequestProcessor requestProcessor =
> sling.getService(SlingRequestProcessor.class);
> requestProcessor.processRequest(slingRequest, slingResponse,
> resourceResolver);
> %>
>
> caused infinite recursion and crashed sling instance.
>
> I tried:
> <%
> final SlingPostServlet postServlet =
> sling.getService(SlingPostServlet.class);
> postServlet.doPost(slingRequest, slingResponse);
> %>
>
> but .doPost() is protected.
>
>
>
> I don't need to call SlingPostServlet specifically.  I want to have
> resourceSuperType's script to handle request first before my POST.jsp
> handles the request.
> Or, I want POST.jsp  to massage request object  and persist some properties
> to repository before delegating request handling to resourceSuperType.
>
> Is this possible?
>

Re: letting resourceSuperType's script to handle the request before/after current script

Posted by Paul McMahon <or...@yahoo.com>.
Instead of using a JSP I'd say you would be better off extending the SlingPostServlet with your own servlet. You can set the sling.servlet.resourceTypes and sling.servlet.methods and sling.servlet.extensions to target it to the correct requests. Since you are extending the SlingPostServlet you should have access to the protected methods. 

Paul McMahon
Acquity Group


________________________________
 From: sam ” <sk...@gmail.com>
To: users@sling.apache.org 
Sent: Monday, July 23, 2012 11:28 AM
Subject: letting resourceSuperType's script to handle the request before/after current script
 
Hey,

I have:
/apps/image/base
/apps/image/derived/POST.jsp
/content/image/sling:resourceType = "image/derived"

POST /content/image

is handled by /apps/image/derived/POST.jsp, which is what I want.

I want POST.jsp  to be same as SlingPostServlet  but add some custom logic
(read properties from other Resource, transform, and  persist to current
Node  if criteria is met).

I tried this in POST.jsp:
<%
final SlingRequestProcessor requestProcessor =
sling.getService(SlingRequestProcessor.class);
requestProcessor.processRequest(slingRequest, slingResponse,
resourceResolver);
%>

caused infinite recursion and crashed sling instance.

I tried:
<%
final SlingPostServlet postServlet =
sling.getService(SlingPostServlet.class);
postServlet.doPost(slingRequest, slingResponse);
%>

but .doPost() is protected.



I don't need to call SlingPostServlet specifically.  I want to have
resourceSuperType's script to handle request first before my POST.jsp
handles the request.
Or, I want POST.jsp  to massage request object  and persist some properties
to repository before delegating request handling to resourceSuperType.

Is this possible?