Sling Post Processor should try to create nodes using longest path first
------------------------------------------------------------------------

                 Key: SLING-416
                 URL: https://issues.apache.org/jira/browse/SLING-416
             Project: Sling
          Issue Type: Bug
          Components: Post Servlets
            Reporter: Carsten Ziegeler
             Fix For: 2.0.0


The current deepGetOrCreateNode method implementation starts from the root node 
to get/create a complete path.
Assumging that /tmp/a/b is passed into the method, first the root node, then 
tmp, followed by tmp/a and tmp/a/b is tried to get. Each time such a node is 
not available it is created.
This approach has problems when it comes to ACLs; assuming that the current 
user has only read/write access to a sub tree, this algorithm fails as soon as 
the root node or the parent node is accessed. Example: user is allowed to 
read/write to /foo/bar but is neiter allowed to read/write to /foo. In this 
case as soon as /foo is accessed the processing stops by an exception although 
the operation is completly legal.
The algorithm has to be reverted by using longest path match first, like first 
checking if /tmp/a/b exists, if not if /tmp/a exists and so on. As soon as a 
node is found, the creation can start in the same order as currently.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to