in commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileName.java [53:79]
public static boolean checkName(final String basePath, final String path, final NameScope scope) {
if (scope == NameScope.FILE_SYSTEM) {
// All good
return true;
}
if (!path.startsWith(basePath)) {
return false;
}
int baseLen = basePath.length();
if (VFS.isUriStyle()) {
// strip the trailing "/"
baseLen--;
}
if (scope != null) {
switch (scope) {
case CHILD:
return path.length() != baseLen && (baseLen <= 1 || path.charAt(baseLen) == SEPARATOR_CHAR) && path.indexOf(SEPARATOR_CHAR, baseLen + 1) == -1;
case DESCENDENT:
return path.length() != baseLen && (baseLen <= 1 || path.charAt(baseLen) == SEPARATOR_CHAR);
case DESCENDENT_OR_SELF:
return baseLen <= 1 || path.length() <= baseLen || path.charAt(baseLen) == SEPARATOR_CHAR;
default:
break;
}
}
throw new IllegalArgumentException();
}