Class ConfigurationBuilder

  • All Implemented Interfaces:
    Configuration

    public class ConfigurationBuilder
    extends java.lang.Object
    implements Configuration
    a fluent builder for Configuration, to be used for constructing a Reflections instance

    usage:

          new Reflections(
              new ConfigurationBuilder()
                  .filterInputsBy(new FilterBuilder().include("your project's common package prefix here..."))
                  .setUrls(ClasspathHelper.forClassLoader())
                  .setScanners(new SubTypesScanner(), new TypeAnnotationsScanner().filterResultsBy(myClassAnnotationsFilter)));
     

    executorService is used optionally used for parallel scanning. if value is null then scanning is done in a simple for loop

    defaults: accept all for inputsFilter, executorService is null, serializer is XmlSerializer

    • Field Detail

      • scanners

        private java.util.Set<Scanner> scanners
      • urls

        private java.util.Set<java.net.URL> urls
      • inputsFilter

        private java.util.function.Predicate<java.lang.String> inputsFilter
      • executorService

        private java.util.concurrent.ExecutorService executorService
      • classLoaders

        private java.lang.ClassLoader[] classLoaders
      • expandSuperTypes

        private boolean expandSuperTypes
    • Constructor Detail

      • ConfigurationBuilder

        public ConfigurationBuilder()
    • Method Detail

      • build

        public static ConfigurationBuilder build​(java.lang.Object... params)
        constructs a ConfigurationBuilder using the given parameters, in a non statically typed way. that is, each element in params is guessed by it's type and populated into the configuration. an input FilterBuilder will be set according to given packages.

        use any parameter type in any order. this constructor uses instanceof on each param and instantiate a ConfigurationBuilder appropriately.

      • getScanners

        public java.util.Set<Scanner> getScanners()
        Description copied from interface: Configuration
        the scanner instances used for scanning different metadata
        Specified by:
        getScanners in interface Configuration
      • setScanners

        public ConfigurationBuilder setScanners​(Scanner... scanners)
        set the scanners instances for scanning different metadata
      • addScanners

        public ConfigurationBuilder addScanners​(Scanner... scanners)
        set the scanners instances for scanning different metadata
      • getUrls

        public java.util.Set<java.net.URL> getUrls()
        Description copied from interface: Configuration
        the urls to be scanned
        Specified by:
        getUrls in interface Configuration
      • setUrls

        public ConfigurationBuilder setUrls​(java.util.Collection<java.net.URL> urls)
        set the urls to be scanned

        use ClasspathHelper convenient methods to get the relevant urls

      • addUrls

        public ConfigurationBuilder addUrls​(java.util.Collection<java.net.URL> urls)
        add urls to be scanned

        use ClasspathHelper convenient methods to get the relevant urls

      • getInputsFilter

        public java.util.function.Predicate<java.lang.String> getInputsFilter()
        Description copied from interface: Configuration
        get the fully qualified name filter used to filter types to be scanned
        Specified by:
        getInputsFilter in interface Configuration
      • setInputsFilter

        public void setInputsFilter​(java.util.function.Predicate<java.lang.String> inputsFilter)
        sets the input filter for all resources to be scanned.

        supply a Predicate or use the FilterBuilder

      • filterInputsBy

        public ConfigurationBuilder filterInputsBy​(java.util.function.Predicate<java.lang.String> inputsFilter)
        sets the input filter for all resources to be scanned.

        supply a Predicate or use the FilterBuilder

      • getExecutorService

        public java.util.concurrent.ExecutorService getExecutorService()
        Description copied from interface: Configuration
        executor service used to scan files. if null, scanning is done in a simple for loop
        Specified by:
        getExecutorService in interface Configuration
      • setExecutorService

        public ConfigurationBuilder setExecutorService​(java.util.concurrent.ExecutorService executorService)
        sets the executor service used for scanning.
      • useParallelExecutor

        public ConfigurationBuilder useParallelExecutor()
        sets the executor service used for scanning to ThreadPoolExecutor with core size as Runtime.availableProcessors()

        default is ThreadPoolExecutor with a single core

      • useParallelExecutor

        public ConfigurationBuilder useParallelExecutor​(int availableProcessors)
        sets the executor service used for scanning to ThreadPoolExecutor with core size as the given availableProcessors parameter. the executor service spawns daemon threads by default.

        default is ThreadPoolExecutor with a single core

      • getClassLoaders

        public java.lang.ClassLoader[] getClassLoaders()
        get class loader, might be used for scanning or resolving methods/fields
        Specified by:
        getClassLoaders in interface Configuration
      • setClassLoaders

        public void setClassLoaders​(java.lang.ClassLoader[] classLoaders)
        set class loader, might be used for resolving methods/fields
      • addClassLoader

        public ConfigurationBuilder addClassLoader​(java.lang.ClassLoader classLoader)
        add class loader, might be used for resolving methods/fields
      • addClassLoaders

        public ConfigurationBuilder addClassLoaders​(java.lang.ClassLoader... classLoaders)
        add class loader, might be used for resolving methods/fields
      • addClassLoaders

        public ConfigurationBuilder addClassLoaders​(java.util.Collection<java.lang.ClassLoader> classLoaders)
        add class loader, might be used for resolving methods/fields