Hello

Apparently, the behavior that the root path with .html extension was not
resolved at all was due to some persistent invalid internal state of the
resource resolver. After modifying an arbitrary resolver setting, the root
resource is now resolved (I re-installed Sling and the entire application to
make sure this remains the case).

However, there still is an important difference:

When requesting "/content/child1/child2/child3.html", the path passed to the
resource provider is "/content/child1/child2/child3.html", i.e. includes the
extension. When requesting /content/child1/child2.html, the resolver only
sees the path "/content/child1/child2". Since I am doing a subsequent
resource resolution, this results in a missing resolutionPathInfo=".html" of
the resolved resource.

Thus, the remaining question is: Why are extensions not passed to the
provider in case the root path is requested?

Kind regards,
Olaf

-----Original Message-----
From: Olaf Otto [mailto:o...@x100.de] 
Sent: Dienstag, 14. Januar 2014 07:29
To: users@sling.apache.org
Subject: RE: ResourceProvider not invoked when provider root path is called
with HTML extension

Hello,

Thank you for the quick replies! The /child2 path is exclusively provided by
the custom resource provider. Would anyone know a hint why this just happens
in case of a .html extension? There must be some other actor influencing
this behavior.

Kind regards,
Olaf

-----Original Message-----
From: Felix Meschberger [mailto:fmesc...@adobe.com]
Sent: Montag, 13. Januar 2014 23:38
To: users@sling.apache.org
Subject: Re: ResourceProvider not invoked when provider root path is called
with HTML extension

Hi

As Alex said, this is not expected, but …

Do you happen to have a node /content/child1/child2.html in the repository ?
If so, this would overwrite the ResourceProvider because it has a full path
match as opposed to just …/child2.

Regards
Felix

Am 13.01.2014 um 14:09 schrieb Olaf Otto <o...@x100.de>:

> Hi all,
> 
> 
> 
> I have created a resource provider adding content as children into a 
> tree of existing JCR content, like this:
> 
> 
> 
> /content/child1  ß JCR content
> 
> /content/child1/child2 ß Provided by ResourceProvider
> 
> 
> 
> This works as expected: child2 is returned as a child of child1, and 
> invoking /content/child1/child2 yields the provided resource. However, 
> when calling /content/child1/child2.html, the resource provider is 
> never asked for a resource. Instead, the default get servlet returns a 
> synthetic resource, causing a redirect to 
> /content/child1/child2.html/, resulting in a 404. Using a different 
> extension works - when I call /content/child1/child2.json, the 
> provider is called. Children of the root path however work with a 
> .html extension: A request to /content/child1/child2/child3.html is 
> mapped
to the resource provider.
> 
> 
> 
> I have played with the resource provider's properties, trying both
> /content/child1/child2 and /content/child1/child2/ as root and setting 
> owns root to true. This had no effect - the provider is only called if 
> /content/child1/child2.html is added as a root path. This, however, is 
> not an acceptable solution as child1 features both child2 and 
> child2.html as children afterwards.
> 
> 
> 
> In summary, this looks like a bug to me - am I right or am I missing a 
> piece of the puzzle?
> 
> 
> 
> Kind regards,
> 
> Olaf
> 



Reply via email to