Class ClasspathOrder


  • public class ClasspathOrder
    extends java.lang.Object
    A class to find the unique ordered classpath elements.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ClasspathOrder.ClasspathEntry
      A classpath element and the ClassLoader it was obtained from.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addClasspathEntries​(java.util.List<java.lang.Object> overrideClasspath, java.lang.ClassLoader classLoader, ScanSpec scanSpec, LogNode log)
      Add classpath entries, separated by the system path separator character.
      boolean addClasspathEntry​(java.lang.Object pathElement, java.lang.ClassLoader classLoader, ScanSpec scanSpec, LogNode log)
      Add a classpath element relative to a base file.
      private boolean addClasspathEntry​(java.lang.Object pathElement, java.lang.String pathElementStr, java.lang.ClassLoader classLoader, ScanSpec scanSpec)
      Add a classpath entry.
      boolean addClasspathEntryObject​(java.lang.Object pathObject, java.lang.ClassLoader classLoader, ScanSpec scanSpec, LogNode log)
      Add classpath entries from an object obtained from reflection.
      boolean addClasspathPathStr​(java.lang.String pathStr, java.lang.ClassLoader classLoader, ScanSpec scanSpec, LogNode log)
      Add classpath entries, separated by the system path separator character.
      (package private) boolean addSystemClasspathEntry​(java.lang.String pathEntry, java.lang.ClassLoader classLoader)
      Add a system classpath entry.
      private boolean filter​(java.net.URL classpathElementURL, java.lang.String classpathElementPath)
      Test to see if a classpath element has been filtered out by the user.
      java.util.Set<java.lang.String> getClasspathEntryUniqueResolvedPaths()
      Get the unique classpath entry strings.
      java.util.List<ClasspathOrder.ClasspathEntry> getOrder()
      Get the order of classpath elements, uniquified and in order.
      • Methods inherited from class java.lang.Object

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

      • scanSpec

        private final ScanSpec scanSpec
        The scan spec.
      • classpathEntryUniqueResolvedPaths

        private final java.util.Set<java.lang.String> classpathEntryUniqueResolvedPaths
        Unique classpath entries.
      • AUTOMATIC_PACKAGE_ROOT_SUFFIXES

        private static final java.util.List<java.lang.String> AUTOMATIC_PACKAGE_ROOT_SUFFIXES
        Suffixes for automatic package roots, e.g. "!/BOOT-INF/classes".
      • schemeMatcher

        private static final java.util.regex.Pattern schemeMatcher
        Match URL schemes (must consist of at least two chars, otherwise this is Windows drive letter).
    • Constructor Detail

      • ClasspathOrder

        ClasspathOrder​(ScanSpec scanSpec,
                       ReflectionUtils reflectionUtils)
        Constructor.
        Parameters:
        scanSpec - the scan spec
    • Method Detail

      • getOrder

        public java.util.List<ClasspathOrder.ClasspathEntry> getOrder()
        Get the order of classpath elements, uniquified and in order.
        Returns:
        the classpath order.
      • getClasspathEntryUniqueResolvedPaths

        public java.util.Set<java.lang.String> getClasspathEntryUniqueResolvedPaths()
        Get the unique classpath entry strings.
        Returns:
        the classpath entry strings.
      • filter

        private boolean filter​(java.net.URL classpathElementURL,
                               java.lang.String classpathElementPath)
        Test to see if a classpath element has been filtered out by the user.
        Parameters:
        classpathElementURL - the classpath element URL
        classpathElementPath - the classpath element path
        Returns:
        true, if not filtered out
      • addSystemClasspathEntry

        boolean addSystemClasspathEntry​(java.lang.String pathEntry,
                                        java.lang.ClassLoader classLoader)
        Add a system classpath entry.
        Parameters:
        pathEntry - the system classpath entry -- the path string should already have been run through FastPathResolver.resolve(FileUtils.currDirPath(), path)
        classLoader - the classloader
        Returns:
        true, if added and unique
      • addClasspathEntry

        private boolean addClasspathEntry​(java.lang.Object pathElement,
                                          java.lang.String pathElementStr,
                                          java.lang.ClassLoader classLoader,
                                          ScanSpec scanSpec)
        Add a classpath entry.
        Parameters:
        pathElement - the String path, File, Path, URL or URI of the classpath element.
        pathElementStr - the path element in string format
        classLoader - the classloader
        scanSpec - the scan spec
        Returns:
        true, if added and unique
      • addClasspathEntry

        public boolean addClasspathEntry​(java.lang.Object pathElement,
                                         java.lang.ClassLoader classLoader,
                                         ScanSpec scanSpec,
                                         LogNode log)
        Add a classpath element relative to a base file. May be called by a ClassLoaderHandler to add classpath elements that it knows about. ClassLoaders will be called in order.
        Parameters:
        pathElement - the String path, URL or URI of the classpath element, or some object whose Object.toString() method can be called to obtain the classpath element.
        classLoader - the ClassLoader that this classpath element was obtained from.
        scanSpec - the scan spec
        log - the LogNode instance to use if logging in verbose mode.
        Returns:
        true (and add the classpath element) if pathElement is not null, empty, nonexistent, or filtered out by user-specified criteria, otherwise return false.
      • addClasspathEntries

        public boolean addClasspathEntries​(java.util.List<java.lang.Object> overrideClasspath,
                                           java.lang.ClassLoader classLoader,
                                           ScanSpec scanSpec,
                                           LogNode log)
        Add classpath entries, separated by the system path separator character.
        Parameters:
        overrideClasspath - a list of delimited path String, URL, URI or File objects.
        classLoader - the ClassLoader that this classpath was obtained from.
        scanSpec - the scan spec
        log - the LogNode instance to use if logging in verbose mode.
        Returns:
        true (and add the classpath element) if pathElement is not null or empty, otherwise return false.
      • addClasspathPathStr

        public boolean addClasspathPathStr​(java.lang.String pathStr,
                                           java.lang.ClassLoader classLoader,
                                           ScanSpec scanSpec,
                                           LogNode log)
        Add classpath entries, separated by the system path separator character.
        Parameters:
        pathStr - the delimited string of URLs or paths of the classpath.
        classLoader - the ClassLoader that this classpath was obtained from.
        scanSpec - the scan spec
        log - the LogNode instance to use if logging in verbose mode.
        Returns:
        true (and add the classpath element) if pathElement is not null or empty, otherwise return false.
      • addClasspathEntryObject

        public boolean addClasspathEntryObject​(java.lang.Object pathObject,
                                               java.lang.ClassLoader classLoader,
                                               ScanSpec scanSpec,
                                               LogNode log)
        Add classpath entries from an object obtained from reflection. The object may be a URL, a URI, a File, a Path or a String (containing a single classpath element path, or several paths separated with File.pathSeparator), a List or other Iterable, or an array object. In the case of Iterables and arrays, the elements may be any type whose toString() method returns a path or URL string (including the URL and Path types).
        Parameters:
        pathObject - the object containing a classpath string or strings.
        classLoader - the ClassLoader that this classpath was obtained from.
        scanSpec - the scan spec
        log - the LogNode instance to use if logging in verbose mode.
        Returns:
        true (and add the classpath element) if pathEl)ement is not null or empty, otherwise return false.