< prev index next >

src/java.base/share/classes/jdk/internal/loader/Loader.java

Print this page

        

*** 58,67 **** --- 58,68 ---- import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; import jdk.internal.misc.SharedSecrets; + import jdk.internal.module.Resources; /** * A class loader that loads classes and resources from a collection of * modules, or from a single module where the class loader is a member
*** 354,403 **** return url; } @Override public URL findResource(String name) { ! URL url = null; ! String pn = ResourceHelper.getPackageName(name); LoadedModule module = localPackageToModule.get(pn); if (module != null) { - if (name.endsWith(".class") || isOpen(module.mref(), pn)) { try { ! url = findResource(module.name(), name); } catch (IOException ioe) { // ignore } ! } } else { for (ModuleReference mref : nameToModule.values()) { try { ! url = findResource(mref.descriptor().name(), name); ! if (url != null) ! break; } catch (IOException ioe) { // ignore } } } ! return url; } @Override public Enumeration<URL> findResources(String name) throws IOException { List<URL> urls = new ArrayList<>(); ! String pn = ResourceHelper.getPackageName(name); LoadedModule module = localPackageToModule.get(pn); if (module != null) { - if (name.endsWith(".class") || isOpen(module.mref(), pn)) { try { URL url = findResource(module.name(), name); ! if (url != null) urls.add(url); } catch (IOException ioe) { // ignore } - } } else { for (ModuleReference mref : nameToModule.values()) { try { URL url = findResource(mref.descriptor().name(), name); if (url != null) --- 355,411 ---- return url; } @Override public URL findResource(String name) { ! String pn = Resources.toPackageName(name); LoadedModule module = localPackageToModule.get(pn); + if (module != null) { try { ! URL url = findResource(module.name(), name); ! if (url != null ! && (name.endsWith(".class") ! || url.toString().endsWith("/") ! || isOpen(module.mref(), pn))) { ! return url; ! } } catch (IOException ioe) { // ignore } ! } else { for (ModuleReference mref : nameToModule.values()) { try { ! URL url = findResource(mref.descriptor().name(), name); ! if (url != null) return url; } catch (IOException ioe) { // ignore } } } ! ! return null; } @Override public Enumeration<URL> findResources(String name) throws IOException { List<URL> urls = new ArrayList<>(); ! String pn = Resources.toPackageName(name); LoadedModule module = localPackageToModule.get(pn); if (module != null) { try { URL url = findResource(module.name(), name); ! if (url != null ! && (name.endsWith(".class") ! || url.toString().endsWith("/") ! || isOpen(module.mref(), pn))) { urls.add(url); + } } catch (IOException ioe) { // ignore } } else { for (ModuleReference mref : nameToModule.values()) { try { URL url = findResource(mref.descriptor().name(), name); if (url != null)
*** 641,651 **** * packages. This will be replaced once the ModuleDescriptor.Opens * API is updated. */ private boolean isOpen(ModuleReference mref, String pn) { ModuleDescriptor descriptor = mref.descriptor(); ! if (descriptor.isOpen()) return true; for (ModuleDescriptor.Opens opens : descriptor.opens()) { String source = opens.source(); if (!opens.isQualified() && source.equals(pn)) { return true; --- 649,659 ---- * packages. This will be replaced once the ModuleDescriptor.Opens * API is updated. */ private boolean isOpen(ModuleReference mref, String pn) { ModuleDescriptor descriptor = mref.descriptor(); ! if (descriptor.isOpen() || descriptor.isAutomatic()) return true; for (ModuleDescriptor.Opens opens : descriptor.opens()) { String source = opens.source(); if (!opens.isQualified() && source.equals(pn)) { return true;
< prev index next >