Class ClasspathOrder

java.lang.Object
nonapi.io.github.classgraph.classpath.ClasspathOrder

public class ClasspathOrder extends Object
A class to find the unique ordered classpath elements.
  • Field Details

    • scanSpec

      private final ScanSpec scanSpec
      The scan spec.
    • reflectionUtils

      public ReflectionUtils reflectionUtils
    • classpathEntryUniqueResolvedPaths

      private final Set<String> classpathEntryUniqueResolvedPaths
      Unique classpath entries.
    • order

      private final List<ClasspathOrder.ClasspathEntry> order
      The classpath order. Keys are instances of String or URL.
    • AUTOMATIC_PACKAGE_ROOT_SUFFIXES

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

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

    • ClasspathOrder

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

    • getOrder

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

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

      private boolean filter(URL classpathElementURL, 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(String pathEntry, 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(Object pathElement, String pathElementStr, 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(Object pathElement, 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(List<Object> overrideClasspath, 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(String pathStr, 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(Object pathObject, 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.