java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.batch.ClasspathLocation
org.aspectj.org.eclipse.jdt.internal.compiler.batch.ClasspathJrt
All Implemented Interfaces:
FileSystem.Classpath, IModulePathEntry, IMultiModuleEntry, SuffixConstants
Direct Known Subclasses:
ClasspathJep247

public class ClasspathJrt extends ClasspathLocation implements IMultiModuleEntry
  • Field Details

    • file

      public File file
    • annotationZipFile

      protected ZipFile annotationZipFile
    • closeZipFileAtEnd

      protected boolean closeZipFileAtEnd
    • ModulesCache

      protected static HashMap<String,​Map<String,​IModule>> ModulesCache
    • moduleNamesCache

      public final Set<String> moduleNamesCache
    • annotationPaths

      protected List<String> annotationPaths
  • Constructor Details

    • ClasspathJrt

      public ClasspathJrt(File file, boolean closeZipFileAtEnd, AccessRuleSet accessRuleSet, String destinationPath)
  • Method Details

    • fetchLinkedJars

      public List fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter)
      Description copied from interface: FileSystem.Classpath
      Return a list of the jar file names defined in the Class-Path section of the jar file manifest if any, null else. Only ClasspathJar (and extending classes) instances may return a non-null result.
      Specified by:
      fetchLinkedJars in interface FileSystem.Classpath
      Parameters:
      problemReporter - problem reporter with which potential misconfiguration issues are raised
      Returns:
      a list of the jar file names defined in the Class-Path section of the jar file manifest if any
    • getModulesDeclaringPackage

      public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName)
      Description copied from interface: IModulePathEntry
      Answer the relevant modules that declare the given package. If moduleName is ModuleBinding.ANY then all packages are relevant, if moduleName is ModuleBinding.UNNAMED, then only packages in the unnamed module are relevant, otherwise consider only packages in the module identified by moduleName.
      Specified by:
      getModulesDeclaringPackage in interface IModulePathEntry
    • hasCompilationUnit

      public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName)
      Description copied from interface: IModulePathEntry
      Answer whether the given package has any compilation unit (.java or .class) in the given module. For entries representing a single module, the module name should be checked before invoking this method.
      Specified by:
      hasCompilationUnit in interface IModulePathEntry
      Parameters:
      qualifiedPackageName - '/'-separated package name
      moduleName - if non-null only CUs attached to the given module should be considered
      Returns:
      true iff a .java or .class file could be found in the given module / package.
    • findClass

      public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName)
      Specified by:
      findClass in interface FileSystem.Classpath
    • findClass

      public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly)
      Specified by:
      findClass in interface FileSystem.Classpath
    • hasAnnotationFileFor

      public boolean hasAnnotationFileFor(String qualifiedTypeName)
      Description copied from interface: FileSystem.Classpath
      Can the current location provide an external annotation file for the given type?
      Specified by:
      hasAnnotationFileFor in interface FileSystem.Classpath
      Parameters:
      qualifiedTypeName - type name in qualified /-separated notation.
    • findTypeNames

      public char[][][] findTypeNames(String qualifiedPackageName, String moduleName)
      Specified by:
      findTypeNames in interface FileSystem.Classpath
    • addTypeName

      protected void addTypeName(ArrayList answers, String fileName, int last, char[] packageName)
    • initialize

      public void initialize() throws IOException
      Description copied from interface: FileSystem.Classpath
      Initialize the entry
      Specified by:
      initialize in interface FileSystem.Classpath
      Throws:
      IOException
    • loadModules

      public void loadModules()
    • getModuleNames

      public Collection<String> getModuleNames(Collection<String> limitModule, Function<String,​IModule> getModule)
      Specified by:
      getModuleNames in interface FileSystem.Classpath
      Overrides:
      getModuleNames in class ClasspathLocation
    • allModules

      protected <T> List<String> allModules(Iterable<T> allSystemModules, Function<T,​String> getModuleName, Function<T,​IModule> getModule)
      Overrides:
      allModules in class ClasspathLocation
    • reset

      public void reset()
      Description copied from interface: FileSystem.Classpath
      This method resets the environment. The resulting state is equivalent to a new name environment without creating a new object.
      Specified by:
      reset in interface FileSystem.Classpath
      Overrides:
      reset in class ClasspathLocation
    • toString

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

      public char[] normalizedPath()
      Description copied from interface: FileSystem.Classpath
      Return a normalized path for file based classpath entries. This is an absolute path in which file separators are transformed to the platform-agnostic '/', ending with a '/' for directories. This is an absolute path in which file separators are transformed to the platform-agnostic '/', deprived from the '.jar' (resp. '.zip') extension for jar (resp. zip) files.
      Specified by:
      normalizedPath in interface FileSystem.Classpath
      Returns:
      a normalized path for file based classpath entries
    • getPath

      public String getPath()
      Description copied from interface: FileSystem.Classpath
      Return the path for file based classpath entries. This is an absolute path ending with a file separator for directories, an absolute path including the '.jar' (resp. '.zip') extension for jar (resp. zip) files.
      Specified by:
      getPath in interface FileSystem.Classpath
      Overrides:
      getPath in class ClasspathLocation
      Returns:
      the path for file based classpath entries
    • getMode

      public int getMode()
      Overrides:
      getMode in class ClasspathLocation
    • hasModule

      public boolean hasModule()
      Specified by:
      hasModule in interface FileSystem.Classpath
    • getModule

      public IModule getModule(char[] moduleName)
      Description copied from interface: IMultiModuleEntry
      Get the module named name that this entry contributes to the module path
      Specified by:
      getModule in interface IModulePathEntry
      Specified by:
      getModule in interface IMultiModuleEntry
      Parameters:
      moduleName - - The name of the module to look up
      Returns:
      The module named name or null
    • servesModule

      public boolean servesModule(char[] moduleName)
      Description copied from interface: IModulePathEntry
      Indicates whether this entry knows the module named name and can answer queries regarding the module
      Specified by:
      servesModule in interface IModulePathEntry
      Parameters:
      moduleName - The name of the module
      Returns:
      True if this entry knows the module, false otherwise