BAEL4640 Find First with Optional (#10142)
* BAEL4640 Find First with Optional * BAEL4640 Fixes for review comments * BAEL4640 Removing blank lines * BAEL4640 Removing blank lines * BAEL4640 Changes for 8.3 Optional.flatMap Co-authored-by: Chirag Dewan <chirag.dewan@ericsson.com>
This commit is contained in:
parent
e459c3faa0
commit
679d45ca37
|
@ -1,23 +1,50 @@
|
||||||
package com.baeldung.nulls;
|
package com.baeldung.nulls;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static java.util.Collections.emptyList;
|
||||||
|
|
||||||
public class UsingOptional {
|
public class UsingOptional {
|
||||||
|
|
||||||
public Optional<Object> process(boolean processed) {
|
public static final String DEFAULT_VALUE = "Default Value";
|
||||||
|
|
||||||
|
public Optional<Object> process(boolean processed) {
|
||||||
String response = doSomething(processed);
|
String response = doSomething(processed);
|
||||||
|
|
||||||
return Optional.ofNullable(response);
|
return Optional.ofNullable(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String doSomething(boolean processed) {
|
public String findFirst() {
|
||||||
|
return getList().stream()
|
||||||
|
.findFirst()
|
||||||
|
.orElse(DEFAULT_VALUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Optional<String> findOptionalFirst() {
|
||||||
|
return getList().stream()
|
||||||
|
.findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getList() {
|
||||||
|
return emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<String> optionalListFirst() {
|
||||||
|
return getOptionalList().flatMap(
|
||||||
|
list -> list.stream().findFirst());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Optional<List> getOptionalList() {
|
||||||
|
return Optional.ofNullable(getList());
|
||||||
|
}
|
||||||
|
|
||||||
|
private String doSomething(boolean processed) {
|
||||||
if (processed) {
|
if (processed) {
|
||||||
return "passed";
|
return "passed";
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,32 +11,47 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
class UsingOptionalUnitTest {
|
class UsingOptionalUnitTest {
|
||||||
|
|
||||||
private UsingOptional classUnderTest;
|
private UsingOptional dataObject;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void setup() {
|
public void setup() {
|
||||||
classUnderTest = new UsingOptional();
|
dataObject = new UsingOptional();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenArgIsFalse_thenReturnEmptyResponse() {
|
public void whenArgIsFalse_thenReturnEmptyResponse() {
|
||||||
|
Optional<Object> result = dataObject.process(false);
|
||||||
Optional<Object> result = classUnderTest.process(false);
|
|
||||||
|
|
||||||
assertFalse(result.isPresent());
|
assertFalse(result.isPresent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenArgIsTrue_thenReturnValidResponse() {
|
public void whenArgIsTrue_thenReturnValidResponse() {
|
||||||
|
Optional<Object> result = dataObject.process(true);
|
||||||
Optional<Object> result = classUnderTest.process(true);
|
|
||||||
|
|
||||||
assertTrue(result.isPresent());
|
assertTrue(result.isPresent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenArgIsFalse_thenChainResponseAndThrowException() {
|
public void whenArgIsFalse_thenChainResponseAndThrowException() {
|
||||||
|
assertThrows(Exception.class, () -> dataObject.process(false).orElseThrow(() -> new Exception()));
|
||||||
assertThrows(Exception.class, () -> classUnderTest.process(false).orElseThrow(() -> new Exception()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test()
|
||||||
|
void givenEmptyList_whenFindFirst_getDefaultValue() {
|
||||||
|
assertTrue(dataObject.findFirst().equalsIgnoreCase(UsingOptional.DEFAULT_VALUE));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test()
|
||||||
|
void givenEmptyList_whenFindOptionalFirst_returnsEmptyOptional() {
|
||||||
|
assertFalse(dataObject.findOptionalFirst().isPresent());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test()
|
||||||
|
void whenOptionalListFirst_returnsEmptyOptional() {
|
||||||
|
assertFalse(dataObject.optionalListFirst().isPresent());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue