|
6 | 6 | import com.itau.transferencia.exceptions.BusinessException; |
7 | 7 | import com.itau.transferencia.exceptions.InsufficientFundsException; |
8 | 8 | import com.itau.transferencia.exceptions.SameAccountException; |
9 | | -import com.itau.transferencia.http.requests.TransferRequest; |
10 | | -import com.itau.transferencia.http.responses.TransferResponse; |
11 | 9 | import com.itau.transferencia.repositories.TransferRepository; |
| 10 | +import com.itau.transferencia.requests.TransferRequest; |
| 11 | +import com.itau.transferencia.responses.TransferResponse; |
12 | 12 | import com.itau.transferencia.services.CustomerService; |
13 | 13 | import com.itau.transferencia.services.TransferLogService; |
14 | 14 | import com.itau.transferencia.services.TransferService; |
@@ -60,9 +60,15 @@ public Transfer transfer(String sourceAccount, TransferRequest transferRequest) |
60 | 60 | destination.setBalance(destination.getBalance().add(amount)); |
61 | 61 |
|
62 | 62 | return repository.save(Transfer.ofCompleted(source, destination, amount)); |
63 | | - } catch (ObjectOptimisticLockingFailureException | BusinessException exception) { |
64 | | - logger.warn(exception.getMessage(), exception); |
65 | | - transferLogService.save(Transfer.ofFailed(source, destination, transferRequest.amount())); |
| 63 | + } catch (BusinessException exception) { |
| 64 | + var failedTransfer = Transfer.ofFailed(source, destination, transferRequest.amount()); |
| 65 | + logger.warn(failedTransfer.toString(), exception); |
| 66 | + transferLogService.save(failedTransfer); |
| 67 | + throw exception; |
| 68 | + } catch (ObjectOptimisticLockingFailureException exception) { |
| 69 | + var transfer = Transfer.ofFailed(source, destination, transferRequest.amount()); |
| 70 | + logger.error(transfer.toString(), exception); |
| 71 | + transferLogService.save(transfer); |
66 | 72 | throw exception; |
67 | 73 | } |
68 | 74 | } |
|
0 commit comments