src/share/classes/org/openjdk/jigsaw/ModuleFile.java

Print this page

        

*** 56,65 **** --- 56,68 ---- } } public final static class Reader implements Closeable { + // The library where this module is to be installed, or null if + // simply extracting ( jmod Extract, or jsign ) + private SimpleLibrary lib; private DataInputStream stream; private File destination; private boolean deflate; private HashType hashtype;
*** 121,130 **** --- 124,138 ---- this.stream = new DataInputStream(new BufferedInputStream(stream)); } } + public Reader(DataInputStream stream, SimpleLibrary lib) { + this(stream); + this.lib = lib; + } + private void checkHashMatch(byte[] expected, byte[] computed) throws IOException { if (!MessageDigest.isEqual(expected, computed)) throw new IOException("Expected hash "
*** 467,476 **** --- 475,497 ---- throws IOException { return readModuleInfo(in, csize); // signature has the same format } + // Returns the path for the section type, if the library + // has one configured. + private File librarySectionPath(SectionType type) { + if (lib != null && type == SectionType.NATIVE_LIBS + && lib.natlibs() != null) + return lib.natlibs(); + if (lib != null && type == SectionType.NATIVE_CMDS + && lib.natcmds() != null) + return lib.natcmds(); + + return null; + } + private File computeRealPath(String storedpath) throws IOException { String convertedpath = storedpath.replace('/', File.separatorChar); File path = new File(convertedpath);
*** 487,496 **** --- 508,527 ---- private File computeRealPath(SectionType type, String storedpath) throws IOException { + File lsp = librarySectionPath(type); + if (lsp != null) { + // The library has a configured path for this section + File realpath = new File(lsp, storedpath); + // Create the parent directories if necessary + File parent = realpath.getParentFile(); + if (!parent.exists()) + Files.mkdirs(parent, realpath.getName()); + return realpath; + } String dir = getSubdirOfSection(type); return computeRealPath(dir + File.separatorChar + storedpath); } private static void markNativeCodeExecutable(SectionType type,