Added PR files for BAEL-2031 (#4844)
* Added source files for BAEL-2031 * Added test files for BAEL-2031
This commit is contained in:
parent
51d79fdc55
commit
deb27c1e3b
|
@ -0,0 +1,19 @@
|
||||||
|
package com.baeldung.nullsafecollectionstreams;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import static org.apache.commons.collections4.CollectionUtils.emptyIfNull;
|
||||||
|
|
||||||
|
public class NullSafeCollectionStreamsUsingCommonsEmptyIfNull {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method shows how to make a null safe stream from a collection through the use of
|
||||||
|
* emptyIfNull() method from Apache Commons CollectionUtils library
|
||||||
|
*
|
||||||
|
* @param collection The collection that is to be converted into a stream
|
||||||
|
* @return The stream that has been created from the collection or an empty stream if the collection is null
|
||||||
|
*/
|
||||||
|
public Stream<String> collectionAsStream(Collection<String> collection) {
|
||||||
|
return emptyIfNull(collection).stream();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.baeldung.nullsafecollectionstreams;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public class NullSafeCollectionStreamsUsingJava8OptionalContainer {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method shows how to make a null safe stream from a collection through the use of
|
||||||
|
* Java SE 8’s Optional Container
|
||||||
|
*
|
||||||
|
* @param collection The collection that is to be converted into a stream
|
||||||
|
* @return The stream that has been created from the collection or an empty stream if the collection is null
|
||||||
|
*/
|
||||||
|
public Stream<String> collectionAsStream(Collection<String> collection) {
|
||||||
|
return Optional.ofNullable(collection)
|
||||||
|
.map(Collection::stream)
|
||||||
|
.orElseGet(Stream::empty);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.baeldung.nullsafecollectionstreams;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public class NullSafeCollectionStreamsUsingNullDereferenceCheck {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method shows how to make a null safe stream from a collection through the use of a check
|
||||||
|
* to prevent null dereferences
|
||||||
|
*
|
||||||
|
* @param collection The collection that is to be converted into a stream
|
||||||
|
* @return The stream that has been created from the collection or an empty stream if the collection is null
|
||||||
|
*/
|
||||||
|
public Stream<String> collectionAsStream(Collection<String> collection) {
|
||||||
|
return collection == null ? Stream.empty() : collection.stream();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.baeldung.nullsafecollectionstreams;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
|
||||||
|
public class NullSafeCollectionStreamsUsingCommonsEmptyIfNullUnitTest {
|
||||||
|
|
||||||
|
private final NullSafeCollectionStreamsUsingCommonsEmptyIfNull instance =
|
||||||
|
new NullSafeCollectionStreamsUsingCommonsEmptyIfNull();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCollectionIsNull_thenExpectAnEmptyStream() {
|
||||||
|
Collection<String> collection = null;
|
||||||
|
Stream<String> expResult = Stream.empty();
|
||||||
|
Stream<String> result = instance.collectionAsStream(collection);
|
||||||
|
assertStreamEquals(expResult, result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCollectionHasElements_thenExpectAStreamOfExactlyTheSameElements() {
|
||||||
|
|
||||||
|
Collection<String> collection = Arrays.asList("a", "b", "c");
|
||||||
|
Stream<String> expResult = Arrays.stream(new String[] { "a", "b", "c" });
|
||||||
|
Stream<String> result = instance.collectionAsStream(collection);
|
||||||
|
assertStreamEquals(expResult, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void assertStreamEquals(Stream<?> s1, Stream<?> s2) {
|
||||||
|
Iterator<?> iter1 = s1.iterator(), iter2 = s2.iterator();
|
||||||
|
while (iter1.hasNext() && iter2.hasNext())
|
||||||
|
assertEquals(iter1.next(), iter2.next());
|
||||||
|
assert !iter1.hasNext() && !iter2.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.baeldung.nullsafecollectionstreams;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Kwaje Anthony <kwajeanthony@gmail.com>
|
||||||
|
*/
|
||||||
|
public class NullSafeCollectionStreamsUsingJava8OptionalContainerUnitTest {
|
||||||
|
|
||||||
|
private final NullSafeCollectionStreamsUsingJava8OptionalContainer instance =
|
||||||
|
new NullSafeCollectionStreamsUsingJava8OptionalContainer();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCollectionIsNull_thenExpectAnEmptyStream() {
|
||||||
|
Collection<String> collection = null;
|
||||||
|
Stream<String> expResult = Stream.empty();
|
||||||
|
Stream<String> result = instance.collectionAsStream(collection);
|
||||||
|
assertStreamEquals(expResult, result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCollectionHasElements_thenExpectAStreamOfExactlyTheSameElements() {
|
||||||
|
|
||||||
|
Collection<String> collection = Arrays.asList("a", "b", "c");
|
||||||
|
Stream<String> expResult = Arrays.stream(new String[] { "a", "b", "c" });
|
||||||
|
Stream<String> result = instance.collectionAsStream(collection);
|
||||||
|
assertStreamEquals(expResult, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void assertStreamEquals(Stream<?> s1, Stream<?> s2) {
|
||||||
|
Iterator<?> iter1 = s1.iterator(), iter2 = s2.iterator();
|
||||||
|
while (iter1.hasNext() && iter2.hasNext())
|
||||||
|
assertEquals(iter1.next(), iter2.next());
|
||||||
|
assert !iter1.hasNext() && !iter2.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
|
||||||
|
package com.baeldung.nullsafecollectionstreams;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Kwaje Anthony <kwajeanthony@gmail.com>
|
||||||
|
*/
|
||||||
|
public class NullSafeCollectionStreamsUsingNullDereferenceCheckUnitTest {
|
||||||
|
|
||||||
|
private final NullSafeCollectionStreamsUsingNullDereferenceCheck instance =
|
||||||
|
new NullSafeCollectionStreamsUsingNullDereferenceCheck();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCollectionIsNull_thenExpectAnEmptyStream() {
|
||||||
|
Collection<String> collection = null;
|
||||||
|
Stream<String> expResult = Stream.empty();
|
||||||
|
Stream<String> result = instance.collectionAsStream(collection);
|
||||||
|
assertStreamEquals(expResult, result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenCollectionHasElements_thenExpectAStreamOfExactlyTheSameElements() {
|
||||||
|
|
||||||
|
Collection<String> collection = Arrays.asList("a", "b", "c");
|
||||||
|
Stream<String> expResult = Arrays.stream(new String[] { "a", "b", "c" });
|
||||||
|
Stream<String> result = instance.collectionAsStream(collection);
|
||||||
|
assertStreamEquals(expResult, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void assertStreamEquals(Stream<?> s1, Stream<?> s2) {
|
||||||
|
Iterator<?> iter1 = s1.iterator(), iter2 = s2.iterator();
|
||||||
|
while (iter1.hasNext() && iter2.hasNext())
|
||||||
|
assertEquals(iter1.next(), iter2.next());
|
||||||
|
assert !iter1.hasNext() && !iter2.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue