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