Class ClasspathPattern

  • All Implemented Interfaces:
    java.lang.Iterable<java.lang.String>, java.util.Collection<java.lang.String>, java.util.Set<java.lang.String>

    public class ClasspathPattern
    extends java.util.AbstractSet<java.lang.String>
    Classpath classes list performs pattern matching of a class name against an internal array of classpath pattern entries. A class pattern is a string of one of the forms:
    • 'org.package.SomeClass' will match a specific class
    • 'org.package.' will match a specific package hierarchy
    • 'org.package.SomeClass$NestedClass ' will match a nested class exactly otherwise. Nested classes are matched by their containing class. (eg. org.example.MyClass matches org.example.MyClass$AnyNestedClass)
    • 'file:///some/location/' - A file system directory from which the class was loaded
    • 'file:///some/location.jar' - The URI of a jar file from which the class was loaded
    • 'jrt:/modulename' - A Java9 module name
    • Any of the above patterns preceded by '-' will exclude rather than include the match.
    When class is initialized from a classpath pattern string, entries in this string should be separated by ':' (semicolon) or ',' (comma).
    • Constructor Detail

      • ClasspathPattern

        public ClasspathPattern()
      • ClasspathPattern

        public ClasspathPattern​(java.lang.String[] patterns)
      • ClasspathPattern

        public ClasspathPattern​(java.lang.String pattern)
    • Method Detail

      • include

        public boolean include​(java.lang.String name)
      • include

        public boolean include​(java.lang.String... name)
      • exclude

        public boolean exclude​(java.lang.String name)
      • exclude

        public boolean exclude​(java.lang.String... name)
      • add

        public boolean add​(java.lang.String pattern)
        Specified by:
        add in interface java.util.Collection<java.lang.String>
        Specified by:
        add in interface java.util.Set<java.lang.String>
        Overrides:
        add in class java.util.AbstractCollection<java.lang.String>
      • add

        public boolean add​(java.lang.String... pattern)
      • remove

        public boolean remove​(java.lang.Object o)
        Specified by:
        remove in interface java.util.Collection<java.lang.String>
        Specified by:
        remove in interface java.util.Set<java.lang.String>
        Overrides:
        remove in class java.util.AbstractCollection<java.lang.String>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<java.lang.String>
        Specified by:
        clear in interface java.util.Set<java.lang.String>
        Overrides:
        clear in class java.util.AbstractCollection<java.lang.String>
      • iterator

        public java.util.Iterator<java.lang.String> iterator()
        Specified by:
        iterator in interface java.util.Collection<java.lang.String>
        Specified by:
        iterator in interface java.lang.Iterable<java.lang.String>
        Specified by:
        iterator in interface java.util.Set<java.lang.String>
        Specified by:
        iterator in class java.util.AbstractCollection<java.lang.String>
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<java.lang.String>
        Specified by:
        size in interface java.util.Set<java.lang.String>
        Specified by:
        size in class java.util.AbstractCollection<java.lang.String>
      • setAll

        private void setAll​(java.lang.String[] classes)
        Initialize the matcher by parsing each classpath pattern in an array
        Parameters:
        classes - array of classpath patterns
      • addAll

        private void addAll​(java.lang.String[] classes)
        Parameters:
        classes - array of classpath patterns
      • getPatterns

        public java.lang.String[] getPatterns()
        Returns:
        array of classpath patterns
      • match

        public boolean match​(java.lang.String name)
        Match the class name against the pattern
        Parameters:
        name - name of the class to match
        Returns:
        true if class matches the pattern
      • match

        public boolean match​(java.lang.Class<?> clazz)
        Match the class name against the pattern
        Parameters:
        clazz - A class to try to match
        Returns:
        true if class matches the pattern
      • match

        public boolean match​(java.lang.String name,
                             java.net.URL url)
      • combine

        static boolean combine​(IncludeExcludeSet<ClasspathPattern.Entry,​java.lang.String> names,
                               java.lang.String name,
                               IncludeExcludeSet<ClasspathPattern.Entry,​java.net.URI> locations,
                               java.util.function.Supplier<java.net.URI> location)
        Match a class against inclusions and exclusions by name and location. Name based checks are performed before location checks. For a class to match, it must not be excluded by either name or location, and must either be explicitly included, or for there to be no inclusions. In the case where the location of the class is null, it will match if it is included by name, or if there are no location exclusions.
        Parameters:
        names - configured inclusions and exclusions by name
        name - the name to check
        locations - configured inclusions and exclusions by location
        location - the location of the class (can be null)
        Returns:
        true if the class is not excluded but is included, or there are no inclusions. False otherwise.