Class SelectorUtils


  • public final class SelectorUtils
    extends java.lang.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.

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private SelectorUtils()
      Private Constructor
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      private static boolean equals​(char c1, char c2, boolean isCaseSensitive)
      Tests whether two characters are equal.
      (package private) static boolean isAntPrefixedPattern​(java.lang.String pattern)  
      (package private) static boolean isRegexPrefixedPattern​(java.lang.String pattern)  
      static boolean match​(java.lang.String pattern, java.lang.String str)
      Tests whether or not a string matches against a pattern.
      static boolean match​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)
      Tests whether or not a string matches against a pattern.
      (package private) static boolean matchAntPathPattern​(java.lang.String[] patDirs, java.lang.String[] strDirs, boolean isCaseSensitive)  
      private static boolean matchAntPathPattern​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)  
      (package private) static boolean matchAntPathPattern​(MatchPattern matchPattern, java.lang.String str, java.lang.String separator, boolean isCaseSensitive)  
      private static boolean matchAntPathPatternStart​(java.lang.String[] patDirs, java.lang.String[] tokenizedFileName, boolean isCaseSensitive)  
      private static boolean matchAntPathPatternStart​(java.lang.String[] patDirs, java.lang.String str, java.lang.String separator, boolean isCaseSensitive)  
      private static boolean matchAntPathPatternStart​(java.lang.String pattern, java.lang.String str, java.lang.String separator, boolean isCaseSensitive)  
      (package private) static boolean matchAntPathPatternStart​(MatchPattern pattern, java.lang.String str, java.lang.String separator, boolean isCaseSensitive)  
      static boolean matchPath​(java.lang.String pattern, java.lang.String str)
      Tests whether or not a given path matches a given pattern.
      static boolean matchPath​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)
      Tests whether or not a given path matches a given pattern.
      static boolean matchPatternStart​(java.lang.String pattern, java.lang.String str)
      Tests whether or not a given path matches the start of a given pattern up to the first "**".
      static boolean matchPatternStart​(java.lang.String pattern, java.lang.String str, boolean isCaseSensitive)
      Tests whether or not a given path matches the start of a given pattern up to the first "**".
      private static boolean separatorPatternStartSlashMismatch​(java.lang.String pattern, java.lang.String str, java.lang.String separator)  
      private static boolean separatorPatternStartSlashMismatch​(MatchPattern matchPattern, java.lang.String str, java.lang.String separator)  
      private static java.util.List<java.lang.String> tokenizePath​(java.lang.String path, java.lang.String separator)
      Breaks a path up into a List of path elements, tokenizing on File.separator.
      private static java.lang.String[] tokenizePathToString​(java.lang.String path, java.lang.String separator)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • PATTERN_HANDLER_PREFIX

        private static final java.lang.String PATTERN_HANDLER_PREFIX
        Pattern handler prefix.
        See Also:
        Constant Field Values
      • PATTERN_HANDLER_SUFFIX

        public static final java.lang.String PATTERN_HANDLER_SUFFIX
        Pattern handler suffix.
        See Also:
        Constant Field Values
      • REGEX_HANDLER_PREFIX

        public static final java.lang.String REGEX_HANDLER_PREFIX
        Regex start pattern.
        See Also:
        Constant Field Values
      • ANT_HANDLER_PREFIX

        public static final java.lang.String ANT_HANDLER_PREFIX
        ANT pattern prefix.
        See Also:
        Constant Field Values
    • Constructor Detail

      • SelectorUtils

        private SelectorUtils()
        Private Constructor
    • Method Detail

      • matchPatternStart

        public static boolean matchPatternStart​(java.lang.String pattern,
                                                java.lang.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 and str=b will yield true.

        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        Returns:
        whether or not a given path matches the start of a given pattern up to the first "**".
      • matchPatternStart

        public static boolean matchPatternStart​(java.lang.String pattern,
                                                java.lang.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 and str=b will yield true.

        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        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 "**".
      • matchAntPathPatternStart

        private static boolean matchAntPathPatternStart​(java.lang.String pattern,
                                                        java.lang.String str,
                                                        java.lang.String separator,
                                                        boolean isCaseSensitive)
      • matchPath

        public static boolean matchPath​(java.lang.String pattern,
                                        java.lang.String str)
        Tests whether or not a given path matches a given pattern.
        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        Returns:
        true if the pattern matches against the string, or false otherwise.
      • matchPath

        public static boolean matchPath​(java.lang.String pattern,
                                        java.lang.String str,
                                        boolean isCaseSensitive)
        Tests whether or not a given path matches a given pattern.
        Parameters:
        pattern - The pattern to match against. Must not be null.
        str - The path to match, as a String. Must not be null.
        isCaseSensitive - Whether or not matching should be performed case sensitively.
        Returns:
        true if the pattern matches against the string, or false otherwise.
      • matchAntPathPattern

        private static boolean matchAntPathPattern​(java.lang.String pattern,
                                                   java.lang.String str,
                                                   boolean isCaseSensitive)
      • match

        public static boolean match​(java.lang.String pattern,
                                    java.lang.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 be null.
        str - The string which must be matched against the pattern. Must not be null.
        Returns:
        true if the string matches against the pattern, or false otherwise.
      • match

        public static boolean match​(java.lang.String pattern,
                                    java.lang.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 be null.
        str - The string which must be matched against the pattern. Must not be null.
        isCaseSensitive - Whether or not matching should be performed case sensitively.
        Returns:
        true if the string matches against the pattern, or false otherwise.
      • equals

        private static boolean equals​(char c1,
                                      char c2,
                                      boolean isCaseSensitive)
        Tests whether two characters are equal.
      • tokenizePath

        private static java.util.List<java.lang.String> tokenizePath​(java.lang.String path,
                                                                     java.lang.String separator)
        Breaks a path up into a List of path elements, tokenizing on File.separator.
        Parameters:
        path - Path to tokenize. Must not be null.
        separator - The separator to use
        Returns:
        a List of path elements from the tokenized path
      • matchAntPathPatternStart

        static boolean matchAntPathPatternStart​(@Nonnull
                                                MatchPattern pattern,
                                                @Nonnull
                                                java.lang.String str,
                                                @Nonnull
                                                java.lang.String separator,
                                                boolean isCaseSensitive)
      • tokenizePathToString

        private static java.lang.String[] tokenizePathToString​(@Nonnull
                                                               java.lang.String path,
                                                               @Nonnull
                                                               java.lang.String separator)
      • matchAntPathPatternStart

        private static boolean matchAntPathPatternStart​(@Nonnull
                                                        java.lang.String[] patDirs,
                                                        @Nonnull
                                                        java.lang.String str,
                                                        @Nonnull
                                                        java.lang.String separator,
                                                        boolean isCaseSensitive)
      • matchAntPathPatternStart

        private static boolean matchAntPathPatternStart​(@Nonnull
                                                        java.lang.String[] patDirs,
                                                        @Nonnull
                                                        java.lang.String[] tokenizedFileName,
                                                        boolean isCaseSensitive)
      • separatorPatternStartSlashMismatch

        private static boolean separatorPatternStartSlashMismatch​(@Nonnull
                                                                  MatchPattern matchPattern,
                                                                  @Nonnull
                                                                  java.lang.String str,
                                                                  @Nonnull
                                                                  java.lang.String separator)
      • separatorPatternStartSlashMismatch

        private static boolean separatorPatternStartSlashMismatch​(java.lang.String pattern,
                                                                  java.lang.String str,
                                                                  java.lang.String separator)
      • matchAntPathPattern

        static boolean matchAntPathPattern​(java.lang.String[] patDirs,
                                           java.lang.String[] strDirs,
                                           boolean isCaseSensitive)
      • isRegexPrefixedPattern

        static boolean isRegexPrefixedPattern​(java.lang.String pattern)
      • isAntPrefixedPattern

        static boolean isAntPrefixedPattern​(java.lang.String pattern)
      • matchAntPathPattern

        static boolean matchAntPathPattern​(@Nonnull
                                           MatchPattern matchPattern,
                                           @Nonnull
                                           java.lang.String str,
                                           @Nonnull
                                           java.lang.String separator,
                                           boolean isCaseSensitive)