[ https://issues.apache.org/jira/browse/OAK-9956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17609455#comment-17609455 ]
Konrad Windszus edited comment on OAK-9956 at 9/26/22 11:57 AM: ---------------------------------------------------------------- {quote} FWIW, "setProperty()" has a similar problem; it just persists the expanded form literally{quote} This is just the case if an invalid namespace URI (without a colon) is given, as then you actually deal with a qualified name without a namespace, compare with https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/3_Repository_Model.html#3.2.5.3%20Qualified%20Form%20with%20the%20Empty%20Namespace. When calling {code}node.setProperty("{my:Namespace}foo", "bar"){code} you run into a {code}javax.jcr.RepositoryException: Invalid name or path: {my:Namespace}foo}{code} was (Author: kwin): > FWIW, "setProperty()" has a similar problem; it just persists the expanded > form literally. This is just the case if an invalid namespace URI (without a colon) is given, as then you actually deal with a qualified name without a namespace, compare with https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/3_Repository_Model.html#3.2.5.3%20Qualified%20Form%20with%20the%20Empty%20Namespace. When calling {{node.setProperty("{my:Namespace}foo", "bar");}} you run into a {{javax.jcr.RepositoryException: Invalid name or path: {my:Namespace}foo}} > 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)