1 | testChar = p_uriSpec.charAt(index);↵ | | 1 | testChar = p_uriSpec.charAt(index);↵
|
2 | ↵ | | 2 | ↵
|
| | | 3 | if (testChar == '?' || testChar == '#') {↵
|
| | | 4 | break;↵
|
| | | 5 | }↵
|
| | | 6 | ↵
|
3 | // check for valid escape sequence↵ | | 7 | // check for valid escape sequence↵
|
4 | if (testChar == '%') {↵ | | 8 | if (testChar == '%') {↵
|
5 | if (index+2 >= end ||↵ | | 9 | if (index+2 >= end ||↵
|
6 | !isHex(p_uriSpec.charAt(index+1)) ||↵ | | 10 | !isHex(p_uriSpec.charAt(index+1)) ||↵
|
7 | !isHex(p_uriSpec.charAt(index+2))) {↵ | | 11 | !isHex(p_uriSpec.charAt(index+2))) {↵
|
8 | throw new MalformedURIException(↵ | | 12 | throw new MalformedURIException(↵
|
9 | "Path contains invalid escape sequence!");↵ | | 13 | "Opaque part contains invalid escape sequence!");↵
|
10 | }↵ | | 14 | }↵
|
11 | index += 2;↵ | | 15 | index += 2;↵
|
12 | }↵ | | 16 | }↵
|
13 | // Path segments cannot contain '[' or ']' since pchar↵ | | 17 | // If the scheme specific part is opaque, it can contain '['↵
|
14 | // production was not changed by RFC 2732.↵ | | 18 | // and ']'. uric_no_slash wasn't modified by RFC 2732, which↵
|
15 | else if (!isPathCharacter(testChar)) {↵ | | 19 | ↵
|
16 | if (testChar == '?' || testChar ==↵ | | 20 | // I've interpreted as an error in the spec, since the ↵
|
17 | '#') {↵ | | 21 | // production should be equivalent to (uric - '/'), and uric↵
|
18 | break;↵ | | 22 | ↵
|
19 | }↵ | | 23 | // contains '[' and ']'. - mrglavas↵
|
| | | 24 | else if (!isURICharacter(testChar)) {↵
|
20 | throw new MalformedURIException(↵ | | 25 | throw new MalformedURIException(↵
|
21 | "Path contains invalid character: " + testChar);↵ | | 26 | "Opaque part contains invalid character: " + testChar);↵
|
22 | }↵ | | 27 | }↵
|
23 | ++index; | | 28 | ++index;
|