Class ModuleRef

java.lang.Object
io.github.classgraph.ModuleRef
All Implemented Interfaces:
Comparable<ModuleRef>

public class ModuleRef extends Object implements Comparable<ModuleRef>
A ModuleReference proxy, written using reflection to preserve backwards compatibility with JDK 7 and 8.
  • Field Details

    • name

      private final String name
      The name of the module.
    • reference

      private final Object reference
      The ModuleReference for the module.
    • layer

      private final Object layer
      The ModuleLayer for the module.
    • descriptor

      private final Object descriptor
      The ModuleDescriptor for the module.
    • packages

      private final List<String> packages
      The packages in the module.
    • location

      private final URI location
      The location URI for the module (may be null).
    • locationStr

      private String locationStr
      The location URI for the module, as a cached string (may be null).
    • locationFile

      private File locationFile
      A file formed from the location URI. The file will not exist if the location URI is a "jrt:" URI.
    • rawVersion

      private String rawVersion
      The raw module version, or null if none.
    • classLoader

      private final ClassLoader classLoader
      The ClassLoader that loads classes in the module. May be null, to represent the bootstrap classloader.
    • reflectionUtils

      ReflectionUtils reflectionUtils
  • Constructor Details

    • ModuleRef

      public ModuleRef(Object moduleReference, Object moduleLayer, ReflectionUtils reflectionUtils)
      Constructor.
      Parameters:
      moduleReference - The module reference, of JPMS type ModuleReference.
      moduleLayer - The module layer, of JPMS type ModuleLayer
      reflectionUtils - The ReflectionUtils instance.
  • Method Details

    • getName

      public String getName()
      Get the module name, i.e. getReference().descriptor().name().
      Returns:
      The module name, i.e. getReference().descriptor().name(). Potentially null or empty.
    • getReference

      public Object getReference()
      Get the module reference (of JPMS type ModuleReference).
      Returns:
      The module reference (of JPMS type ModuleReference).
    • getLayer

      public Object getLayer()
      Get the module layer (of JPMS type ModuleLayer).
      Returns:
      The module layer (of JPMS type ModuleLayer).
    • getDescriptor

      public Object getDescriptor()
      Get the module descriptor, i.e. getReference().descriptor() (of JPMS type ModuleDescriptor).
      Returns:
      The module descriptor, i.e. getReference().descriptor() (of JPMS type ModuleDescriptor).
    • getPackages

      public List<String> getPackages()
      Get a list of packages in the module. (Does not include non-package directories.)
      Returns:
      The list of packages in the module. (Does not include non-package directories.)
    • getLocation

      public URI getLocation()
      Get the module location, i.e. getReference().location(). Returns null for modules that do not have a location.
      Returns:
      The module location, i.e. getReference().location(). Returns null for modules that do not have a location.
    • getLocationStr

      public String getLocationStr()
      Get the module location as a string, i.e. getReference().location().toString(). Returns null for modules that do not have a location.
      Returns:
      The module location as a string, i.e. getReference().location().toString(). Returns null for modules that do not have a location.
    • getLocationFile

      public File getLocationFile()
      Get the module location as a File, i.e. new File(getReference().location()). Returns null for modules that do not have a location, or for system (or jlinked) modules, which have "jrt:" location URIs that include only the module name and not the module jar location.
      Returns:
      The module location as a File, i.e. new File(getReference().location()). Returns null for modules that do not have a location, or for modules whole location is a "jrt:" URI.
    • getRawVersion

      public String getRawVersion()
      Get the raw version string of the module, or null if the module did not provide one.
      Returns:
      The raw version of the module, obtained by ModuleReference#rawVersion().orElse(null).
    • isSystemModule

      public boolean isSystemModule()
      Checks if this module is a system module.
      Returns:
      true if this module is a system module.
    • getClassLoader

      public ClassLoader getClassLoader()
      Get the class loader for the module.
      Returns:
      The classloader for the module, i.e. moduleLayer.findLoader(getReference().descriptor().name()).
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • compareTo

      public int compareTo(ModuleRef o)
      Specified by:
      compareTo in interface Comparable<ModuleRef>
    • open

      public ModuleReaderProxy open() throws IOException
      Open the module, returning a ModuleReaderProxy.
      Returns:
      A ModuleReaderProxy for the module.
      Throws:
      IOException - If the module cannot be opened.