This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 2f3d2197a0a9d4072968d04acb01e8a98b27cf15 Author: Gautier DI FOLCO <gdifo...@linagora.com> AuthorDate: Tue May 12 17:18:35 2020 +0200 JAMES-3179 Deal with SieveFileRepository nullability --- .../sieverepository/file/SieveFileRepository.java | 28 ++++++++++++---------- .../lib/AbstractSieveRepositoryTest.java | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java index b774270..ebb50ea 100644 --- a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java +++ b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java @@ -32,11 +32,13 @@ import java.io.Writer; import java.time.Instant; import java.time.ZoneOffset; import java.time.ZonedDateTime; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; +import java.util.Optional; import java.util.Scanner; +import java.util.function.Predicate; +import java.util.stream.Stream; import javax.inject.Inject; @@ -55,6 +57,8 @@ import org.apache.james.sieverepository.api.exception.QuotaNotFoundException; import org.apache.james.sieverepository.api.exception.ScriptNotFoundException; import org.apache.james.sieverepository.api.exception.StorageException; +import com.github.steveash.guavate.Guavate; + /** * <code>SieveFileRepository</code> manages sieve scripts stored on the file system. * <p>The sieve root directory is a sub-directory of the application base directory named "sieve". @@ -199,25 +203,25 @@ public class SieveFileRepository implements SieveRepository { @Override public List<ScriptSummary> listScripts(Username username) throws StorageException { - File[] files = getUserDirectory(username).listFiles(); - List<ScriptSummary> summaries = new ArrayList<>(files.length); File activeFile = null; try { activeFile = getActiveFile(username); } catch (ScriptNotFoundException ex) { // no op } - for (File file : files) { - if (!SYSTEM_FILES.contains(file.getName())) { - summaries.add(new ScriptSummary(new ScriptName(file.getName()), isActive(file, activeFile))); - } - } - return summaries; + + Predicate<File> isActive = isActiveValidator(activeFile); + return Stream.of(Optional.ofNullable(getUserDirectory(username).listFiles()).orElse(new File[]{})) + .filter(file -> !SYSTEM_FILES.contains(file.getName())) + .map(file -> new ScriptSummary(new ScriptName(file.getName()), isActive.test(file))) + .collect(Guavate.toImmutableList()); } - private boolean isActive(File file, File activeFile) { - return null != activeFile - && activeFile.equals(file); + private Predicate<File> isActiveValidator(File activeFile) { + if (activeFile != null) { + return activeFile::equals; + } + return file -> false; } @Override diff --git a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java index 3f76b5a..4482d97 100644 --- a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java @@ -130,7 +130,7 @@ public abstract class AbstractSieveRepositoryTest { } @Test - public void listScriptsShouldThrowIfUserNotFound() throws Exception { + public void listScriptsShouldReturnAnEmptyListIfUserNotFound() throws Exception { assertThat(sieveRepository.listScripts(USERNAME)).isEmpty(); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org