[ 
https://issues.apache.org/jira/browse/OAK-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jukka Zitting resolved OAK-1431.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 0.18
         Assignee: Jukka Zitting

The {{NodeState}} and {{NodeBuilder}} interfaces now enforce simple validity 
rules on names (must be non-empty, can't contain any forwards slash 
characters). More complex naming rules can be handled elsewhere.

> Handling of empty or invalid names
> ----------------------------------
>
>                 Key: OAK-1431
>                 URL: https://issues.apache.org/jira/browse/OAK-1431
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: Jukka Zitting
>            Assignee: Jukka Zitting
>             Fix For: 0.18
>
>
> The {{NodeState.getChildNode()}} says the following about the name argument:
> bq. The name is an opaque string and is not parsed or otherwise interpreted 
> by this method.
> This causes some confusion higher up the stack, for example the following 
> code produces an unexpected result:
> {code}
> Root root = ...;
> Tree a = root.getTree("/");
> Tree b = root.getTree("/").getChild("");
> assert a.exists() && !b.exists() && a.getPath().equals(b.getPath()); // !
> {code}
> To avoid such confusion, I'd outlaw such potentially troublesome cases like 
> empty names or names containing a forward slash all the way down at the 
> NodeState level. The {{getChildNode()}} method could say something like this:
> bq. Names that are empty or ones contain a forward slash are considered 
> invalid and cause an {{IllegalArgumentException}} to be thrown.
> Code higher up the stack should probably be adjusted to better handle such 
> edge cases.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to