static boolean matchAntPathPattern( String pattern, String str, String separator, boolean isCaseSensitive ) { if ( separatorPatternStartSlashMismatch( pattern, str, separator ) ) { return false; } String[] patDirs = tokenizePathToString( pattern, separator ); String[] strDirs = tokenizePathToString( str, separator ); return matchAntPathPattern( patDirs, strDirs, isCaseSensitive ); }
static boolean matchAntPathPatternStart( String[] patDirs, String str, String separator, boolean isCaseSensitive ) { String[] strDirs = tokenizePathToString( str, separator ); int patIdxStart = 0; int patIdxEnd = patDirs.length - 1; int strIdxStart = 0; int strIdxEnd = strDirs.length - 1; // up to first '**' while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) { String patDir = patDirs[patIdxStart]; if ( patDir.equals( "**" ) ) { break; } if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) ) { return false; } patIdxStart++; strIdxStart++; } return strIdxStart > strIdxEnd || patIdxStart <= patIdxEnd; }
static boolean matchAntPathPatternStart( String pattern, String str, String separator, boolean isCaseSensitive ) { // When str starts with a File.separator, pattern has to start with a // File.separator. // When pattern starts with a File.separator, str has to start with a // File.separator. if ( separatorPatternStartSlashMismatch( pattern, str, separator ) ) { return false; } String[] patDirs = tokenizePathToString( pattern, separator ); return matchAntPathPatternStart( patDirs, str, separator, isCaseSensitive ); }
static boolean matchAntPathPattern( MatchPattern matchPattern, String str, String separator, boolean isCaseSensitive ) { if ( separatorPatternStartSlashMismatch( matchPattern, str, separator ) ) { return false; } String[] patDirs = matchPattern.getTokenizedPathString(); String[] strDirs = tokenizePathToString( str, separator ); return matchAntPathPattern( patDirs, strDirs, isCaseSensitive ); }