Being new with Sling, I need to get familiar with it. Until now I understand that there is no comprehensive reference describing the Sling architecture and methods in detail. Until now I saw some CQ5-samples which don't work for me and I don't understand how one comes to expect that they should work.
So I'm looking for a document, source, ruleset or anything else where I can extract the way how resolving is done. I found the Interface "ResourceResolver" supplied by Sling but have no clue which class is implementing it. Maybe such a class would help. I'm astonished anyway, why this interface is mentioned in all the websites I found until now instead of the implementing class. As if it was users responsibilty to do the resolving. This is what I understand so far (source: Sling cheatsheet(http://dev.day.com/content/ddc/blog/2008/07/cheatsheet.html) and CQ Basics (http://dev.day.com/docs/en/cq/current/developing/the_basics.html): (1) Sling splts the URI in different parts and maps them to the resources. (2) The path is either mapped according to the sling:resourceType or the sling:resourceSuperType (both attributes either specified to the path-node or inherited from parents) or to the node (specified by the path) itself; in this case the node must be of type nt:file or contain a subnode of type nt:file. (3) In either case (resolved by sling:resourceType, sling:resourceSuperType or using the node itself) Sling looks for scripts contained in the resolved node. (4) There are four ScriptTypes supported: est (ECMAScript), java (Java Source becomes compiled), jsp (Java Server Pages) and jst (Java Script Templates). The type "js" is not mentioned in "The Basics". (5) For HTTP-GET requests there is a best match sequence for looking up the script name; for HTTP-PUT-requests an exact-match is required. Is this ok so far? These are some of the samples I don't understand: see also "How to Create a Fully Featured Internet Website" (http://dev.day.com/docs/en/cq/current/howto/website.html) and the discussion at the bottom. Ulrich, thats me. (a) the node /content/mywebsite/en/products is of type cq:Page and the subnode jcr:content has an attribute sling:resourceType=mywebsite/components/contentpage. The path /apps/mywebsite/components/contentpage contains a node body.jsp (and some others referenced by body.jsp). The request http://localhost:4502//content/mywebsite/en/products.html renders the node /apps/mywebsite/components/contentpage/body.jsp. This is the first thing I don't understand. Why is body.jsp looked up for rendering; why does it belong to the best match sequence showed in (5). (b) One of the jsps included by body.jsp displays an image. The image is also a node in /apps/mywebsite/components/contentpage/ Within the jsp the string /content/mywebsite/en/products/navimage.png is specified. But the image does not show up in the browser. When I specify /apps/mywebsite/components/contentpage/navimage.png instead all works fine. So if resolving for the website http://localhost:4502//content/mywebsite/en/products.html works, why doesn't it work for the image. (c) In the screencast "TheServerSide,com in 15 minutes (http://dev.day.com/content/ddc/blog/2008/04/firststeps2.html)" a static html is converted to dynamic. They create a node /apps/tss/posts/html.jst and invoke it with "localhost:4502/content/tss/posts/*.post.html". (As this screencast was recorded in 2008 they recommend to change the node to /apps/tss/post.jst, but no recommendation for the HTTP-Request). The node /content/tss isn't there when the URL is invoked first; the post.jst POST-request creates it. So there cannot be a sling:requestTyppe anywhere - how can we expect that Sling will correctly map the HTTP-request generated by typing the URL. As resource resolving is very basic for developing on CQ5, I urgently need to understand the logic here, Any help is appreciated. Ulrich
