"/../" results in "/../" instead of "/" and I don't know ...
http://www.ietf.org/rfc/rfc2396.txt
5.2. Resolving Relative References to Absolute Form
6) a) All but the last segment of the base URI's path component is copied to the buffer. In other words, any characters after the last (right-most) slash character, if any, are excluded.
b) The reference's path component is appended to the buffer string.
c) All occurrences of "./", where "." is a complete path segment, are removed from the buffer string.
d) If the buffer string ends with "." as a complete path segment, that "." is removed.
e) All occurrences of "<segment>/../", where <segment> is a complete path segment not equal to "..", are removed from the buffer string. Removal of these path segments is performed iteratively, removing the leftmost matching pattern on each iteration, until no matching pattern remains.
f) If the buffer string ends with "<segment>/..", where <segment> is a complete path segment not equal to "..", that "<segment>/.." is removed.
g) If the resulting buffer string still begins with one or more complete path segments of "..", then the reference is considered to be in error. Implementations may handle this error by retaining these components in the resolved path (i.e., treating them as part of the final URI), by removing them from the resolved path (i.e., discarding relative levels above the root), or by avoiding traversal of the reference.
h) The remaining buffer string is the reference URI's new path component.
g) means it's an error, but may be handled as /../ or / - jakarta.commons.io.FilenameUtils' null in the sense of notifying an error is also correct. Hmm ...
Joerg