You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2014/02/19 15:22:22 UTC
[jira] [Resolved] (OAK-1431) Handling of empty or invalid names
[ 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)