[ 
https://issues.apache.org/jira/browse/OAK-9956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17609473#comment-17609473
 ] 

Konrad Windszus commented on OAK-9956:
--------------------------------------

bq. So that is actually correct behavior.

IMHO not, according to JCR spec it should be supported to use unmapped 
namespaces (both with nodes and properties).

> javax.jcr.Node.addNode(...) throws javax.jcr.PathNotFoundException for any 
> unmapped namespaces in expanded path notation
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OAK-9956
>                 URL: https://issues.apache.org/jira/browse/OAK-9956
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>    Affects Versions: 1.44.0
>            Reporter: Konrad Windszus
>            Priority: Major
>
> In case {{Node.addNode(...)}} is called with a path in [expanded 
> form|https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/3_Repository_Model.html#3.2.5.1%20Expanded%20Form]
>  containing a namespace URI which is not mapped a 
> {{javax.jcr.PathNotFoundException}} is thrown. This is unexpected as the JCR 
> 2.0 spec allows unmapped namespaces according to 
> https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/3_Repository_Model.html#3.5.2%20Session-Local%20Mappings
>  and 
> https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/3_Repository_Model.html#3.4.3.4%20Parsing%20Lexical%20Paths
> {quote}When parsing a lexical path, the parser must distinguish between name 
> segments that are in expanded form and those that are in qualified form (see 
> §3.2.5 Lexical Form of JCR Names). When making this determination, the 
> repository cannot assume that every namespace URI encountered in an expanded 
> name will be registered within the repository.
> An otherwise valid path containing an expanded name with an unregistered 
> namespace URI will always resolve into a valid internal representation of a 
> path (i.e., an ordered list of path segments, see §3.4 Paths). Any errors 
> that arise from passing such a path must therefore be as a result of further 
> processing (not merely parsing) that depends on the semantics of the path and 
> the context of use.{quote}
> The same exception is thrown if there is a prefix only locally registered via 
> {{Session.setNamespacePrefix(....)}} for both cases when calling 
> {{addNode(...)}} afterwards in either qualified or expanded form.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to