This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 246421a4442317b88fab06d1f3ea9de89d22b9df
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Mon Apr 8 15:49:44 2019 +0700

    JAMES-2708 LocalFileSharing mechanism should be instanciable without 
configuration
    
    This is to avoid configuration changes upon migrations
---
 .../blob/export/file/LocalFileBlobExportMechanism.java |  6 +++---
 .../export/file/LocalFileBlobExportMechanismTest.java  | 18 ++++++++++++------
 .../modules/LocalFileBlobExportMechanismModule.java    |  6 +++++-
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git 
a/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
 
b/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
index 67ceba6..32e899b 100644
--- 
a/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
+++ 
b/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
@@ -52,9 +52,9 @@ public class LocalFileBlobExportMechanism implements 
BlobExportMechanism {
 
     public static class Configuration {
 
-        public static Configuration 
from(org.apache.commons.configuration.Configuration propertiesConfiguration) {
-            String exportDirectory = 
propertiesConfiguration.getString(DIRECTORY_LOCATION_PROPERTY);
-            return new Configuration(exportDirectory);
+        public static Optional<Configuration> 
from(org.apache.commons.configuration.Configuration propertiesConfiguration) {
+            String exportDirectory = 
propertiesConfiguration.getString(DIRECTORY_LOCATION_PROPERTY, null);
+            return 
Optional.ofNullable(exportDirectory).map(Configuration::new);
         }
 
         private static final String DIRECTORY_LOCATION_PROPERTY = 
"blob.export.localFile.directory";
diff --git 
a/server/blob/blob-export-file/src/test/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanismTest.java
 
b/server/blob/blob-export-file/src/test/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanismTest.java
index a1793bb..6e70cbd 100644
--- 
a/server/blob/blob-export-file/src/test/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanismTest.java
+++ 
b/server/blob/blob-export-file/src/test/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanismTest.java
@@ -191,21 +191,27 @@ class LocalFileBlobExportMechanismTest {
             });
     }
 
-        @Nested
+    @Nested
     class ConfigurationTest {
-
         @Test
         void shouldMatchBeanContract() {
             EqualsVerifier.forClass(Configuration.class)
                 .verify();
         }
+
+        @Test
+        void fromShouldReturnEmptyWhenDirectoryIsMissing() {
+            PropertiesConfiguration configuration = new 
PropertiesConfiguration();
+
+            assertThat(Configuration.from(configuration)).isEmpty();
+        }
+
         @Test
-        void fromShouldThrowWhenDirectoryIsMissing() {
+        void fromShouldReturnEmptyWhenDirectoryIsNull() {
             PropertiesConfiguration configuration = new 
PropertiesConfiguration();
             configuration.addProperty("blob.export.localFile.directory", null);
 
-            assertThatThrownBy(() -> Configuration.from(configuration))
-                .isInstanceOf(NullPointerException.class);
+            assertThat(Configuration.from(configuration)).isEmpty();
         }
 
         @Test
@@ -215,7 +221,7 @@ class LocalFileBlobExportMechanismTest {
             configuration.addProperty("blob.export.localFile.directory", 
exportDirectory);
 
             assertThat(Configuration.from(configuration))
-                .isEqualTo(new Configuration(exportDirectory));
+                .contains(new Configuration(exportDirectory));
         }
     }
 }
\ No newline at end of file
diff --git 
a/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/LocalFileBlobExportMechanismModule.java
 
b/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/LocalFileBlobExportMechanismModule.java
index 70995c8..7b2f046 100644
--- 
a/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/LocalFileBlobExportMechanismModule.java
+++ 
b/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/LocalFileBlobExportMechanismModule.java
@@ -46,7 +46,11 @@ public class LocalFileBlobExportMechanismModule extends 
AbstractModule {
     LocalFileBlobExportMechanism.Configuration 
localFileExportConfiguration(PropertiesProvider propertiesProvider) throws 
ConfigurationException {
         try {
             Configuration configuration = 
propertiesProvider.getConfiguration(ConfigurationComponent.NAME);
-            return 
LocalFileBlobExportMechanism.Configuration.from(configuration);
+            return 
LocalFileBlobExportMechanism.Configuration.from(configuration)
+                .orElseGet(() -> {
+                    LOGGER.warn("Missing LocalFileBlobExportMechanism 
configuration, using default localFile blob exporting configuration");
+                    return 
LocalFileBlobExportMechanism.Configuration.DEFAULT_CONFIGURATION;
+                });
         } catch (FileNotFoundException e) {
             LOGGER.warn("Could not find " + ConfigurationComponent.NAME + " 
configuration file, using default localFile blob exporting configuration");
             return 
LocalFileBlobExportMechanism.Configuration.DEFAULT_CONFIGURATION;


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to