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
