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