Class LocalModuleFinder

  • All Implemented Interfaces:
    ModuleFinder

    public final class LocalModuleFinder
    extends java.lang.Object
    implements ModuleFinder
    A module finder which locates module specifications which are stored in a local module repository on the filesystem, which uses module.xml descriptors.
    • Field Detail

      • NO_FILES

        private static final java.io.File[] NO_FILES
      • repoRoots

        private final java.io.File[] repoRoots
      • accessControlContext

        private final java.security.AccessControlContext accessControlContext
    • Constructor Detail

      • LocalModuleFinder

        private LocalModuleFinder​(java.io.File[] repoRoots,
                                  PathFilter pathFilter,
                                  boolean cloneRoots)
      • LocalModuleFinder

        public LocalModuleFinder​(java.io.File[] repoRoots,
                                 PathFilter pathFilter)
        Construct a new instance.
        Parameters:
        repoRoots - the repository roots to use
        pathFilter - the path filter to use
      • LocalModuleFinder

        public LocalModuleFinder​(java.io.File[] repoRoots)
        Construct a new instance.
        Parameters:
        repoRoots - the repository roots to use
      • LocalModuleFinder

        public LocalModuleFinder()
        Construct a new instance, using the module.path system property or the JAVA_MODULEPATH environment variable to get the list of module repository roots.

        This is equivalent to a call to LocalModuleFinder(true).

      • LocalModuleFinder

        public LocalModuleFinder​(boolean supportLayersAndAddOns)
        Construct a new instance, using the module.path system property or the JAVA_MODULEPATH environment variable to get the list of module repository roots.
        Parameters:
        supportLayersAndAddOns - true if the identified module repository roots should be checked for an internal structure of child "layer" and "add-on" directories that may also be treated as module roots lower in precedence than the parent root. Any "layers" subdirectories whose names are specified in a layers.conf file found in the module repository root will be added in the precedence of order specified in the layers.conf file; all "add-on" subdirectories will be added at a lower precedence than all "layers" and with no guaranteed precedence order between them. If false no check for "layer" and "add-on" directories will be performed.
    • Method Detail

      • getRepoRoots

        static java.io.File[] getRepoRoots​(boolean supportLayersAndAddOns)
      • getModulePathFiles

        private static java.io.File[] getModulePathFiles()
      • getFiles

        private static java.io.File[] getFiles​(java.lang.String modulePath,
                                               int stringIdx,
                                               int arrayIdx)
      • toPathString

        private static java.lang.String toPathString​(ModuleIdentifier moduleIdentifier)
      • parseModuleXmlFile

        public static ModuleSpec parseModuleXmlFile​(ModuleIdentifier identifier,
                                                    ModuleLoader delegateLoader,
                                                    java.io.File... roots)
                                             throws java.io.IOException,
                                                    ModuleLoadException
        Parse a module.xml file and return the corresponding module specification.
        Parameters:
        identifier - the identifier to load
        delegateLoader - the delegate module loader to use for module specifications
        roots - the repository root paths to search
        Returns:
        the module specification
        Throws:
        java.io.IOException - if reading the module file failed
        ModuleLoadException - if creating the module specification failed (e.g. due to a parse error)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object