[
https://issues.apache.org/jira/browse/SLING-7508?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16371957#comment-16371957
]
Dirk Rudolph commented on SLING-7508:
-------------------------------------
The smartes that came to my mind to resolve that is checking if the
resourceTypeResource is not the same as the resource before stepping further
into the recursion. Equality is checked based on the resources' path.
> StackOverflowError adapting ServletResource to Sling Model with impl picker
> ---------------------------------------------------------------------------
>
> Key: SLING-7508
> URL: https://issues.apache.org/jira/browse/SLING-7508
> Project: Sling
> Issue Type: Bug
> Components: Extensions
> Affects Versions: Sling Models Impl 1.4.8
> Reporter: Dirk Rudolph
> Priority: Major
>
> Adapting a {{SlingHttpServletRequest}} to a servlet that is registered using
> sling.servlet.paths to a {{@Model}} fails in the following StackOverflowError:
> {code}
> java.lang.StackOverflowError: null
> ...
> at
> org.apache.sling.models.impl.AdapterImplementations.getModelClassForResource(AdapterImplementations.java:318)
> at
> org.apache.sling.models.impl.AdapterImplementations.getModelClassForResource(AdapterImplementations.java:322)
> at
> org.apache.sling.models.impl.AdapterImplementations.getModelClassForResource(AdapterImplementations.java:322)
> {code}
> See for example the following pseudo code:
> {code}
> @SlingServlet(paths = "/apps/mypath")
> class MyServlet extends SlingSafeMethodsServlet {
> doGet(request) { request.adaptTo(Model.class); }
> }
> interface Model {
> ...
> }
> @Model(adaptables = SlingHttpServletRequest.class, adapters =
> {ModelImpl.class, Model.class})
> class ModelImpl implements Model {
> ...
> }
> {code}
> See the example here:
> https://github.com/Buuhuu/sling-org-apache-sling-models-integration-tests/commit/db174f7a8d43432e4445f4e0aa90487827f66f72
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)