From d7859ac240222603623be048e60f2cbb44800dfd Mon Sep 17 00:00:00 2001 From: xyzmaker123 Date: Tue, 26 Apr 2022 09:18:22 +0200 Subject: [PATCH 1/3] Fix NPE when editing same bank account name --- .../java/bisq/desktop/components/paymentmethods/BankForm.java | 2 +- .../bisq/desktop/components/paymentmethods/GeneralBankForm.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java index 7ccb55821bf..58c695a1e72 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java @@ -406,7 +406,7 @@ public void updateAllInputsValid() { boolean result = isAccountNameValid() && paymentAccount.getSingleTradeCurrency() != null && getCountryBasedPaymentAccount().getCountry() != null - && holderNameInputTextField.getValidator().validate(bankAccountPayload.getHolderName()).isValid; + && (holderNameInputTextField == null || holderNameInputTextField.getValidator().validate(bankAccountPayload.getHolderName()).isValid); String countryCode = bankAccountPayload.getCountryCode(); result = getValidationResult(result, countryCode, diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java index 2889abc1301..7eba5eab8f6 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java @@ -201,7 +201,7 @@ boolean getValidationResult(boolean result, String countryCode, String bankName, if (BankUtil.isNationalAccountIdRequired(countryCode)) result = result && nationalAccountIdInputTextField.getValidator().validate(nationalAccountId).isValid; } else { // only account number not empty validation - result = result && accountNrInputTextField.getValidator().validate(accountNr).isValid; + result = result && (accountNrInputTextField == null || accountNrInputTextField.getValidator().validate(accountNr).isValid); } return result; From 3619278e510b5ef79209fd87154e73a66601fad5 Mon Sep 17 00:00:00 2001 From: xyzmaker123 Date: Tue, 26 Apr 2022 12:31:27 +0200 Subject: [PATCH 2/3] Fix NPE when switching to not use a custom account name --- .../payment/payload/BankAccountPayload.java | 12 ++--- .../payload/CashDepositAccountPayload.java | 12 ++--- .../components/paymentmethods/BankForm.java | 2 +- .../paymentmethods/CashDepositForm.java | 4 +- .../paymentmethods/GeneralBankForm.java | 45 +++++++++++++++++-- .../paymentmethods/GeneralUsBankForm.java | 2 +- 6 files changed, 53 insertions(+), 24 deletions(-) diff --git a/core/src/main/java/bisq/core/payment/payload/BankAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/BankAccountPayload.java index 3abfa8b2aea..31a086a60e6 100644 --- a/core/src/main/java/bisq/core/payment/payload/BankAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/BankAccountPayload.java @@ -41,18 +41,14 @@ @Slf4j public abstract class BankAccountPayload extends CountryBasedPaymentAccountPayload implements PayloadWithHolderName { protected String holderName = ""; - @Nullable - protected String bankName; - @Nullable - protected String branchId; - @Nullable - protected String accountNr; + protected String bankName = ""; + protected String branchId = ""; + protected String accountNr = ""; @Nullable protected String accountType; @Nullable protected String holderTaxId; - @Nullable - protected String bankId; + protected String bankId = ""; @Nullable protected String nationalAccountId; diff --git a/core/src/main/java/bisq/core/payment/payload/CashDepositAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/CashDepositAccountPayload.java index afa97764a9d..e60fa9e4402 100644 --- a/core/src/main/java/bisq/core/payment/payload/CashDepositAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/CashDepositAccountPayload.java @@ -46,20 +46,16 @@ public class CashDepositAccountPayload extends CountryBasedPaymentAccountPayload private String holderName = ""; @Nullable private String holderEmail; - @Nullable - private String bankName; - @Nullable - private String branchId; - @Nullable - private String accountNr; + private String bankName = ""; + private String branchId = ""; + private String accountNr = ""; @Nullable private String accountType; @Nullable private String requirements; @Nullable private String holderTaxId; - @Nullable - private String bankId; + private String bankId = ""; @Nullable protected String nationalAccountId; diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java index 58c695a1e72..44bb9194665 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java @@ -406,7 +406,7 @@ public void updateAllInputsValid() { boolean result = isAccountNameValid() && paymentAccount.getSingleTradeCurrency() != null && getCountryBasedPaymentAccount().getCountry() != null - && (holderNameInputTextField == null || holderNameInputTextField.getValidator().validate(bankAccountPayload.getHolderName()).isValid); + && inputValidator.validate(bankAccountPayload.getHolderName()).isValid; String countryCode = bankAccountPayload.getCountryCode(); result = getValidationResult(result, countryCode, diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java index 5495cc7aa40..ab645b53426 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java @@ -454,8 +454,8 @@ public void updateAllInputsValid() { boolean result = isAccountNameValid() && paymentAccount.getSingleTradeCurrency() != null && getCountryBasedPaymentAccount().getCountry() != null - && holderNameInputTextField.getValidator().validate(cashDepositAccountPayload.getHolderName()).isValid - && emailInputTextField.getValidator().validate(cashDepositAccountPayload.getHolderEmail()).isValid; + && inputValidator.validate(cashDepositAccountPayload.getHolderName()).isValid + && emailValidator.validate(cashDepositAccountPayload.getHolderEmail()).isValid; String countryCode = cashDepositAccountPayload.getCountryCode(); result = getValidationResult(result, countryCode, diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java index 7eba5eab8f6..6461ee9c839 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java @@ -10,6 +10,8 @@ import bisq.core.locale.BankUtil; import bisq.core.locale.Res; import bisq.core.payment.PaymentAccount; +import bisq.core.payment.payload.BankAccountPayload; +import bisq.core.payment.payload.CashDepositAccountPayload; import bisq.core.payment.payload.CountryBasedPaymentAccountPayload; import bisq.core.util.coin.CoinFormatter; import bisq.core.util.validation.InputValidator; @@ -136,26 +138,61 @@ void updateHolderIDInput(String countryCode, boolean requiresHolderId) { } void autoFillAccountTextFields(CountryBasedPaymentAccountPayload paymentAccountPayload) { + + + BankAccountPayload bankAccountPayload = null; + CashDepositAccountPayload cashDepositAccountPayload = null; + if (paymentAccountPayload instanceof BankAccountPayload) { + bankAccountPayload = (BankAccountPayload) paymentAccountPayload; + } else if (paymentAccountPayload instanceof CashDepositAccountPayload) { + cashDepositAccountPayload = (CashDepositAccountPayload) paymentAccountPayload; + } + if (useCustomAccountNameToggleButton != null && !useCustomAccountNameToggleButton.isSelected()) { String bankId = null; String countryCode = paymentAccountPayload.getCountryCode(); if (countryCode == null) countryCode = ""; if (BankUtil.isBankIdRequired(countryCode)) { - bankId = bankIdInputTextField.getText().trim(); + if (bankAccountPayload != null) { + bankId = bankAccountPayload.getBankId(); + } else if (cashDepositAccountPayload != null) { + bankId = cashDepositAccountPayload.getBankId(); + } else { + bankId = bankIdInputTextField.getText().trim(); + } if (bankId.length() > 9) bankId = StringUtils.abbreviate(bankId, 9); } else if (BankUtil.isBranchIdRequired(countryCode)) { - bankId = branchIdInputTextField.getText().trim(); + if (bankAccountPayload != null) { + bankId = bankAccountPayload.getBranchId(); + } else if (cashDepositAccountPayload != null) { + bankId = cashDepositAccountPayload.getBranchId(); + } else { + bankId = branchIdInputTextField.getText().trim(); + } if (bankId.length() > 9) bankId = StringUtils.abbreviate(bankId, 9); } else if (BankUtil.isBankNameRequired(countryCode)) { - bankId = bankNameInputTextField.getText().trim(); + if (bankAccountPayload != null) { + bankId = bankAccountPayload.getBankName(); + } else if (cashDepositAccountPayload != null) { + bankId = cashDepositAccountPayload.getBankName(); + } else { + bankId = bankNameInputTextField.getText().trim(); + } if (bankId.length() > 9) bankId = StringUtils.abbreviate(bankId, 9); } - String accountNr = accountNrInputTextField.getText().trim(); + String accountNr; + if (bankAccountPayload != null) { + accountNr = bankAccountPayload.getAccountNr(); + } else if (cashDepositAccountPayload != null) { + accountNr = cashDepositAccountPayload.getAccountNr(); + } else { + accountNr = accountNrInputTextField.getText().trim(); + } if (accountNr.length() > 9) accountNr = StringUtils.abbreviate(accountNr, 9); diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java index 85c17ad6ec8..9c0841036b7 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java @@ -165,6 +165,6 @@ protected void onCountrySelected(Country country) { @Override protected void autoFillNameTextField() { - autoFillAccountTextFields((CountryBasedPaymentAccountPayload) paymentAccount.getPaymentAccountPayload()); + autoFillAccountTextFields((BankAccountPayload) paymentAccount.getPaymentAccountPayload()); } } From a696a2431eb25d3658cb50d2aef309b15cf3b007 Mon Sep 17 00:00:00 2001 From: xyzmaker123 Date: Tue, 26 Apr 2022 13:48:54 +0200 Subject: [PATCH 3/3] Refactor autoFillNameTextField in GeneralBankForm --- .../components/paymentmethods/BankForm.java | 5 -- .../paymentmethods/CashDepositForm.java | 26 +++++-- .../paymentmethods/GeneralBankForm.java | 68 ++++++++----------- .../paymentmethods/GeneralUsBankForm.java | 6 -- 4 files changed, 48 insertions(+), 57 deletions(-) diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java index 44bb9194665..848db9f6062 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java @@ -396,11 +396,6 @@ private void addHolderNameAndId() { }); } - @Override - protected void autoFillNameTextField() { - autoFillAccountTextFields(bankAccountPayload); - } - @Override public void updateAllInputsValid() { boolean result = isAccountNameValid() diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java index ab645b53426..ab319063deb 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java @@ -31,6 +31,7 @@ import bisq.core.locale.TradeCurrency; import bisq.core.payment.CountryBasedPaymentAccount; import bisq.core.payment.PaymentAccount; +import bisq.core.payment.payload.BankAccountPayload; import bisq.core.payment.payload.CashDepositAccountPayload; import bisq.core.payment.payload.PaymentAccountPayload; import bisq.core.util.coin.CoinFormatter; @@ -444,11 +445,6 @@ private void addHolderNameAndId() { }); } - @Override - protected void autoFillNameTextField() { - autoFillAccountTextFields(cashDepositAccountPayload); - } - @Override public void updateAllInputsValid() { boolean result = isAccountNameValid() @@ -483,4 +479,24 @@ private void addHolderNameAndIdForDisplayAccount() { cashDepositAccountPayload.getHolderName()); } } + + @Override + protected String getBankId() { + return ((CashDepositAccountPayload) paymentAccount.paymentAccountPayload).getBankId(); + } + + @Override + protected String getBranchId() { + return ((CashDepositAccountPayload) paymentAccount.paymentAccountPayload).getBranchId(); + } + + @Override + protected String getBankName() { + return ((CashDepositAccountPayload) paymentAccount.paymentAccountPayload).getBankName(); + } + + @Override + protected String getAccountNr() { + return ((CashDepositAccountPayload) paymentAccount.paymentAccountPayload).getAccountNr(); + } } diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java index 6461ee9c839..dfb843bff8f 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralBankForm.java @@ -137,62 +137,28 @@ void updateHolderIDInput(String countryCode, boolean requiresHolderId) { } } - void autoFillAccountTextFields(CountryBasedPaymentAccountPayload paymentAccountPayload) { - - - BankAccountPayload bankAccountPayload = null; - CashDepositAccountPayload cashDepositAccountPayload = null; - if (paymentAccountPayload instanceof BankAccountPayload) { - bankAccountPayload = (BankAccountPayload) paymentAccountPayload; - } else if (paymentAccountPayload instanceof CashDepositAccountPayload) { - cashDepositAccountPayload = (CashDepositAccountPayload) paymentAccountPayload; - } - + @Override + protected void autoFillNameTextField() { if (useCustomAccountNameToggleButton != null && !useCustomAccountNameToggleButton.isSelected()) { String bankId = null; - String countryCode = paymentAccountPayload.getCountryCode(); + String countryCode = getCountryCode(); if (countryCode == null) countryCode = ""; if (BankUtil.isBankIdRequired(countryCode)) { - if (bankAccountPayload != null) { - bankId = bankAccountPayload.getBankId(); - } else if (cashDepositAccountPayload != null) { - bankId = cashDepositAccountPayload.getBankId(); - } else { - bankId = bankIdInputTextField.getText().trim(); - } + bankId = getBankId(); if (bankId.length() > 9) bankId = StringUtils.abbreviate(bankId, 9); } else if (BankUtil.isBranchIdRequired(countryCode)) { - if (bankAccountPayload != null) { - bankId = bankAccountPayload.getBranchId(); - } else if (cashDepositAccountPayload != null) { - bankId = cashDepositAccountPayload.getBranchId(); - } else { - bankId = branchIdInputTextField.getText().trim(); - } + bankId = getBranchId(); if (bankId.length() > 9) bankId = StringUtils.abbreviate(bankId, 9); } else if (BankUtil.isBankNameRequired(countryCode)) { - if (bankAccountPayload != null) { - bankId = bankAccountPayload.getBankName(); - } else if (cashDepositAccountPayload != null) { - bankId = cashDepositAccountPayload.getBankName(); - } else { - bankId = bankNameInputTextField.getText().trim(); - } + bankId = getBankName(); if (bankId.length() > 9) bankId = StringUtils.abbreviate(bankId, 9); } - String accountNr; - if (bankAccountPayload != null) { - accountNr = bankAccountPayload.getAccountNr(); - } else if (cashDepositAccountPayload != null) { - accountNr = cashDepositAccountPayload.getAccountNr(); - } else { - accountNr = accountNrInputTextField.getText().trim(); - } + String accountNr = getAccountNr(); if (accountNr.length() > 9) accountNr = StringUtils.abbreviate(accountNr, 9); @@ -243,4 +209,24 @@ boolean getValidationResult(boolean result, String countryCode, String bankName, return result; } + + protected String getBankId() { + return ((BankAccountPayload) paymentAccount.paymentAccountPayload).getBankId(); + } + + protected String getBranchId() { + return ((BankAccountPayload) paymentAccount.paymentAccountPayload).getBranchId(); + } + + protected String getBankName() { + return ((BankAccountPayload) paymentAccount.paymentAccountPayload).getBankName(); + } + + protected String getAccountNr() { + return ((BankAccountPayload) paymentAccount.paymentAccountPayload).getAccountNr(); + } + + protected String getCountryCode() { + return ((CountryBasedPaymentAccountPayload) paymentAccount.paymentAccountPayload).getCountryCode(); + } } diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java index 9c0841036b7..cc2d6feddec 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralUsBankForm.java @@ -30,7 +30,6 @@ import bisq.core.payment.CountryBasedPaymentAccount; import bisq.core.payment.PaymentAccount; import bisq.core.payment.payload.BankAccountPayload; -import bisq.core.payment.payload.CountryBasedPaymentAccountPayload; import bisq.core.payment.payload.PaymentAccountPayload; import bisq.core.util.coin.CoinFormatter; import bisq.core.util.validation.InputValidator; @@ -162,9 +161,4 @@ protected void onCountrySelected(Country country) { paymentAccount.setSingleTradeCurrency(currency); } } - - @Override - protected void autoFillNameTextField() { - autoFillAccountTextFields((BankAccountPayload) paymentAccount.getPaymentAccountPayload()); - } }