< prev index next >

src/java.base/share/classes/java/lang/Module.java

Print this page

        

*** 124,134 **** this.loader = loader; this.descriptor = descriptor; // define module to VM ! boolean isOpen = descriptor.isOpen(); Version version = descriptor.version().orElse(null); String vs = Objects.toString(version, null); String loc = Objects.toString(uri, null); String[] packages = descriptor.packages().toArray(new String[0]); defineModule0(this, isOpen, vs, loc, packages); --- 124,134 ---- this.loader = loader; this.descriptor = descriptor; // define module to VM ! boolean isOpen = descriptor.isOpen() || descriptor.isAutomatic(); Version version = descriptor.version().orElse(null); String vs = Objects.toString(version, null); String loc = Objects.toString(uri, null); String[] packages = descriptor.packages().toArray(new String[0]); defineModule0(this, isOpen, vs, loc, packages);
*** 1040,1052 **** // update VM first in case it fails. This is a no-op if another thread // beats us to add the package first if (syncVM) { // throws IllegalStateException if defined to another module addPackage0(this, pn); - if (descriptor.isOpen() || descriptor.isAutomatic()) { - addExportsToAll0(this, pn); - } } extraPackages.putIfAbsent(pn, Boolean.TRUE); } --- 1040,1049 ----
*** 1143,1155 **** // automatic modules read all unnamed modules if (descriptor.isAutomatic()) { m.implAddReads(ALL_UNNAMED_MODULE, true); } ! // exports and opens initExportsAndOpens(m, nameToSource, nameToModule, layer.parents()); } // register the modules in the boot layer if (isBootLayer) { for (ResolvedModule resolvedModule : cf.modules()) { ModuleReference mref = resolvedModule.reference(); --- 1140,1155 ---- // automatic modules read all unnamed modules if (descriptor.isAutomatic()) { m.implAddReads(ALL_UNNAMED_MODULE, true); } ! // export and open packages, skipped for open and automatic ! // modules since they are treated as if all packages are open ! if (!descriptor.isOpen() && !descriptor.isAutomatic()) { initExportsAndOpens(m, nameToSource, nameToModule, layer.parents()); } + } // register the modules in the boot layer if (isBootLayer) { for (ResolvedModule resolvedModule : cf.modules()) { ModuleReference mref = resolvedModule.reference();
*** 1205,1229 **** */ private static void initExportsAndOpens(Module m, Map<String, Module> nameToSource, Map<String, Module> nameToModule, List<ModuleLayer> parents) { - // The VM doesn't special case open or automatic modules so need to - // export all packages - ModuleDescriptor descriptor = m.getDescriptor(); - if (descriptor.isOpen() || descriptor.isAutomatic()) { - assert descriptor.opens().isEmpty(); - for (String source : descriptor.packages()) { - addExportsToAll0(m, source); - } - return; - } - Map<String, Set<Module>> openPackages = new HashMap<>(); Map<String, Set<Module>> exportedPackages = new HashMap<>(); // process the open packages first for (Opens opens : descriptor.opens()) { String source = opens.source(); if (opens.isQualified()) { // qualified opens --- 1205,1219 ---- */ private static void initExportsAndOpens(Module m, Map<String, Module> nameToSource, Map<String, Module> nameToModule, List<ModuleLayer> parents) { Map<String, Set<Module>> openPackages = new HashMap<>(); Map<String, Set<Module>> exportedPackages = new HashMap<>(); // process the open packages first + ModuleDescriptor descriptor = m.getDescriptor(); for (Opens opens : descriptor.opens()) { String source = opens.source(); if (opens.isQualified()) { // qualified opens
< prev index next >