Sling follows the principal of clear separation between public APIs and implementation. The ResourceResolver is an interface, used to define the API contract. This provides Sling itself with the freedom to change or move the implementation (which is ResourceResolverImpl btw). The implementation should normally not be of your concern, however. If you're interested, I suggest you check out the Sling source-code. To my knowledge, CQ also uses Sling's ResourceResolver, but I am not familiar with the internals of the cq:include tag.
Regards Julian On Tue, Feb 5, 2013 at 11:28 AM, Ulrich Schmidt <[email protected]> wrote: > Oh sh.. - I should have thought of this myself. Thank you, that was it. > > But there is still the question left about behaviour of the ResourceResolver. > I > think I should understand who is implementing this interface - Sling? CQ5? > > brgds, > Ulrich > > > > > Julian Sedding <[email protected]> hat am 5. Februar 2013 um 09:28 > geschrieben: >> Hi Ulrich >> >> Looking at the "Recent Requests" trace you provided, I would suspect >> that your topnav.jsp has an include on itself. This results in endless >> recursion, which is evident by the error you get. I would expect the >> error message to be a RecursionTooDeepException, indicating that the >> nesting of your scripts is suspiciously deep. >> >> Hope this helps. >> >> Regards >> Julian >> >> >> On Mon, Feb 4, 2013 at 4:50 PM, Ulrich Schmidt >> <[email protected]> wrote: >> > Right now I'm dealing with this problem: The node: >> > "/apps/mywebsite/components/content/body.jsp" references another jsp >> > located >> > at >> > "/apps/mywebsite/components/topnav/topnav.jsp" by the expression: >> > "< cq:include path = "topnav" resourceType = "mywebsite/components/topnav" >> > />" >> > within body.jsp. >> > >> > When rendering the webpage I get an error because by resolving the path >> > mywebsite/components/topnav the string "topnav" is iteratively added to the >> > ResourcePath. So it looks like: >> > /content/mywebsite/en/products/jcr:content/topnav/topnav/topnav.... >> > >> > The error at the browser looks like this: >> > Page = /content/mywebsite/en/products >> > ResourcePath = >> > /content/mywebsite/en/products/jcr:content/topnav/topnav/topnav.... >> > Cell = topnav >> > CellSearchPath = contentpage | page/topnav/topnav/topnav..... >> > ComponentPath = /apps/mywebsite/en/components/topnav >> > >> > I made a mistake somewhere but I don't know where. I can delete what I did >> > and >> > try again - this will most probably solve the error. The samle did already >> > run, >> > I started over again for training purposes. But it would be better for me >> > to >> > find the cause to get a feeling for what might go wrong and how to debug >> > it. >> > I can try to lookup any definition I made so far, but I would rather prefer >> > to >> > get some knowledge about the debugging possibilities right now available. I >> > know >> > the "Recent Requests"-Trace already. I found the iteration (adding "topnav" >> > to >> > the resource path in a loop), but from this I can'T estimate for the >> > reason. >> > And this is what I would like to ask for here. What can I do to understand >> > where >> > this behaviour might comes from. >> > >> > best Regards, >> > Ulrich >> > >> > >> > Snippet from the "Recent Requests"-Trace: >> > >> > -02-04 16:07:55) LOG Including script body.jsp for >> > path=/content/mywebsite/en/products/jcr:content, >> > type=mywebsite/components/contentpage: >> > /apps/mywebsite/components/contentpage/body.jsp >> > 31 (2013-02-04 16:07:55) >> > TIMER_START{/apps/mywebsite/components/contentpage/body.jsp} >> > 31 (2013-02-04 16:07:55) LOG Including resource SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav >> > (SlingRequestPathInfo: >> > path='/content/mywebsite/en/products/jcr:content/topnav', >> > selectorString='null', >> > extension='html', suffix='null') >> > 31 (2013-02-04 16:07:55) TIMER_START{resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav)} >> > 31 (2013-02-04 16:07:55) TIMER_END{0,resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav)} Using servlet >> > /apps/mywebsite/components/topnav/topnav.jsp >> > 31 (2013-02-04 16:07:55) LOG Applying Includefilters >> > 31 (2013-02-04 16:07:55) LOG Calling filter: >> > com.day.cq.wcm.core.impl.WCMComponentFilter >> > 31 (2013-02-04 16:07:55) LOG Calling filter: >> > com.day.cq.wcm.core.impl.WCMDebugFilter >> > 31 (2013-02-04 16:07:55) >> > TIMER_START{/apps/mywebsite/components/topnav/topnav.jsp#2} >> > 31 (2013-02-04 16:07:55) LOG Including resource SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav >> > (SlingRequestPathInfo: >> > path='/content/mywebsite/en/products/jcr:content/topnav/topnav', >> > selectorString='null', extension='html', suffix='null') >> > 31 (2013-02-04 16:07:55) TIMER_START{resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav)} >> > 31 (2013-02-04 16:07:55) TIMER_END{0,resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav)} Using >> > servlet >> > /apps/mywebsite/components/topnav/topnav.jsp >> > 31 (2013-02-04 16:07:55) LOG Applying Includefilters >> > 31 (2013-02-04 16:07:55) LOG Calling filter: >> > com.day.cq.wcm.core.impl.WCMComponentFilter >> > 31 (2013-02-04 16:07:55) LOG Calling filter: >> > com.day.cq.wcm.core.impl.WCMDebugFilter >> > 31 (2013-02-04 16:07:55) >> > TIMER_START{/apps/mywebsite/components/topnav/topnav.jsp#3} >> > 31 (2013-02-04 16:07:55) LOG Including resource SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav >> > (SlingRequestPathInfo: >> > path='/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav', >> > selectorString='null', extension='html', suffix='null') >> > 31 (2013-02-04 16:07:55) TIMER_START{resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav)} >> > 31 (2013-02-04 16:07:55) TIMER_END{0,resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav)} >> > Using >> > servlet /apps/mywebsite/components/topnav/topnav.jsp >> > 31 (2013-02-04 16:07:55) LOG Applying Includefilters >> > 31 (2013-02-04 16:07:55) LOG Calling filter: >> > com.day.cq.wcm.core.impl.WCMComponentFilter >> > 31 (2013-02-04 16:07:55) LOG Calling filter: >> > com.day.cq.wcm.core.impl.WCMDebugFilter >> > 31 (2013-02-04 16:07:55) >> > TIMER_START{/apps/mywebsite/components/topnav/topnav.jsp#4} >> > 31 (2013-02-04 16:07:55) LOG Including resource SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav/topnav >> > (SlingRequestPathInfo: >> > path='/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav/topnav', >> > selectorString='null', extension='html', suffix='null') >> > 31 (2013-02-04 16:07:55) TIMER_START{resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav/topnav)} >> > 31 (2013-02-04 16:07:55) TIMER_END{0,resolveServlet(SyntheticResource, >> > type=mywebsite/components/topnav, >> > path=/content/mywebsite/en/products/jcr:content/topnav/topnav/topnav/topnav)} >> > Using servlet /apps/mywebsite/components/topnav/topnav.jsp >> > 31 (2013-02-04 16:07:55) LOG Applying Includefilters
