< prev index next >

src/java.base/share/classes/jdk/internal/module/ModulePatcher.java

Print this page

        

*** 53,63 **** import java.util.jar.JarFile; import java.util.stream.Collectors; import java.util.stream.Stream; import jdk.internal.loader.Resource; - import jdk.internal.loader.ResourceHelper; import jdk.internal.misc.JavaLangModuleAccess; import jdk.internal.misc.SharedSecrets; import sun.net.www.ParseUtil; --- 53,62 ----
*** 163,175 **** } descriptor.provides().forEach(builder::provides); descriptor.version().ifPresent(builder::version); descriptor.mainClass().ifPresent(builder::mainClass); - descriptor.osName().ifPresent(builder::osName); - descriptor.osArch().ifPresent(builder::osArch); - descriptor.osVersion().ifPresent(builder::osVersion); // original + new packages builder.packages(descriptor.packages()); builder.packages(packages); --- 162,171 ----
*** 177,198 **** --- 173,197 ---- } // return a module reference to the patched module URI location = mref.location().orElse(null); + ModuleTarget target = null; ModuleHashes recordedHashes = null; ModuleResolution mres = null; if (mref instanceof ModuleReferenceImpl) { ModuleReferenceImpl impl = (ModuleReferenceImpl)mref; + target = impl.moduleTarget(); recordedHashes = impl.recordedHashes(); mres = impl.moduleResolution(); } return new ModuleReferenceImpl(descriptor, location, () -> new PatchedModuleReader(paths, mref), this, + target, recordedHashes, null, mres); }
*** 224,234 **** private final ModuleReference mref; private final URL delegateCodeSourceURL; private volatile ModuleReader delegate; /** ! * Creates the ModuleReader to reads resources a patched module. */ PatchedModuleReader(List<Path> patches, ModuleReference mref) { List<ResourceFinder> finders = new ArrayList<>(); boolean initialized = false; try { --- 223,233 ---- private final ModuleReference mref; private final URL delegateCodeSourceURL; private volatile ModuleReader delegate; /** ! * Creates the ModuleReader to reads resources in a patched module. */ PatchedModuleReader(List<Path> patches, ModuleReference mref) { List<ResourceFinder> finders = new ArrayList<>(); boolean initialized = false; try {
*** 289,306 **** } return r; } /** ! * Finds a resources in the patch locations. Returns null if not found. */ private Resource findResourceInPatch(String name) throws IOException { for (ResourceFinder finder : finders) { Resource r = finder.find(name); if (r != null) return r; } return null; } /** * Finds a resource of the given name in the patched module. --- 288,308 ---- } return r; } /** ! * Finds a resources in the patch locations. Returns null if not found ! * or the name is "module-info.class" as that cannot be overridden. */ private Resource findResourceInPatch(String name) throws IOException { + if (!name.equals("module-info.class")) { for (ResourceFinder finder : finders) { Resource r = finder.find(name); if (r != null) return r; } + } return null; } /** * Finds a resource of the given name in the patched module.
*** 476,488 **** }; } @Override public Stream<String> list() throws IOException { ! return jf.stream() ! .filter(e -> !e.isDirectory()) ! .map(JarEntry::getName); } } /** --- 478,488 ---- }; } @Override public Stream<String> list() throws IOException { ! return jf.stream().map(JarEntry::getName); } } /**
*** 498,516 **** @Override public void close() { } @Override public Resource find(String name) throws IOException { ! Path path = ResourceHelper.toFilePath(name); ! if (path != null) { ! Path file = dir.resolve(path); ! if (Files.isRegularFile(file)) { return newResource(name, dir, file); ! } ! } return null; } private Resource newResource(String name, Path top, Path file) { return new Resource() { @Override public String getName() { --- 498,514 ---- @Override public void close() { } @Override public Resource find(String name) throws IOException { ! Path file = Resources.toFilePath(dir, name); ! if (file != null) { return newResource(name, dir, file); ! } else { return null; } + } private Resource newResource(String name, Path top, Path file) { return new Resource() { @Override public String getName() {
*** 548,562 **** }; } @Override public Stream<String> list() throws IOException { ! return Files.find(dir, Integer.MAX_VALUE, ! (path, attrs) -> attrs.isRegularFile()) ! .map(f -> dir.relativize(f) ! .toString() ! .replace(File.separatorChar, '/')); } } /** --- 546,558 ---- }; } @Override public Stream<String> list() throws IOException { ! return Files.walk(dir, Integer.MAX_VALUE) ! .map(f -> Resources.toResourceName(dir, f)) ! .filter(s -> s.length() > 0); } } /**
< prev index next >