default IModuleReference[] getRequiredModules() throws JavaModelException { return getModuleInfo().requires(); } default IPackageExport[] getExportedPackages() throws JavaModelException {
public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof IModule)) return false; IModule mod = (IModule) o; if (!CharOperation.equals(this.name, mod.name())) return false; return Arrays.equals(this.requires, mod.requires()); } @Override
@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof IModule)) return false; IModule mod = (IModule) o; if (!CharOperation.equals(this.name, mod.name())) return false; return Arrays.equals(this.requires, mod.requires()); } @Override
@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof IModule)) return false; IModule mod = (IModule) o; if (!CharOperation.equals(this.name, mod.name())) return false; return Arrays.equals(this.requires, mod.requires()); } @Override
public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof IModule)) return false; IModule mod = (IModule) o; if (!CharOperation.equals(this.name, mod.name())) return false; return Arrays.equals(this.requires, mod.requires()); } @Override
void addTransitive(String moduleName) { IModule module = getModule(moduleName); if (module != null && this.resultModuleSet.add(module)) { for (IModuleReference reqRef : module.requires()) addTransitive(String.valueOf(reqRef.name())); } } private IModule getModule(String moduleName) {
private void addRequired(String mod, Set<String> allModules, Function<String,IModule> getModule) { IModule iMod = getModule(mod.toCharArray()); if (iMod != null) { for (IModuleReference requiredRef : iMod.requires()) { IModule reqMod = getModule.apply(new String(requiredRef.name())); if (reqMod != null) { String reqModName = String.valueOf(reqMod.name()); if (allModules.add(reqModName)) addRequired(reqModName, allModules, getModule); } } } } protected <T> List<String> allModules(Iterable<T> allSystemModules, Function<T,String> getModuleName, Function<T,IModule> getModule) {
void addTransitive(String moduleName) { IModule module = getModule(moduleName); if (module != null && this.resultModuleSet.add(module)) { for (IModuleReference reqRef : module.requires()) addTransitive(String.valueOf(reqRef.name())); } } private IModule getModule(String moduleName) {
private void addRequired(String mod, Set<String> allModules, Function<String,IModule> getModule) { IModule iMod = getModule(mod.toCharArray()); if (iMod != null) { for (IModuleReference requiredRef : iMod.requires()) { IModule reqMod = getModule.apply(new String(requiredRef.name())); if (reqMod != null) { String reqModName = String.valueOf(reqMod.name()); if (allModules.add(reqModName)) addRequired(reqModName, allModules, getModule); } } } } protected <T> List<String> allModules(Iterable<T> allSystemModules, Function<T,String> getModuleName, Function<T,IModule> getModule) {
private void addRequired(String mod, Set<String> allModules) { IModule iMod = getModule(mod.toCharArray()); for (IModuleReference requiredRef : iMod.requires()) { IModule reqMod = getModule(requiredRef.name()); if (reqMod != null) { String reqModName = String.valueOf(reqMod.name()); if (allModules.add(reqModName)) addRequired(reqModName, allModules); } } } @Override
private void addRequired(String mod, Set<String> allModules) { IModule iMod = getModule(mod.toCharArray()); for (IModuleReference requiredRef : iMod.requires()) { IModule reqMod = getModule(requiredRef.name()); if (reqMod != null) { String reqModName = String.valueOf(reqMod.name()); if (allModules.add(reqModName)) addRequired(reqModName, allModules); } } } @Override
/** * Returns the names of the modules required by the module-info.class in the jar. If the file is not jar or a jar * that has no module-info.class is present, the empty set is returned. * * @param file the jar to examine * @return set of module names. * @since 3.14 */ public static Set<String> getRequiredModulesFromJar(File file) { if (!file.isFile()) { return Collections.emptySet(); } try (ZipFile zipFile = new ZipFile(file)) { IModule module = null; ClassFileReader reader = ClassFileReader.read(zipFile, IModule.MODULE_INFO_CLASS); if (reader != null) { module = reader.getModuleDeclaration(); if (module != null) { IModuleReference[] moduleRefs = module.requires(); if (moduleRefs != null) { return Stream.of(moduleRefs).map(m -> new String(m.name())) .collect(Collectors.toCollection(LinkedHashSet::new)); } } } } catch (ClassFormatException | IOException ex) { Util.log(ex); } return Collections.emptySet(); }
void cachePartsFrom(IModule module) { if (module.isOpen()) this.modifiers |= ClassFileConstants.ACC_OPEN; IModuleReference[] requiresReferences = module.requires(); this.requires = new ModuleBinding[requiresReferences.length]; this.requiresTransitive = new ModuleBinding[requiresReferences.length]; int count = 0; int transitiveCount = 0; for (int i = 0; i < requiresReferences.length; i++) { ModuleBinding requiredModule = this.environment.getModule(requiresReferences[i].name()); if (requiredModule != null) { this.requires[count++] = requiredModule; if (requiresReferences[i].isTransitive()) this.requiresTransitive[transitiveCount++] = requiredModule; } // TODO(SHMOD): handle null case } if (count < this.requiresTransitive.length) System.arraycopy(this.requires, 0, this.requires = new ModuleBinding[count], 0, count); if (transitiveCount < this.requiresTransitive.length) System.arraycopy(this.requiresTransitive, 0, this.requiresTransitive = new ModuleBinding[transitiveCount], 0, transitiveCount); this.unresolvedExports = module.exports(); this.unresolvedOpens = module.opens(); this.unresolvedUses = module.uses(); this.unresolvedProvides = module.provides(); }
private void indexModule(IModule module) { addModuleDeclaration(module.name()); IModuleReference[] requiredModules = module.requires(); if (requiredModules != null) { for (IModuleReference req : requiredModules) { addModuleReference(req.name()); } } indexPackageVisibilityDirective(module.exports()); indexPackageVisibilityDirective(module.opens()); char[][] refUsed = module.uses(); if (refUsed != null) { for (char[] ref : refUsed) { indexTypeReference(ref); } } IService[] services = module.provides(); if (services != null) { for (IService service : services) { indexTypeReference(service.name()); indexTypeReferences(service.with()); } } } private void indexPackageVisibilityDirective(IPackageExport[] exportedPackages) {
private void indexModule(IModule module) { addModuleDeclaration(module.name()); IModuleReference[] requiredModules = module.requires(); if (requiredModules != null) { for (IModuleReference req : requiredModules) { addModuleReference(req.name()); } } indexPackageVisibilityDirective(module.exports()); indexPackageVisibilityDirective(module.opens()); char[][] refUsed = module.uses(); if (refUsed != null) { for (char[] ref : refUsed) { indexTypeReference(ref); } } IService[] services = module.provides(); if (services != null) { for (IService service : services) { indexTypeReference(service.name()); indexTypeReferences(service.with()); } } } private void indexPackageVisibilityDirective(IPackageExport[] exportedPackages) {