Hi Vidar

Thanks for you quick support. I already discovered that I can return JSon 
through Sling but I was more wondering about a caller that would send in JSon.

As far as I can see now this would require an servlet implementation like the 
JsonQueryServlet where I would deserialize a JSon string into a Java object 
from a given parameter in order to process the request.

I will see how I can create a test application with such a servlet to process 
my business rules.

-Andy

On Jan 26, 2010, at 9:38 AM, Vidar Ramdal wrote:

> On Tue, Jan 26, 2010 at 6:07 PM, Andreas Schaefer <[email protected]> wrote:
>> Hi
>> 
>> To see if Sling would fit our project I would need to be able to handle 
>> calls from a client (Ext/JS) sending JSon to server and expecting a JSon 
>> response back. In the samples I read that it is possible to register a 
>> servlet inside Sling but I am not quite sure how to do it. The only place 
>> where I found a servlet used is in 
>> 'org.apache.sling.sample.slingshot.impl.ResourceTypeConversionServlet' or 
>> the 'org.apache.sling.launchpad.testservices.war.servlets.TestServlet'.
> 
> Also look in the Sling codebase. SlingInfoServlet [1]  is a simple
> example that registers a servlet to handle requests to
> /system/sling/info. Or look at JsonQueryServlet [2], which registers
> for all requests ending with ".query.json".
> 
>> Would that be the way to handle JSon calls from a client inside Sling?
> 
> Sling comes with a default JSON renderer. Just add ".json" to any
> resource URI, and you'll get a JSON representation, e.g.:
> http://localhost:8080/your/node.json
> 
> If you need a custom JSON format, you could write your own servlet, or ...
> 
>> Could that be done with an ESP file instead?
> 
> Absolutely. If you're not happy with the default JSON representation
> of a resource, you could easily implement your own in ESP:
> <%
>  response.setContentType("application/json");
> %>
> {
>  your_custom_json_property: <%=currentNode.something%>
> }
> Saving this script as /apps/servlet/default/customjson.esp in your
> repository, and then doing a request to
> http://localhost:8080/your/node.customjson should invoke your script
> and return the JSON.
> 
> Also see the JSONQueryServlet for how to return query results in JSON:
> http://in-the-sling.blogspot.com/2008/09/how-to-use-json-query-servlet.html
> 
> If you haven't done so already, check out the Sling in 15 minutes
> guide: http://sling.apache.org/site/discover-sling-in-15-minutes.html
> 
> Hope this gets you started - if you run into any trouble, don't
> hesitate to ask on this list.
> 
> [1] 
> http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/impl/info/SlingInfoServlet.java?view=markup
> [2] 
> http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/get/src/main/java/org/apache/sling/servlets/get/impl/JsonQueryServlet.java?view=markup
> 
> -- 
> Vidar S. Ramdal <[email protected]> - http://www.idium.no
> Sommerrogata 13-15, N-0255 Oslo, Norway
> + 47 22 00 84 00 / +47 21 531941, ext 2070

Reply via email to