You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Konrad Windszus <ko...@gmx.de> on 2021/08/02 13:31:00 UTC

Re: Bundled Scripts: How to overlay

Thanks for the input, indeed the Maven Plugin creates capabilities for both absolute and relative paths.

It is probably worth to document some best practices alongside https://github.com/apache/sling-org-apache-sling-servlets-resolver/blob/master/README.md <https://github.com/apache/sling-org-apache-sling-servlets-resolver/blob/master/README.md> namely:

- Register path-based resource types with and without search path prefix
- Always extend from relative path based resource types

The latter could be enforced by the scriptingbundle-maven-plugin.
Konrad


> On 30. Jul 2021, at 11:19, Radu Cotescu <ra...@apache.org> wrote:
> 
> Like always, use relative resource types for whatever you have in the extends and requires files, so that the Servlet Resolver can still do its magic in terms of overlays.
> 
>> On 30 Jul 2021, at 10:23, Konrad Windszus <ko...@gmx.de> wrote:
>> 
>> What am I supposed to write in the extends file to support overlays?
>> How to make sure that the /apps script is preferred over the /libs script?
>> Thanks,
>> Konrad
>> 
>>> On 30. Jul 2021, at 10:07, Radu Cotescu <radu@apache.org <ma...@apache.org>> wrote:
>>> 
>>> Hi Konrad,
>>> 
>>> Take a look at this resource type [0] and the capability it generates:
>>> 
>>> sling.servlet;
>>>  sling.servlet.resourceTypes:List<String>="/apps/sling/scripting/examplebundle/precompiled/ttest,sling/scripting/examplebundle/precompiled/ttest";
>>>  scriptEngine=htl;
>>>  scriptExtension=html,
>>> sling.servlet;
>>>  sling.servlet.resourceTypes:List<String>="/apps/sling/scripting/examplebundle/precompiled/ttest,sling/scripting/examplebundle/precompiled/ttest";
>>>  scriptEngine=htl;
>>>  scriptExtension=html;
>>>  sling.servlet.selectors:List<String>=template
>>> 
>>> And also have a look at [1]. If your scripts are in a folder that starts with a search path, the plugin will generate two resource types - an absolute and a relative one. So I think that SLING-10688 is already handled. Let me know if you see otherwise.
>>> 
>>> Regards,
>>> Radu
>>> 
>>> 
>>> [0] - https://github.com/apache/sling-org-apache-sling-scripting-bundle-tracker-it/tree/master/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/sling/scripting/examplebundle/precompiled/ttest <https://github.com/apache/sling-org-apache-sling-scripting-bundle-tracker-it/tree/master/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/sling/scripting/examplebundle/precompiled/ttest> <https://github.com/apache/sling-org-apache-sling-scripting-bundle-tracker-it/tree/master/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/sling/scripting/examplebundle/precompiled/ttest <https://github.com/apache/sling-org-apache-sling-scripting-bundle-tracker-it/tree/master/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/sling/scripting/examplebundle/precompiled/ttest>>
>>> [1] - https://sling.apache.org/components/scriptingbundle-maven-plugin/metadata-mojo.html#searchPaths <https://sling.apache.org/components/scriptingbundle-maven-plugin/metadata-mojo.html#searchPaths> <https://sling.apache.org/components/scriptingbundle-maven-plugin/metadata-mojo.html#searchPaths <https://sling.apache.org/components/scriptingbundle-maven-plugin/metadata-mojo.html#searchPaths>>
>>> 
>>> 
>>>> On 29 Jul 2021, at 17:29, Konrad Windszus <ko...@gmx.de> wrote:
>>>> 
>>>> At least the https://github.com/apache/sling-scriptingbundle-maven-plugin <https://github.com/apache/sling-scriptingbundle-maven-plugin> always creates absolute resource types. I created https://issues.apache.org/jira/browse/SLING-10688 <https://issues.apache.org/jira/browse/SLING-10688> for also optionally creating relative resource types...
>>>> Still this would rather be a workaround because I would assume that for bundled scripts it often makes sense to provide the capability with an absolute path while requiring the capability with a relative path (to allow overlays). But that would obviously never match in OSGi....
>>>> 
>>>> Konrad
>>>> 
>>>>> On 29. Jul 2021, at 16:55, Konrad Windszus <ko...@gmx.de> wrote:
>>>>> 
>>>>> Hi,
>>>>> With bundled scripts the extends attribute of the sling.servlet capability defines the resource type one extends (https://github.com/apache/sling-org-apache-sling-servlets-resolver#how <https://github.com/apache/sling-org-apache-sling-servlets-resolver#how>).
>>>>> It is not specified though if the resource type should be absolute (i.e. start with a "/") or can be relative (and is looked up by prefixing it with any of the resource resolver search paths) but I guess it is the former.
>>>>> I know that resource resolver search paths are not directly related to servlet resolving from bundles but they are extremely handy as they allow to overlay scripts from "/libs" in "/apps".
>>>>> 
>>>>> How can the same be achieved with bundled scripts?
>>>>> I don't want to depend on bundle loading order and have a predictable servlet resolution. 
>>>>> What is the recommended way to globally overlay a bundled script from another bundle?
>>>>> 
>>>>> Thanks,
>>>>> Konrad
>