You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2020/06/08 13:16:14 UTC
[james-project] 20/30: JAMES-3179 Deal with SieveFileRepository
nullability
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 <gd...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org