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 bt...@apache.org on 2018/04/03 10:02:59 UTC

[13/24] james-project git commit: JAMES-2366 Improve MappingsImpl generation

JAMES-2366 Improve MappingsImpl generation


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/169190c0
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/169190c0
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/169190c0

Branch: refs/heads/master
Commit: 169190c04b7c569f2c281c790f62b01e2f62929e
Parents: dafe72b
Author: benwa <bt...@linagora.com>
Authored: Wed Mar 28 10:36:33 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Apr 3 16:59:44 2018 +0700

----------------------------------------------------------------------
 .../org/apache/james/rrt/lib/MappingsImpl.java  | 11 ++--
 .../apache/james/rrt/lib/MappingsImplTest.java  | 58 ++++++++++++++++++++
 2 files changed, 65 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/169190c0/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
index fa91828..a315d7e 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
@@ -63,14 +63,13 @@ public class MappingsImpl implements Mappings, Serializable {
     }
     
     public static MappingsImpl fromCollection(Collection<String> mappings) {
-        return mappings.stream()
-            .reduce(builder(), (builder, mapping) -> builder.add(mapping), (builder1, builder2) -> builder1.addAll(builder2.build()))
-            .build();
+        return fromMappings(mappings.stream()
+            .map(MappingImpl::of));
     }
     
     public static MappingsImpl fromMappings(Stream<Mapping> mappings) {
         return mappings
-            .reduce(builder(), (builder, mapping) -> builder.add(mapping), (builder1, builder2) -> builder1.addAll(builder2.build()))
+            .reduce(builder(), Builder::add, Builder::merge)
             .build();
     }
     
@@ -85,6 +84,10 @@ public class MappingsImpl implements Mappings, Serializable {
     }
     
     public static class Builder {
+
+        public static Builder merge(Builder builder1, Builder builder2) {
+            return builder1.addAll(builder2.build());
+        }
         
         private final ImmutableList.Builder<Mapping> mappings;
         

http://git-wip-us.apache.org/repos/asf/james-project/blob/169190c0/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
index bb66d38..496c74e 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
@@ -21,6 +21,7 @@
 package org.apache.james.rrt.lib;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.util.Optional;
 
@@ -253,4 +254,61 @@ public class MappingsImplTest {
         Mappings mappings = MappingsImpl.fromRawString("toto").union(MappingsImpl.fromRawString("tata"));
         assertThat(mappings).containsExactly(MappingImpl.address("toto"),MappingImpl.address("tata"));
     }
+
+    @Test
+    public void mergeShouldThrowWhenLeftIsNull() {
+        MappingsImpl.Builder left = null;
+        assertThatThrownBy(() -> MappingsImpl.Builder.merge(left, MappingsImpl.builder()))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    public void mergeShouldThrowWhenRightIsNull() {
+        MappingsImpl.Builder right = null;
+        assertThatThrownBy(() -> MappingsImpl.Builder.merge(MappingsImpl.builder(), right))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    public void mergeShouldReturnEmptyWhenBothAreEmpty() {
+        MappingsImpl.Builder empty = MappingsImpl.builder();
+        MappingsImpl mappingsImpl = MappingsImpl.Builder
+                .merge(empty, empty)
+                .build();
+        assertThat(mappingsImpl.isEmpty()).isTrue();
+    }
+
+    @Test
+    public void mergeShouldReturnLeftWhenRightIsEmpty() {
+        MappingImpl expectedMapping = MappingImpl.address("toto");
+        MappingsImpl.Builder left = MappingsImpl.builder().add(expectedMapping);
+        MappingsImpl.Builder empty = MappingsImpl.builder();
+        MappingsImpl mappingsImpl = MappingsImpl.Builder
+                .merge(left, empty)
+                .build();
+        assertThat(mappingsImpl).containsExactly(expectedMapping);
+    }
+
+    @Test
+    public void mergeShouldReturnRightWhenLeftIsEmpty() {
+        MappingImpl expectedMapping = MappingImpl.address("toto");
+        MappingsImpl.Builder right = MappingsImpl.builder().add(expectedMapping);
+        MappingsImpl.Builder empty = MappingsImpl.builder();
+        MappingsImpl mappingsImpl = MappingsImpl.Builder
+                .merge(empty, right)
+                .build();
+        assertThat(mappingsImpl).containsExactly(expectedMapping);
+    }
+
+    @Test
+    public void mergeShouldReturnBothWhenBothAreNotEmpty() {
+        MappingImpl leftMapping = MappingImpl.address("toto");
+        MappingsImpl.Builder left = MappingsImpl.builder().add(leftMapping);
+        MappingImpl rightMapping = MappingImpl.address("titi");
+        MappingsImpl.Builder right = MappingsImpl.builder().add(rightMapping);
+        MappingsImpl mappingsImpl = MappingsImpl.Builder
+                .merge(left, right)
+                .build();
+        assertThat(mappingsImpl).containsExactly(leftMapping, rightMapping);
+    }
 }


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