Interface PackageScanClassResolver

All Superinterfaces:
AutoCloseable, Service, StaticService

public interface PackageScanClassResolver extends StaticService
A resolver that can find classes based on package scanning.
See Also:
  • Method Details

    • getClassLoaders

      Set<ClassLoader> getClassLoaders()
      Gets the ClassLoader instances that should be used when scanning for classes.

      This implementation will return a new unmodifiable set containing the classloaders. Use the addClassLoader(ClassLoader) method if you want to add new classloaders to the class loaders list.

      Returns:
      the class loaders to use
    • addClassLoader

      void addClassLoader(ClassLoader classLoader)
      Adds the class loader to the existing loaders
      Parameters:
      classLoader - the loader to add
    • findAnnotated

      Set<Class<?>> findAnnotated(Class<? extends Annotation> annotation, String... packageNames)
      Attempts to discover classes that are annotated with to the annotation.
      Parameters:
      annotation - the annotation that should be present on matching classes
      packageNames - one or more package names to scan (including subpackages) for classes
      Returns:
      the classes found, returns an empty set if none found
    • findAnnotated

      Set<Class<?>> findAnnotated(Set<Class<? extends Annotation>> annotations, String... packageNames)
      Attempts to discover classes that are annotated with to the annotation.
      Parameters:
      annotations - the annotations that should be present (any of them) on matching classes
      packageNames - one or more package names to scan (including subpackages) for classes
      Returns:
      the classes found, returns an empty set if none found
    • findImplementations

      Set<Class<?>> findImplementations(Class<?> parent, String... packageNames)
      Attempts to discover classes that are assignable to the type provided (exclude abstract classes). In the case that an interface is provided this method will collect implementations. In the case of a non-interface class, subclasses will be collected.
      Parameters:
      parent - the class of interface to find subclasses or implementations of
      packageNames - one or more package names to scan (including subpackages) for classes
      Returns:
      the classes found, returns an empty set if none found
    • findByFilter

      Set<Class<?>> findByFilter(PackageScanFilter filter, String... packageNames)
      Attempts to discover classes filter by the provided filter
      Parameters:
      filter - filter to filter desired classes.
      packageNames - one or more package names to scan (including subpackages) for classes
      Returns:
      the classes found, returns an empty set if none found
    • addFilter

      void addFilter(PackageScanFilter filter)
      Add a filter that will be applied to all scan operations
      Parameters:
      filter - filter to filter desired classes in all scan operations
    • removeFilter

      void removeFilter(PackageScanFilter filter)
      Removes the filter
      Parameters:
      filter - filter to filter desired classes in all scan operations
    • setAcceptableSchemes

      void setAcceptableSchemes(String schemes)
      To specify a set of accepted schemas to use for loading resources as URL connections (besides http and https schemas)
    • clearCache

      void clearCache()
      Clears and frees the internal cache.