My problem is that there are many problems in different places in the code:
1. o.a.commons.lang.StringUtils.split() behaves strange in that way that o.a.com.l.SU.split("", "/") return an empty String[]
while
o.a.coc.u.SU.split("", "/") returns String[] {""} which is what I would expect.
Also
o.a.com.l.SU.split("/", "/") returns empty String[].
This means the iteration over the string array can never really work with o.a.commons.lang.StringUtils.
=> reverted that change.
2. our Tokenizer behaves strange in one case:
o.a.coc.u.SU.split("/", "/") => new Tokenizer("/", "/", false) => tokenizer.countTokens() = 2 => but tokenizer.hasMoreTokens() returns true only once => leads to String[] {"", null} while it should be String[] {"", ""}
3. while the Tokenizer correctly works on "/../" the NetUtils.normalize() method has a problem with it:
result of split/tokenize: String[] {"", "..", ""} result of normalize(): ""
Joerg