And even in the PostServlet we only generate compliant names in case the name 
is not explicitly given in the parameter: 
https://github.com/apache/sling-org-apache-sling-servlets-post/blob/7ff7280c7ba89592186ac76d33b481d73abba323/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractCreateOperation.java#L628
 and 
https://github.com/apache/sling-org-apache-sling-servlets-post/blob/7ff7280c7ba89592186ac76d33b481d73abba323/src/main/java/org/apache/sling/servlets/post/impl/helper/DefaultNodeNameGenerator.java#L143C28-L143C33.

For automatically generated node names the used filter is not escaping reserved 
characters either 
(https://github.com/apache/sling-org-apache-sling-servlets-post/blob/7ff7280c7ba89592186ac76d33b481d73abba323/src/main/java/org/apache/sling/servlets/post/impl/helper/NodeNameFilter.java#L26)
 but just replacing it so in general this is not suitable for API usage where 
you rely on certain semantics extracted from the node name.

I will come up with a suggestion of a minimum escape/unescape methods which 
just satisfies Sling API requirements.
Konrad

> On 30. May 2025, at 12:02, Carsten Ziegeler <cziege...@apache.org> wrote:
> 
> Hi Konrad,
> 
> true, I thought we had something in the providers, but it is actually in the 
> POST servlet - which covers only one way of creating resources.
> 
> Regards
> Carsten
> 
> On 30.05.2025 11:59, Konrad Windszus wrote:
>> Hi Carsten,
>> Thanks for your comments.
>> Regarding:
>>> I don't think that a general escaping method helps as providers usually do 
>>> their own escaping already today.
>> I don’t think this is true, e.g. for the most popular JCR Resource Provider. 
>> It just bails out currently with an exception for non-JCR supported name 
>> characters: 
>> https://github.com/apache/sling-org-apache-sling-jcr-resource/blob/334fa10956b101c24f62e22a54f33afc374085da/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java#L457
>> Currently the escaping lies with the consumer. Although for JCR the one 
>> being provided in 
>> https://jackrabbit.apache.org/api/2.22/org/apache/jackrabbit/util/Text.html#escapeIllegalJcrChars(java.lang.String)
>>  is the most suitable, this is not really being obvious right now.
>> The util method I had in mind is probably more useful for 
>> SyntheticResources: 
>> https://sling.apache.org/apidocs/sling13/org/apache/sling/api/resource/SyntheticResource.html#%3Cinit%3E(org.apache.sling.api.resource.ResourceResolver,java.lang.String,java.lang.String).
>> I am not proposing (any longer) to do escaping automatically in the resource 
>> providers (compare with https://issues.apache.org/jira/browse/SLING-12776) 
>> but just to add more documentation and helper methods to make it easier for 
>> Sling API consumers to do it correctly.
>> WDYT,
>> Konrad
>>> On 30. May 2025, at 07:24, Carsten Ziegeler <cziege...@apache.org> wrote:
>>> 
>>> Hi,
>>> 
>>> those two rules sound reasonable and is probably the only check that the 
>>> resource resolver itself could do.
>>> 
>>> I don't think that a general escaping method helps as providers usually do 
>>> their own escaping already today. If these providers do not switch to the 
>>> general one, it does not help. If they switch to the general one, these 
>>> might be a breaking change.
>>> 
>>> Regards
>>> Carsten
>>> 
>>> On 28.05.2025 11:57, Konrad Windszus wrote:
>>>> Hi,
>>>> Currently the documentation at 
>>>> https://sling.apache.org/documentation/the-sling-engine/resources.html 
>>>> doesn’t list which resource names are valid in Sling
>>>> However the Sling API imposes the following restrictions already:
>>>> - “/“ must not be used as it is the path separator.
>>>> - “.” must not be used as the only character (arbitrarily often) in a 
>>>> resource name, as this is used for relative path segments
>>>> Obviously each resource provider may impose additional restrictions.
>>>> Is this observation correct? Is there other characters which must not be 
>>>> used in resource names?
>>>> Should Sling API have a an escape/unescape method in 
>>>> https://github.com/apache/sling-org-apache-sling-api/blob/master/src/main/java/org/apache/sling/api/resource/ResourceUtil.java?
>>>> If so which escape rules should we propose?
>>>> Thanks in advance for your input.
>>>> Konrad
>>> 
>>> -- 
>>> Carsten Ziegeler
>>> Adobe
>>> cziege...@apache.org
>>> 
> 
> -- 
> Carsten Ziegeler
> Adobe
> cziege...@apache.org
> 

Reply via email to