Class SelectorUtils
- java.lang.Object
-
- org.apache.sshd.common.util.SelectorUtils
-
public final class SelectorUtils extends Object
This is a utility class used by selectors and DirectoryScanner. The functionality more properly belongs just to selectors, but unfortunately DirectoryScanner exposed these as protected methods. Thus we have to support any subclasses of DirectoryScanner that may access these methods.
This is a Singleton.
- Since:
- 1.5
- Version:
- $Id$
- Author:
- Arnout J. Kuiper ajkuiper@wxs.nl, Magesh Umasankar, Bruce Atherton
-
-
Field Summary
Fields Modifier and Type Field Description static String
ANT_HANDLER_PREFIX
static String
PATTERN_HANDLER_PREFIX
static String
PATTERN_HANDLER_SUFFIX
static String
REGEX_HANDLER_PREFIX
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static String
applySlashifyRules(String path, char sepChar)
Applies the "slashification" rules as specified in Single Unix Specification version 3, section 3.266 and section 4.11 - Pathname resolutionstatic String
concatPaths(String p1, String p2, char fsSeparator)
Creates a single path by concatenating 2 parts and taking care not to create FS separator duplication in the processstatic boolean
equals(char c1, char c2, boolean isCaseSensitive)
Tests whether two characters are equal.static boolean
isWindowsDriveSpecified(CharSequence cs)
static boolean
isWindowsDriveSpecified(CharSequence cs, int offset, int len)
static boolean
match(String pattern, String str)
Tests whether or not a string matches against a pattern.static boolean
match(String pattern, String str, boolean isCaseSensitive)
Tests whether or not a string matches against a pattern.static boolean
matchAntPathPattern(String pattern, String str, boolean isCaseSensitive)
static boolean
matchAntPathPattern(String pattern, String str, String separator, boolean isCaseSensitive)
static boolean
matchAntPathPatternStart(String pattern, String str, String separator, boolean isCaseSensitive)
static boolean
matchPath(String pattern, String str)
Tests whether or not a given path matches a given pattern.static boolean
matchPath(String pattern, String str, boolean isCaseSensitive)
Tests whether or not a given path matches a given pattern.static boolean
matchPath(String pattern, String str, String separator, boolean isCaseSensitive)
static boolean
matchPatternStart(String pattern, String str)
Tests whether or not a given path matches the start of a given pattern up to the first "**".static boolean
matchPatternStart(String pattern, String str, boolean isCaseSensitive)
Tests whether or not a given path matches the start of a given pattern up to the first "**".static boolean
matchPatternStart(String pattern, String str, String separator, boolean isCaseSensitive)
static String
removeWhitespace(String input)
"Flattens" a string by removing all whitespace (space, tab, line-feed, carriage return, and form-feed).static List<String>
tokenizePath(String path)
Breaks a path up into a Vector of path elements, tokenizing onFile.separator
.static List<String>
tokenizePath(String path, String separator)
static String
translateToFileSystemPath(String path, String pathSeparator, String fsSeparator)
Converts a path containing a specific separator to one using the specified file-system onestatic String
translateToFileSystemPath(String path, String pathSeparator, FileSystem fs)
Converts a path containing a specific separator to one using the specified file-system onestatic String
translateToLocalFileSystemPath(String path, char pathSeparator, String fsSeparator)
Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)static String
translateToLocalFileSystemPath(String path, char pathSeparator, FileSystem fs)
/** Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)static String
translateToLocalPath(String path)
Converts a possibly '/' separated path to a local path.
-
-
-
Field Detail
-
PATTERN_HANDLER_PREFIX
public static final String PATTERN_HANDLER_PREFIX
- See Also:
- Constant Field Values
-
PATTERN_HANDLER_SUFFIX
public static final String PATTERN_HANDLER_SUFFIX
- See Also:
- Constant Field Values
-
REGEX_HANDLER_PREFIX
public static final String REGEX_HANDLER_PREFIX
- See Also:
- Constant Field Values
-
ANT_HANDLER_PREFIX
public static final String ANT_HANDLER_PREFIX
- See Also:
- Constant Field Values
-
-
Method Detail
-
matchPatternStart
public static boolean matchPatternStart(String pattern, String str)
Tests whether or not a given path matches the start of a given pattern up to the first "**".
This is not a general purpose test and should only be used if you can live with false positives. For example,
pattern=**\a
andstr=b
will yieldtrue
.- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The path to match, as a String. Must not benull
.- Returns:
- whether or not a given path matches the start of a given pattern up to the first "**".
-
matchPatternStart
public static boolean matchPatternStart(String pattern, String str, boolean isCaseSensitive)
Tests whether or not a given path matches the start of a given pattern up to the first "**".
This is not a general purpose test and should only be used if you can live with false positives. For example,
pattern=**\a
andstr=b
will yieldtrue
.- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The path to match, as a String. Must not benull
.isCaseSensitive
- Whether or not matching should be performed case sensitively.- Returns:
- whether or not a given path matches the start of a given pattern up to the first "**".
-
matchPatternStart
public static boolean matchPatternStart(String pattern, String str, String separator, boolean isCaseSensitive)
-
matchAntPathPatternStart
public static boolean matchAntPathPatternStart(String pattern, String str, String separator, boolean isCaseSensitive)
-
matchPath
public static boolean matchPath(String pattern, String str)
Tests whether or not a given path matches a given pattern.- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The path to match, as a String. Must not benull
.- Returns:
true
if the pattern matches against the string, orfalse
otherwise.
-
matchPath
public static boolean matchPath(String pattern, String str, boolean isCaseSensitive)
Tests whether or not a given path matches a given pattern.- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The path to match, as a String. Must not benull
.isCaseSensitive
- Whether or not matching should be performed case sensitively.- Returns:
true
if the pattern matches against the string, orfalse
otherwise.
-
matchPath
public static boolean matchPath(String pattern, String str, String separator, boolean isCaseSensitive)
-
matchAntPathPattern
public static boolean matchAntPathPattern(String pattern, String str, boolean isCaseSensitive)
-
matchAntPathPattern
public static boolean matchAntPathPattern(String pattern, String str, String separator, boolean isCaseSensitive)
-
match
public static boolean match(String pattern, String str)
Tests whether or not a string matches against a pattern. The pattern may contain two special characters:
'*' means zero or more characters
'?' means one and only one character- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The string which must be matched against the pattern. Must not benull
.- Returns:
true
if the string matches against the pattern, orfalse
otherwise.
-
match
public static boolean match(String pattern, String str, boolean isCaseSensitive)
Tests whether or not a string matches against a pattern. The pattern may contain two special characters:
'*' means zero or more characters
'?' means one and only one character- Parameters:
pattern
- The pattern to match against. Must not benull
.str
- The string which must be matched against the pattern. Must not benull
.isCaseSensitive
- Whether or not matching should be performed case sensitively.- Returns:
true
if the string matches against the pattern, orfalse
otherwise.
-
equals
public static boolean equals(char c1, char c2, boolean isCaseSensitive)
Tests whether two characters are equal.- Parameters:
c1
- 1st characterc2
- 2nd characterisCaseSensitive
- Whether to compare case sensitive- Returns:
true
if equal characters
-
tokenizePath
public static List<String> tokenizePath(String path)
Breaks a path up into a Vector of path elements, tokenizing onFile.separator
.- Parameters:
path
- Path to tokenize. Must not benull
.- Returns:
- a List of path elements from the tokenized path
-
translateToLocalFileSystemPath
public static String translateToLocalFileSystemPath(String path, char pathSeparator, FileSystem fs)
/** Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)- Parameters:
path
- The input pathpathSeparator
- The separator used to build the input pathfs
- The targetFileSystem
- may not benull
- Returns:
- The transformed path
- See Also:
translateToLocalFileSystemPath(String, char, String)
-
translateToLocalFileSystemPath
public static String translateToLocalFileSystemPath(String path, char pathSeparator, String fsSeparator)
Converts a path to one matching the target file system by applying the "slashification" rules, converting it to a local path and then translating its separator to the target file system one (if different than local one)- Parameters:
path
- The input pathpathSeparator
- The separator used to build the input pathfsSeparator
- The target file system separator- Returns:
- The transformed path
- See Also:
applySlashifyRules(String, char)
,translateToLocalPath(String)
,translateToFileSystemPath(String, String, String)
-
applySlashifyRules
public static String applySlashifyRules(String path, char sepChar)
Applies the "slashification" rules as specified in Single Unix Specification version 3, section 3.266 and section 4.11 - Pathname resolution- Parameters:
path
- The original path - ignored ifnull
/empty or does not contain any slashessepChar
- The "slash" character- Returns:
- The effective path - may be same as input if no changes required
-
translateToLocalPath
public static String translateToLocalPath(String path)
Converts a possibly '/' separated path to a local path. Note: takes special care of Windows drive paths - e.g.,C:
by converting them to "C:\"- Parameters:
path
- The original path - ignored ifnull
/empty- Returns:
- The local path
-
isWindowsDriveSpecified
public static boolean isWindowsDriveSpecified(CharSequence cs)
-
isWindowsDriveSpecified
public static boolean isWindowsDriveSpecified(CharSequence cs, int offset, int len)
-
translateToFileSystemPath
public static String translateToFileSystemPath(String path, String pathSeparator, FileSystem fs)
Converts a path containing a specific separator to one using the specified file-system one- Parameters:
path
- The input path - ignored ifnull
/emptypathSeparator
- The separator used to build the input path - may not benull
/emptyfs
- The targetFileSystem
- may not benull
- Returns:
- The path where the separator used to build it is replaced by the file-system one (if different)
- See Also:
FileSystem.getSeparator()
,translateToFileSystemPath(String, String, String)
-
translateToFileSystemPath
public static String translateToFileSystemPath(String path, String pathSeparator, String fsSeparator)
Converts a path containing a specific separator to one using the specified file-system one- Parameters:
path
- The input path - ignored ifnull
/emptypathSeparator
- The separator used to build the input path - may not benull
/emptyfsSeparator
- The target file system separator - may not benull
/empty- Returns:
- The path where the separator used to build it is replaced by the file-system one (if different)
- Throws:
IllegalArgumentException
- if path or file-system separator arenull
/empty or if the separators are different and the path contains the target file-system separator as it would create an ambiguity
-
concatPaths
public static String concatPaths(String p1, String p2, char fsSeparator)
Creates a single path by concatenating 2 parts and taking care not to create FS separator duplication in the process- Parameters:
p1
- prefix part - ignored ifnull
/emptyp2
- suffix part - ignored ifnull
/emptyfsSeparator
- The expected file-system separator- Returns:
- Concatenation result
-
removeWhitespace
public static String removeWhitespace(String input)
"Flattens" a string by removing all whitespace (space, tab, line-feed, carriage return, and form-feed). This uses StringTokenizer and the default set of tokens as documented in the single argument constructor.- Parameters:
input
- a String to remove all whitespace.- Returns:
- a String that has had all whitespace removed.
-
-