This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Use root/example as user/password credentials | |
| version: '3.7' | |
| services: | |
| mongo: | |
| image: mongo:6.0.8 | |
| container_name: mongo | |
| restart: always | |
| environment: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @Test | |
| public void using_Map_and_FlatMap() { | |
| Person personTest = personRepository.getPersonTest(); | |
| Integer stateCode = Optional.ofNullable(personTest) | |
| .flatMap(person -> person.getOptionalAddress()) | |
| .map(address -> address.getState()) | |
| .flatMap(state -> state.getOptionalCode()) | |
| .orElseGet(() -> null); | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @Test | |
| public void using_FlatMap() { | |
| Person personTest = personRepository.getPersonTest(); | |
| Integer addressNumber = Optional.ofNullable(personTest) | |
| .flatMap(person -> person.getOptionalAddress()) | |
| .flatMap(address -> address.getOptionalNumber()) | |
| .orElseGet(() -> null); | |
| assertNotNull(addressNumber); | |
| assertEquals(addressNumber, personTest.getAddress().getNumber()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @Test | |
| public void using_Map() { | |
| Person personTest = personRepository.getPersonTest(); | |
| Integer addressNumber = Optional.ofNullable(personTest) | |
| .map(person -> person.getAddress()) | |
| .map(address -> address.getNumber()) | |
| .orElseGet(() -> null); | |
| assertNotNull(addressNumber); | |
| assertEquals(addressNumber, personTest.getAddress().getNumber()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package net.atopecode.optionals.model; | |
| import java.util.Optional; | |
| public class State { | |
| private String name; | |
| private Integer code; | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package net.atopecode.optionals.model; | |
| import java.util.Optional; | |
| public class Address { | |
| private String street; | |
| private Integer number; | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package net.atopecode.optionals.model; | |
| import java.util.Optional; | |
| public class Person { | |
| private String name; | |
| private String email; | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @Test | |
| public void flatMapTest(){ | |
| Person person = personRepository.getPersonTest(); | |
| String emailWithFlatMap = Optional.ofNullable(person) | |
| .flatMap((p -> Optional.ofNullable(p.getEmail()))) //Con 'flatMap()' hay que devolver un 'Optional<T>' con el resultado deseado. | |
| .orElse(null); | |
| System.out.println("Con faltMap(): " + emailWithFlatMap); | |
| assertEquals(emailWithFlatMap, person.getEmail()); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @Test | |
| public void mapTest(){ | |
| Person person = personRepository.getPersonTest(); | |
| String emailWithMap = Optional.ofNullable(person) | |
| .map(person -> person.getEmail()) //Con 'map()' se hace un wrapper del resultado 'T' dentro de un objeto 'Optional<T>' automáticamente, pero nosotros devolvemos directamente el tipo 'T'. | |
| .orElse(null); | |
| System.out.println("Con map(): " + emailWithMap); | |
| assertEquals(emailWithMap, person.getEmail()); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @Test | |
| public void getStateField_with_StateNotNull() { | |
| Person personWithState = personRepository.getPersonTest(); | |
| String stateName = personWithState.getAddress().getState().getName(); | |
| assertTrue(stateName != null); | |
| String stateNameOptional = Optional.ofNullable(personWithState) | |
| .map(person -> person.getAddress()) | |
| .map(address -> address.getState()) | |
| .map(state -> state.getName()) |
NewerOlder