in src/main/java/org/apache/sling/resourceresolver/impl/helper/URI.java [2927:2961]
public void setPath(String path) throws URIException {
if (path == null || path.length() == 0) {
_path = _opaque = (path == null) ? null : path.toCharArray();
setURI();
return;
}
// set the charset to do escape encoding
String charset = getProtocolCharset();
if (_is_net_path || _is_abs_path) {
_path = encode(path, allowed_abs_path, charset);
} else if (_is_rel_path) {
StringBuilder buff = new StringBuilder(path.length());
int at = path.indexOf('/');
if (at == 0) { // never 0
throw new URIException(URIException.PARSING, "incorrect relative path");
}
if (at > 0) {
buff.append(encode(path.substring(0, at), allowed_rel_path, charset));
buff.append(encode(path.substring(at), allowed_abs_path, charset));
} else {
buff.append(encode(path, allowed_rel_path, charset));
}
_path = buff.toString().toCharArray();
} else if (_is_opaque_part) {
StringBuilder buf = new StringBuilder();
buf.insert(0, encode(path.substring(0, 1), uric_no_slash, charset));
buf.insert(1, encode(path.substring(1), uric, charset));
_opaque = buf.toString().toCharArray();
} else {
throw new URIException(URIException.PARSING, "incorrect path");
}
setURI();
}