diff --git a/src/main/java/com/nynja/walletservice/constant/Constants.java b/src/main/java/com/nynja/walletservice/constant/Constants.java index 7c3fef4a61c01385800dcd4584da41f6fdb40868..94601a8ba3a2d6c98964426c392798ff2acf760f 100644 --- a/src/main/java/com/nynja/walletservice/constant/Constants.java +++ b/src/main/java/com/nynja/walletservice/constant/Constants.java @@ -41,7 +41,7 @@ public interface Constants { String ETH_TRANSFERRED = "Account {} has successfully received {} {}."; String ETH_TRANSFER_FAIL = "Error sending ether to user. Receiver: %s. Reason: %s"; String SIGNED_TRANSACTION_SENT = "The signed transaction has been sent. Hash: {}"; - String SIGNED_TRANSACTION_FAIL = "Failed to send signed transaction. Reason: {}"; + String SIGNED_TRANSACTION_FAIL = "Failed to send signed transaction. Reason: %s"; String TRANSACTION_NOT_FOUND = "Transaction with the hash %s is not found"; } diff --git a/src/main/java/com/nynja/walletservice/exception/GlobalExceptionHandler.java b/src/main/java/com/nynja/walletservice/exception/GlobalExceptionHandler.java index 38e16a3a0f0fa0af337a69280d590ab7676609ed..e965a67a62d1acf764492a3a0d1e4322d483bfef 100644 --- a/src/main/java/com/nynja/walletservice/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/nynja/walletservice/exception/GlobalExceptionHandler.java @@ -66,6 +66,6 @@ public class GlobalExceptionHandler { private ResponseEntity compose(HttpStatus status, String message) { return ResponseEntity.status(status) - .body(new ExceptionDto(status.toString(), message)); + .body(new ExceptionDto(status.toString(), message)); } } diff --git a/src/main/java/com/nynja/walletservice/exception/TransactionFailedException.java b/src/main/java/com/nynja/walletservice/exception/TransactionFailedException.java new file mode 100644 index 0000000000000000000000000000000000000000..8e58f8637485d014cce6cd3f19dba427a1d7ba02 --- /dev/null +++ b/src/main/java/com/nynja/walletservice/exception/TransactionFailedException.java @@ -0,0 +1,12 @@ +package com.nynja.walletservice.exception; + +public class TransactionFailedException extends RuntimeException { + + public TransactionFailedException(String message) { + super(message); + } + + public TransactionFailedException(String pattern, Object ... args) { + super(String.format(pattern, args)); + } +} diff --git a/src/main/java/com/nynja/walletservice/service/Web3JService.java b/src/main/java/com/nynja/walletservice/service/Web3JService.java index 9294b5ea4672fa261a008004faf98067d5e88d5e..9bf61eb56b635221260a937bee223c6cf846efc2 100644 --- a/src/main/java/com/nynja/walletservice/service/Web3JService.java +++ b/src/main/java/com/nynja/walletservice/service/Web3JService.java @@ -2,6 +2,7 @@ package com.nynja.walletservice.service; import com.nynja.walletservice.config.EthereumConfig; import com.nynja.walletservice.dto.TransactionResponseDto; +import com.nynja.walletservice.exception.TransactionFailedException; import com.nynja.walletservice.exception.TransactionNotFoundException; import com.nynja.walletservice.provider.Web3jProvider; import lombok.extern.slf4j.Slf4j; @@ -15,7 +16,6 @@ import org.web3j.protocol.core.methods.response.*; import org.web3j.tx.RawTransactionManager; import org.web3j.tx.Transfer; import org.web3j.utils.Convert; -import org.web3j.utils.Numeric; import java.io.IOException; import java.math.BigDecimal; @@ -38,8 +38,6 @@ public class Web3JService { @Value("${web3j.interval}") private Integer interval; - private static final String TRANSACTION_FAILED = "transaction_failed"; - private final Web3jProvider web3jProvider; private final EthereumConfig ethConfig; @@ -69,8 +67,7 @@ public class Web3JService { log.info(ETH_TRANSFERRED, toAddress, value, currency); return new TransactionResponseDto<>(tr.getTransactionHash(), value.toString()); }).exceptionally(ex -> { - log.error(String.format(ETH_TRANSFER_FAIL, toAddress, ex.getMessage())); - return new TransactionResponseDto<>(TRANSACTION_FAILED, ex.getMessage()); + throw new TransactionFailedException(ETH_TRANSFER_FAIL, toAddress, ex.getCause().getMessage()); }); } @@ -89,8 +86,7 @@ public class Web3JService { return new TransactionResponseDto<>(ethSendTransaction.getTransactionHash(), ""); } }).exceptionally(ex -> { - log.error(SIGNED_TRANSACTION_FAIL, ex.getMessage()); - return new TransactionResponseDto<>(TRANSACTION_FAILED, ex.getMessage()); + throw new TransactionFailedException(SIGNED_TRANSACTION_FAIL, ex.getCause().getMessage()); }); }