james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From btell...@apache.org
Subject [james-project] 11/24: JAMES-2708 Avoid unecessary class nesting
Date Thu, 11 Apr 2019 00:33:42 GMT
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 c94fcf7bb5896c972c0b372e1efbc75be0bdbb44
Author: Benoit Tellier <btellier@linagora.com>
AuthorDate: Mon Apr 8 15:43:08 2019 +0700

    JAMES-2708 Avoid unecessary class nesting
    
    BlobExportImplChoice can directly be an enumeration
---
 .../apache/james/modules/BlobExportImplChoice.java | 72 ++++++----------------
 .../james/modules/BlobExportMechanismModule.java   | 10 +--
 .../james/modules/BlobExportImplChoiceTest.java    |  6 +-
 .../modules/BlobExportMechanismModuleTest.java     | 10 +--
 4 files changed, 32 insertions(+), 66 deletions(-)

diff --git a/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportImplChoice.java
b/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportImplChoice.java
index 4551929..a00eb78 100644
--- a/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportImplChoice.java
+++ b/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportImplChoice.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.modules;
 
-import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
@@ -30,38 +29,21 @@ import com.google.common.base.Joiner;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
-class BlobExportImplChoice {
+enum  BlobExportImplChoice {
+    LOCAL_FILE("localFile");
 
-    enum BlobExportImplName {
-        LOCAL_FILE("localFile");
+    private static Optional<BlobExportImplChoice> from(String implNameString) {
+        Preconditions.checkNotNull(implNameString);
 
-        private static Optional<BlobExportImplName> from(String implNameString) {
-            Preconditions.checkNotNull(implNameString);
-
-            return Stream.of(values())
-                .filter(impl -> impl.name.equals(implNameString))
-                .findFirst();
-        }
-
-        private static ImmutableList<String> plainImplNames() {
-            return Stream.of(values())
-                .map(impl -> impl.name)
-                .collect(Guavate.toImmutableList());
-        }
-
-        private final String name;
-
-        BlobExportImplName(String name) {
-            this.name = name;
-        }
-
-        String getImplName() {
-            return name;
-        }
+        return Stream.of(values())
+            .filter(impl -> impl.name.equals(implNameString))
+            .findFirst();
     }
 
-    static BlobExportImplChoice localFile() {
-        return new BlobExportImplChoice(BlobExportImplName.LOCAL_FILE);
+    private static ImmutableList<String> plainImplNames() {
+        return Stream.of(values())
+            .map(impl -> impl.name)
+            .collect(Guavate.toImmutableList());
     }
 
     static Optional<BlobExportImplChoice> from(Configuration configuration) {
@@ -70,41 +52,25 @@ class BlobExportImplChoice {
         Optional<String> sanitizedImplName = Optional.ofNullable(blobExportImpl)
             .map(String::trim);
 
-        return sanitizedImplName.map(name -> BlobExportImplName.from(name)
-                .map(BlobExportImplChoice::new)
-                .orElseThrow(() -> new IllegalArgumentException(unknownBlobExportErrorMessage(name))));
+        return sanitizedImplName.map(name -> BlobExportImplChoice.from(name)
+            .orElseThrow(() -> new IllegalArgumentException(unknownBlobExportErrorMessage(name))));
     }
 
     private static String unknownBlobExportErrorMessage(String blobExportImpl) {
         return String.format("unknown blob export mechanism '%s', please choose one in supported
implementations(%s)",
             blobExportImpl,
-            Joiner.on(",").join(BlobExportImplName.plainImplNames()));
+            Joiner.on(",").join(BlobExportImplChoice.plainImplNames()));
     }
 
     private static final String BLOB_EXPORT_MECHANISM_IMPL = "blob.export.implementation";
 
-    private final BlobExportImplName impl;
-
-    private BlobExportImplChoice(BlobExportImplName implName) {
-        this.impl = implName;
-    }
-
-    public BlobExportImplName getImpl() {
-        return impl;
-    }
-
-    @Override
-    public final boolean equals(Object o) {
-        if (o instanceof BlobExportImplChoice) {
-            BlobExportImplChoice that = (BlobExportImplChoice) o;
+    private final String name;
 
-            return Objects.equals(this.impl, that.impl);
-        }
-        return false;
+    BlobExportImplChoice(String name) {
+        this.name = name;
     }
 
-    @Override
-    public final int hashCode() {
-        return Objects.hash(impl);
+    String getImplName() {
+        return name;
     }
 }
diff --git a/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportMechanismModule.java
b/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportMechanismModule.java
index 6fa7862..d228615 100644
--- a/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportMechanismModule.java
+++ b/server/container/guice/blob-export-guice/src/main/java/org/apache/james/modules/BlobExportMechanismModule.java
@@ -54,12 +54,12 @@ public class BlobExportMechanismModule extends AbstractModule {
             Configuration configuration = propertiesProvider.getConfiguration(ConfigurationComponent.NAME);
             return BlobExportImplChoice.from(configuration)
                 .orElseGet(() -> {
-                    LOGGER.warn("No blob export mechanism defined. Defaulting to " + BlobExportImplChoice.BlobExportImplName.LOCAL_FILE.getImplName());
-                    return BlobExportImplChoice.localFile();
+                    LOGGER.warn("No blob export mechanism defined. Defaulting to " + BlobExportImplChoice.LOCAL_FILE.getImplName());
+                    return BlobExportImplChoice.LOCAL_FILE;
                 });
         } catch (FileNotFoundException e) {
             LOGGER.warn("Could not find " + ConfigurationComponent.NAME + " configuration
file, using localFile blob exporting as the default");
-            return BlobExportImplChoice.localFile();
+            return BlobExportImplChoice.LOCAL_FILE;
         }
     }
 
@@ -67,11 +67,11 @@ public class BlobExportMechanismModule extends AbstractModule {
     @Provides
     @Singleton
     BlobExportMechanism provideMechanism(BlobExportImplChoice implChoice, Provider<LocalFileBlobExportMechanism>
localFileMechanismProvider) {
-        switch (implChoice.getImpl()) {
+        switch (implChoice) {
             case LOCAL_FILE:
                 return localFileMechanismProvider.get();
             default:
-                throw new RuntimeException("blobExportMechanism '" + implChoice.getImpl().getImplName()
+ "' is not supported yet");
+                throw new RuntimeException("blobExportMechanism '" + implChoice.getImplName()
+ "' is not supported yet");
         }
     }
 }
diff --git a/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportImplChoiceTest.java
b/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportImplChoiceTest.java
index 9affa58..b3da553 100644
--- a/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportImplChoiceTest.java
+++ b/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportImplChoiceTest.java
@@ -58,11 +58,11 @@ class BlobExportImplChoiceTest {
         configuration.addProperty("blob.export.implementation", "localFile");
 
         assertThat(BlobExportImplChoice.from(configuration))
-            .contains(BlobExportImplChoice.localFile());
+            .contains(BlobExportImplChoice.LOCAL_FILE);
     }
 
     @Test
-    void fromShouldThrowWhenCaseInSensitive() {
+    void fromShouldThrowWhenCaseInsensitive() {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         configuration.addProperty("blob.export.implementation", "localFILE");
 
@@ -76,6 +76,6 @@ class BlobExportImplChoiceTest {
         configuration.addProperty("blob.export.implementation", "  localFile   ");
 
         assertThat(BlobExportImplChoice.from(configuration))
-            .contains(BlobExportImplChoice.localFile());
+            .contains(BlobExportImplChoice.LOCAL_FILE);
     }
 }
\ No newline at end of file
diff --git a/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportMechanismModuleTest.java
b/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportMechanismModuleTest.java
index e9dbdd2..e011a90 100644
--- a/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportMechanismModuleTest.java
+++ b/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/BlobExportMechanismModuleTest.java
@@ -49,7 +49,7 @@ class BlobExportMechanismModuleTest {
         FakePropertiesProvider noConfigurationFile = FakePropertiesProvider.builder().build();
 
         assertThat(module.provideChoice(noConfigurationFile))
-            .isEqualTo(BlobExportImplChoice.localFile());
+            .isEqualTo(BlobExportImplChoice.LOCAL_FILE);
     }
 
     @Test
@@ -62,7 +62,7 @@ class BlobExportMechanismModuleTest {
             .build();
 
         assertThat(module.provideChoice(noConfigurationFile))
-            .isEqualTo(BlobExportImplChoice.localFile());
+            .isEqualTo(BlobExportImplChoice.LOCAL_FILE);
     }
 
     @Test
@@ -79,19 +79,19 @@ class BlobExportMechanismModuleTest {
     }
 
     @Test
-    void provideChoiceShouldThrowWhenConfigurationIsMissing() throws Exception {
+    void provideChoiceShouldReturnDefaultWhenConfigurationIsMissing() throws Exception {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
         FakePropertiesProvider noConfigurationFile = FakePropertiesProvider.builder()
             .register(NAME, configuration)
             .build();
 
         assertThat(module.provideChoice(noConfigurationFile))
-            .isEqualTo(BlobExportImplChoice.localFile());
+            .isEqualTo(BlobExportImplChoice.LOCAL_FILE);
     }
 
     @Test
     void provideMechanismShouldProvideFileExportWhenPassingLocalFileChoice() {
-        assertThat(module.provideMechanism(BlobExportImplChoice.localFile(), LOCAL_FILE_EXPORT_PROVIDER))
+        assertThat(module.provideMechanism(BlobExportImplChoice.LOCAL_FILE, LOCAL_FILE_EXPORT_PROVIDER))
             .isEqualTo(LOCAL_FILE_EXPORT);
     }
 }
\ No newline at end of file


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


Mime
View raw message