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 ad...@apache.org on 2016/01/13 11:12:16 UTC

svn commit: r1724387 - in /james/project/trunk/server/container/util-java8/src: main/java/org/apache/james/util/streams/Collectors.java test/java/org/apache/james/util/streams/CollectorsTest.java

Author: aduprat
Date: Wed Jan 13 10:12:16 2016
New Revision: 1724387

URL: http://svn.apache.org/viewvc?rev=1724387&view=rev
Log:
JAMES-1648 Implement Collectors.toImmutableSet. Contributed by Baechler <ma...@gmail.com>

Modified:
    james/project/trunk/server/container/util-java8/src/main/java/org/apache/james/util/streams/Collectors.java
    james/project/trunk/server/container/util-java8/src/test/java/org/apache/james/util/streams/CollectorsTest.java

Modified: james/project/trunk/server/container/util-java8/src/main/java/org/apache/james/util/streams/Collectors.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/util-java8/src/main/java/org/apache/james/util/streams/Collectors.java?rev=1724387&r1=1724386&r2=1724387&view=diff
==============================================================================
--- james/project/trunk/server/container/util-java8/src/main/java/org/apache/james/util/streams/Collectors.java (original)
+++ james/project/trunk/server/container/util-java8/src/main/java/org/apache/james/util/streams/Collectors.java Wed Jan 13 10:12:16 2016
@@ -21,11 +21,13 @@ package org.apache.james.util.streams;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collector;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
 
 public class Collectors {
 
@@ -35,7 +37,14 @@ public class Collectors {
             return left;
         }, ImmutableList::copyOf);
     }
-    
+
+    public static <T> Collector<T, ImmutableSet.Builder<T>, ImmutableSet<T>> toImmutableSet() {
+        return Collector.of(ImmutableSet::builder, ImmutableSet.Builder::add, (left, right) -> {
+            left.addAll(right.build());
+            return left;
+        }, ImmutableSet.Builder::build);
+    }
+
     public static <T, K, V> Collector<T, ImmutableMap.Builder<K, V>, ImmutableMap<K, V>> toImmutableMap(
             Function<? super T, ? extends K> keyMapper,
             Function<? super T, ? extends V> valueMapper) {

Modified: james/project/trunk/server/container/util-java8/src/test/java/org/apache/james/util/streams/CollectorsTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/util-java8/src/test/java/org/apache/james/util/streams/CollectorsTest.java?rev=1724387&r1=1724386&r2=1724387&view=diff
==============================================================================
--- james/project/trunk/server/container/util-java8/src/test/java/org/apache/james/util/streams/CollectorsTest.java (original)
+++ james/project/trunk/server/container/util-java8/src/test/java/org/apache/james/util/streams/CollectorsTest.java Wed Jan 13 10:12:16 2016
@@ -25,13 +25,16 @@ import static org.assertj.core.data.MapE
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
+import com.google.common.collect.ImmutableSet;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
 public class CollectorsTest {
+
     @Test
     public void immutableListCollectorShouldReturnEmptyImmutableListWhenEmptyStream() {
         String[] data = {};
@@ -58,7 +61,35 @@ public class CollectorsTest {
         assertThat(actual).isInstanceOf(ImmutableList.class);
         assertThat(actual).containsExactly("a", "b", "c");
     }
-    
+
+    @Test
+    public void immutableSetCollectorShouldReturnEmptyImmutableSetWhenEmptyStream() {
+        String[] data = {};
+        Set<String> actual = Arrays.stream(data)
+            .collect(Collectors.toImmutableSet());
+        assertThat(actual).isInstanceOf(ImmutableSet.class);
+        assertThat(actual).isEmpty();
+    }
+
+    @Test
+    public void immutableSetCollectorShouldReturnImmutableSetWhenOneElementStream() {
+        String[] data = {"a"};
+        Set<String> actual = Arrays.stream(data)
+            .collect(Collectors.toImmutableSet());
+        assertThat(actual).isInstanceOf(ImmutableSet.class);
+        assertThat(actual).containsExactly("a");
+    }
+
+    @Test
+    public void immutableSetCollectorShouldReturnImmutableSetWhen3ElementsStream() {
+        String[] data = {"a", "b", "c"};
+        Set<String> actual = Arrays.stream(data)
+            .collect(Collectors.toImmutableSet());
+        assertThat(actual).isInstanceOf(ImmutableSet.class);
+        assertThat(actual).containsExactly("a", "b", "c");
+    }
+
+
     @Test
     public void immutableMapCollectorShouldReturnEmptyImmutableMapWhenEmptyStream() {
         String[] data = {};



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