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

Print this page

        

@@ -507,30 +507,37 @@
 
             filesWriter.println(Files.convertSeparator(relativize(destination, file)));
             filesWriter.flush();
         }
 
-        void remove() throws IOException {
-            ModuleFile.Reader.remove(destination);
+        List<IOException> remove() {
+            return ModuleFile.Reader.remove(destination);
         }
 
         // Removes a module, given its module install directory
-        static void remove(File moduleDir) throws IOException {
+        static List<IOException> remove(File moduleDir) {
+            List<IOException> excs = new ArrayList<>();
             // Firstly remove any files installed outside of the module dir
             File files = new File(moduleDir, "files");
             if (files.exists()) {
                 try (FileInputStream fis = new FileInputStream(files);
                      InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
                      BufferedReader in = new BufferedReader(isr)) {
                     String filename;
-                    while ((filename = in.readLine()) != null)
-                        Files.delete(new File(moduleDir,
-                                              Files.platformSeparator(filename)));
+                    while ((filename = in.readLine()) != null) {
+                         IOException x = Files.deleteUnchecked(new File(moduleDir,
+                                    Files.platformSeparator(filename)).toPath());
+                         if (x != null)
+                             excs.add(x);
                 }
+                } catch (IOException x) {
+                    excs.add(x);
             }
+            }
 
-            Files.deleteTree(moduleDir);
+            excs.addAll(Files.deleteAllUnchecked(moduleDir.toPath()));
+            return excs;
         }
 
         // Returns the absolute path of the given section type.
         private File getDirOfSection(SectionType type) {
             if (type == SectionType.NATIVE_LIBS)