On Tue, Mar 17, 2009 at 4:24 PM, Andreas Hartmann <[email protected]> wrote: > I'd like to provide a JSON-based service for a subtree of my repository. My > first idea would be to register a servlet like this: > > �[email protected] name="sling.servlet.paths" > value1="/path/to/my/content/root" > value2="/path/to/my/content/root/**" > > But I guess wildcards are not supported in paths.
No. But I would also not recommend to use servlet paths, as there is no easy way to find out what is rendered by what if you have too many of them. > Is there a straightforward way to achieve this? Unfortunately request > selectors or extensions don't seem to work, because it is not possible to > use URIs like > > (A) /path/to/my/content/root.tree.json > (B) /path/to/my/content/root.tree.json/foo.node.json > > When the (B) is requested, the same response as for (A) is returned (I guess > there is some top-down matching algorithm). Apart from that, the URIs don't > look very nice. Selectors and extensions are applied only for the "current" node, not in combination with its parent. That would be too complicated. In case (B), what happens is that sling tries to find the longest-matching path with an existing resource, which is /path/to/my/content/root (because there is a jcr node at this location). Everything after that will be split up into selectors (dots as separators), extension (last dot-separated part) and suffix (after an additional slash). In (B) it would be (afaik): resource = /path/to/my/content/root selectors = [tree] extension = [json] suffix = /foo.node.json To solve your problem, I would rather try to set a resource type for all nodes in the resource tree and register a servlet for the json extension, that resource type (and maybe a selector, if desired). Otherwise you could also simply register a distinct default get servlet for the extension and the selector (resource type is sling/servlet/default). Regards, Alex -- Alexander Klimetschek [email protected]
