DeleteTrashFolders: Extract predicate to its own class Change-Id: If6f754ecccd5313bb46e71b366eb2264487e3432
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java index d80a677..07ef2e6 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java +++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
@@ -37,22 +37,33 @@ public class DeleteTrashFolders implements LifecycleListener { private static final Logger log = LoggerFactory.getLogger(DeleteTrashFolders.class); - /** - * Search for name which ends with a dot, 13 digits and the string ".deleted". A folder 'f' is - * renamed to 'f.<currentTimeMillis>.deleted'. <currentTimeMillis> happens to be exactly 13 digits - * for commits created between 2002 (before git was born) and 2285. - */ - private static final Pattern TRASH_1 = Pattern.compile(".*\\.\\d{13}.deleted"); + static class TrashFolderPredicate { - /** - * New trash folder name format. It adds % chars around the "deleted" string and keeps the ".git" - * extension. - */ - private static final Pattern TRASH_2 = Pattern.compile(".*\\.\\d{13}.%deleted%.git"); + private TrashFolderPredicate() { + // Avoid this class being instantiated by using the default empty constructor + } - @VisibleForTesting - static final boolean isTrashFolderName(String fName) { - return TRASH_1.matcher(fName).matches() || TRASH_2.matcher(fName).matches(); + /** + * Search for name which ends with a dot, 13 digits and the string ".deleted". A folder 'f' is + * renamed to 'f.<currentTimeMillis>.deleted'. <currentTimeMillis> happens to be exactly 13 + * digits for commits created between 2002 (before git was born) and 2285. + */ + private static final Pattern TRASH_1 = Pattern.compile(".*\\.\\d{13}.deleted"); + + /** + * New trash folder name format. It adds % chars around the "deleted" string and keeps the + * ".git" extension. + */ + private static final Pattern TRASH_2 = Pattern.compile(".*\\.\\d{13}.%deleted%.git"); + + @VisibleForTesting + static final boolean match(String fName) { + return TRASH_1.matcher(fName).matches() || TRASH_2.matcher(fName).matches(); + } + + static boolean match(Path dir) { + return match(dir.getFileName().toString()); + } } private Set<Path> repoFolders; @@ -72,7 +83,7 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { String fName = dir.getFileName().toString(); - if (isTrashFolderName(fName)) { + if (TrashFolderPredicate.match(fName)) { log.warn("Will delete this folder: {}", dir); recursiveDelete(dir); return FileVisitResult.SKIP_SUBTREE;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java index 7b9b055..6ce8206 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
@@ -15,7 +15,7 @@ package com.googlesource.gerrit.plugins.deleteproject.fs; import static com.google.common.truth.Truth.assertThat; -import static com.googlesource.gerrit.plugins.deleteproject.fs.DeleteTrashFolders.isTrashFolderName; +import static com.googlesource.gerrit.plugins.deleteproject.fs.DeleteTrashFolders.TrashFolderPredicate.match; import org.junit.Test; @@ -54,10 +54,10 @@ } private void matches(String name) { - assertThat(isTrashFolderName(name)).isTrue(); + assertThat(match(name)).isTrue(); } private void doesNotMatch(String name) { - assertThat(isTrashFolderName(name)).isFalse(); + assertThat(match(name)).isFalse(); } }