فهرست منبع

fix #1484 remote empty thumbnail directories

Shinsuke Sugaya 7 سال پیش
والد
کامیت
2d77a1cd26
1فایلهای تغییر یافته به همراه16 افزوده شده و 2 حذف شده
  1. 16 2
      src/main/java/org/codelibs/fess/thumbnail/ThumbnailManager.java

+ 16 - 2
src/main/java/org/codelibs/fess/thumbnail/ThumbnailManager.java

@@ -372,7 +372,7 @@ public class ThumbnailManager {
                         }
                     }
                 });
-                ;
+
                 deleteFileMap.values().forEach(v -> deleteFile(v));
                 count += deleteFileMap.size();
             }
@@ -384,6 +384,11 @@ public class ThumbnailManager {
                 if (logger.isDebugEnabled()) {
                     logger.debug("Delete " + path);
                 }
+
+                Path parent = path.getParent();
+                while (deleteEmptyDirectory(parent)) {
+                    parent = parent.getParent();
+                }
             } catch (final IOException e) {
                 logger.warn("Failed to delete " + path, e);
             }
@@ -435,10 +440,19 @@ public class ThumbnailManager {
             if (e != null) {
                 logger.warn("I/O exception on " + dir, e);
             }
+            deleteEmptyDirectory(dir);
+            return FileVisitResult.CONTINUE;
+        }
+
+        private boolean deleteEmptyDirectory(final Path dir) throws IOException {
             if (dir.toFile().list().length == 0 && !dir.toFile().getName().equals(THUMBNAILS_DIR_NAME)) {
                 Files.delete(dir);
+                if (logger.isDebugEnabled()) {
+                    logger.debug("Delete " + dir);
+                }
+                return true;
             }
-            return FileVisitResult.CONTINUE;
+            return false;
         }
 
     }