Class ClassLoaderResourceAccessor

All Implemented Interfaces:
AutoCloseable, Cloneable, ExtensibleObject, ResourceAccessor
Direct Known Subclasses:
MavenResourceAccessor, OSGiResourceAccessor

public class ClassLoaderResourceAccessor extends AbstractResourceAccessor
An implementation of DirectoryResourceAccessor that builds up the file roots based on the passed ClassLoader. If you are using a ClassLoader that isn't based on local files, you will need to use a different ResourceAccessor implementation.
See Also:
  • Field Details

  • Constructor Details

    • ClassLoaderResourceAccessor

      public ClassLoaderResourceAccessor()
    • ClassLoaderResourceAccessor

      public ClassLoaderResourceAccessor(ClassLoader classLoader)
  • Method Details

    • describeLocations

      public List<String> describeLocations()
      Description copied from interface: ResourceAccessor
      Returns a description of the places this classloader will look for paths. Used in error messages and other troubleshooting cases.
    • close

      public void close() throws Exception
      Throws:
      Exception
    • init

      protected void init()
      Performs the configuration of this resourceAccessor. Not done in the constructor for performance reasons, but can be called at the beginning of every public method.
    • configureAdditionalResourceAccessors

      protected void configureAdditionalResourceAccessors(ClassLoader classLoader)
      The classloader search logic in search(String, boolean) does not handle jar files well. This method is called by that method to configure an internal ResourceAccessor with paths to search.
    • search

      public List<Resource> search(String path, ResourceAccessor.SearchOptions searchOptions) throws IOException
      Description copied from interface: ResourceAccessor
      Returns the path to all resources contained in the given path that match the searchOptions criteria. Multiple resources may be returned with the same path, but only if they are actually unique files. Order is important to pay attention to, they should be returned in a user-expected manner based on this resource accessor.

      Should return an empty list if:
      • Path does not exist or maxDepth less or equals than zero
      Should throw an exception if:
      • Path is null
      • Path is not a "directory"
      • Path exists but cannot be read from
      Parameters:
      path - The path to lookup resources in.
      searchOptions - A set of criteria for how resources should be found/filtered
      Returns:
      empty set if nothing was found
      Throws:
      IOException - if there is an error searching the system.
    • search

      public List<Resource> search(String path, boolean recursive) throws IOException
      Description copied from interface: ResourceAccessor
      Returns the path to all resources contained in the given path. Multiple resources may be returned with the same path, but only if they are actually unique files. Order is important to pay attention to, they should be returned in a user-expected manner based on this resource accessor.

      Should return an empty list if:
      • Path does not exist
      Should throw an exception if:
      • Path is null
      • Path is not a "directory"
      • Path exists but cannot be read from
      Parameters:
      path - The path to lookup resources in.
      recursive - Set to true and will return paths to contents in subdirectories as well.
      Returns:
      empty set if nothing was found
      Throws:
      IOException - if there is an error searching the system.
    • getAll

      public List<Resource> getAll(String path) throws IOException
      Description copied from interface: ResourceAccessor
      Returns all Resources at the given path. For many resource accessors (such as a file system), only one resource can exist at a given spot, but some accessors (such as CompositeResourceAccessor or ClassLoaderResourceAccessor) can have multiple resources for a single path.

      If the resourceAccessor returns multiple values, the returned List should be considered sorted for that resource accessor. For example, ClassLoaderResourceAccessor returns them in order based on the configured classloader. Order is important to pay attention to, because users may set GlobalConfiguration.DUPLICATE_FILE_MODE to pick the "best" file which is defined as "the first file from this function".

      Returns:
      null if no resources match the path
      Throws:
      IOException - if there is an unexpected error determining what is at the path