< prev index next >
src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java
Print this page
rev 57943 : 8238599: Refactor and simplify implAddOpensToAllUnnamed
Reviewed-by: alanb
@@ -798,10 +798,12 @@
IllegalAccessMaps maps = IllegalAccessMaps.generate(limitedFinder());
concealedPackagesToOpen = maps.concealedPackagesToOpen();
exportedPackagesToOpen = maps.exportedPackagesToOpen();
}
+ Set<String> emptySet = Set.of();
+
// open specific packages in the system modules
for (Module m : bootLayer.modules()) {
ModuleDescriptor descriptor = m.getDescriptor();
String name = m.getName();
@@ -814,12 +816,12 @@
if (upgradeModulePath != null
&& upgradeModulePath.find(name).isPresent()) {
continue;
}
- Set<String> concealedPackages = concealedPackagesToOpen.getOrDefault(name, Set.of());
- Set<String> exportedPackages = exportedPackagesToOpen.getOrDefault(name, Set.of());
+ Set<String> concealedPackages = concealedPackagesToOpen.getOrDefault(name, emptySet);
+ Set<String> exportedPackages = exportedPackagesToOpen.getOrDefault(name, emptySet);
// refresh the set of concealed and exported packages if needed
if (extraExportsOrOpens) {
concealedPackages = new HashSet<>(concealedPackages);
exportedPackages = new HashSet<>(exportedPackages);
@@ -848,12 +850,11 @@
// log reflective access to non-public members/types in exported packages
builder.logAccessToExportedPackages(m, exportedPackages);
// open the packages to unnamed modules
JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
- jla.addOpensToAllUnnamed(m, concat(concealedPackages.iterator(),
- exportedPackages.iterator()));
+ jla.addOpensToAllUnnamed(m, concealedPackages, exportedPackages);
}
builder.complete();
}
@@ -994,29 +995,10 @@
throw new IllegalArgumentException(prefix);
}
}
/**
- * Returns an iterator that yields all elements of the first iterator
- * followed by all the elements of the second iterator.
- */
- static <T> Iterator<T> concat(Iterator<T> iterator1, Iterator<T> iterator2) {
- return new Iterator<T>() {
- @Override
- public boolean hasNext() {
- return iterator1.hasNext() || iterator2.hasNext();
- }
- @Override
- public T next() {
- if (iterator1.hasNext()) return iterator1.next();
- if (iterator2.hasNext()) return iterator2.next();
- throw new NoSuchElementException();
- }
- };
- }
-
- /**
* Wraps a (potentially not thread safe) ModuleFinder created during startup
* for use after startup.
*/
static class SafeModuleFinder implements ModuleFinder {
private final Set<ModuleReference> mrefs;
< prev index next >