Vavr - either

0

Cześć, podpowie mi ktoś, jak to zmapować na Either<ErrorWrapper, TaskFile> ?

mongoTaskFileRepository.findById(fileId).map(taskFileEntity ->
            TaskFile.builder()
                    .id(taskFileEntity.getId())
                    .filename(taskFileEntity.getFilename())
                    .file(taskFileEntity.getFile())
                    .timestamp(taskFileEntity.getTimestamp())
                    .build())

mongoTaskFileRepository.findById(fileId) zwraca Optional<TaskFileEntity>, następnie chce to zmapować na TaskFile i zapisać w Either right().
Jeśli nie znajdzie mi takiej encji, chce w Either.left() mieć new ErrorWrapper.

0

Strzelam:

mongoTaskFileRepository.findById(fileId)
  .map(taskFileEntity ->
            Either.right(TaskFile.builder()
                    .id(taskFileEntity.getId())
                    .filename(taskFileEntity.getFilename())
                    .file(taskFileEntity.getFile())
                    .timestamp(taskFileEntity.getTimestamp())
                    .build()))
   .orElseGet(() -> Either.left(new ErrorWrapper()))
0

mongoTaskFileRepository.findById(fileId).map(twoje mapowanie).toEither(ErrorWrapper)

0

Co taka moda na tego vavra? W większości wypadków wystarczą OPtionale.Na pewno jak piszesz cruda.

2
nowyworek napisał(a):

Co taka moda na tego vavra? W większości wypadków wystarczą OPtionale.Na pewno jak piszesz cruda.

Chodzi o ogarnianie exceptionów - w Javie idą tylko do góry w stacktrace, nie możesz wyrzuconego exceptiona przekazać jako parametr do metody. A w Vavr Either możesz.

2

@eithervavr: ale w sumie z tym Either to trochę dobre pytanie. Option chyba bardziej tu pasuje, i ogólnie Option jest często wystarczające ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1