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/18 13:02:19 UTC

[jira] [Created] (OAK-1431) Handling of empty or invalid names

Jukka Zitting created OAK-1431:
----------------------------------

             Summary: 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


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)