mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 15:10:44 +01:00
Use getter/setter instead of public fields in PlaceOfferModel
This commit is contained in:
parent
8f06131a58
commit
08affae63a
6 changed files with 50 additions and 55 deletions
|
@ -24,23 +24,27 @@ import io.bisq.core.btc.wallet.TradeWalletService;
|
|||
import io.bisq.core.offer.Offer;
|
||||
import io.bisq.core.offer.OfferBookService;
|
||||
import io.bisq.core.user.User;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Slf4j
|
||||
@Getter
|
||||
public class PlaceOfferModel implements Model {
|
||||
private static final Logger log = LoggerFactory.getLogger(PlaceOfferModel.class);
|
||||
private final Offer offer;
|
||||
private final Coin reservedFundsForOffer;
|
||||
private final boolean useSavingsWallet;
|
||||
private final BtcWalletService walletService;
|
||||
private final TradeWalletService tradeWalletService;
|
||||
private final BsqWalletService bsqWalletService;
|
||||
private final OfferBookService offerBookService;
|
||||
private final User user;
|
||||
|
||||
public final Offer offer;
|
||||
public final Coin reservedFundsForOffer;
|
||||
public final boolean useSavingsWallet;
|
||||
public final BtcWalletService walletService;
|
||||
public final TradeWalletService tradeWalletService;
|
||||
public final BsqWalletService bsqWalletService;
|
||||
public final OfferBookService offerBookService;
|
||||
public final User user;
|
||||
public boolean offerAddedToOfferBook;
|
||||
@Setter
|
||||
private boolean offerAddedToOfferBook;
|
||||
@Setter
|
||||
private Transaction transaction;
|
||||
|
||||
public PlaceOfferModel(Offer offer,
|
||||
|
@ -61,21 +65,11 @@ public class PlaceOfferModel implements Model {
|
|||
this.user = user;
|
||||
}
|
||||
|
||||
public void setTransaction(Transaction transaction) {
|
||||
this.transaction = transaction;
|
||||
}
|
||||
|
||||
public Transaction getTransaction() {
|
||||
return transaction;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class PlaceOfferProtocol {
|
|||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public void placeOffer() {
|
||||
log.debug("model.offer.id" + model.offer.getId());
|
||||
log.debug("model.offer.id" + model.getOffer().getId());
|
||||
TaskRunner<PlaceOfferModel> taskRunner = new TaskRunner<>(model,
|
||||
() -> {
|
||||
log.debug("sequence at handleRequestTakeOfferMessage completed");
|
||||
|
@ -58,10 +58,10 @@ public class PlaceOfferProtocol {
|
|||
(errorMessage) -> {
|
||||
log.error(errorMessage);
|
||||
|
||||
if (model.offerAddedToOfferBook) {
|
||||
model.offerBookService.removeOffer(model.offer.getOfferPayload(),
|
||||
if (model.isOfferAddedToOfferBook()) {
|
||||
model.getOfferBookService().removeOffer(model.getOffer().getOfferPayload(),
|
||||
() -> {
|
||||
model.offerAddedToOfferBook = false;
|
||||
model.setOfferAddedToOfferBook(false);
|
||||
log.debug("OfferPayload removed from offer book.");
|
||||
},
|
||||
log::error);
|
||||
|
|
|
@ -36,19 +36,19 @@ public class AddOfferToRemoteOfferBook extends Task<PlaceOfferModel> {
|
|||
protected void run() {
|
||||
try {
|
||||
runInterceptHook();
|
||||
model.offerBookService.addOffer(model.offer,
|
||||
model.getOfferBookService().addOffer(model.getOffer(),
|
||||
() -> {
|
||||
model.offerAddedToOfferBook = true;
|
||||
model.setOfferAddedToOfferBook(true);
|
||||
complete();
|
||||
},
|
||||
errorMessage -> {
|
||||
model.offer.setErrorMessage("Could not add offer to offerbook.\n" +
|
||||
model.getOffer().setErrorMessage("Could not add offer to offerbook.\n" +
|
||||
"Please check your network connection and try again.");
|
||||
|
||||
failed(errorMessage);
|
||||
});
|
||||
} catch (Throwable t) {
|
||||
model.offer.setErrorMessage("An error occurred.\n" +
|
||||
model.getOffer().setErrorMessage("An error occurred.\n" +
|
||||
"Error message:\n"
|
||||
+ t.getMessage());
|
||||
|
||||
|
|
|
@ -42,13 +42,13 @@ public class BroadcastMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
protected void run() {
|
||||
try {
|
||||
runInterceptHook();
|
||||
model.tradeWalletService.broadcastTx(model.getTransaction(), new FutureCallback<Transaction>() {
|
||||
model.getTradeWalletService().broadcastTx(model.getTransaction(), new FutureCallback<Transaction>() {
|
||||
@Override
|
||||
public void onSuccess(Transaction transaction) {
|
||||
log.debug("Broadcast of offer fee payment succeeded: transaction = " + transaction.toString());
|
||||
|
||||
if (model.getTransaction().getHashAsString().equals(transaction.getHashAsString())) {
|
||||
model.offer.setState(Offer.State.OFFER_FEE_PAID);
|
||||
model.getOffer().setState(Offer.State.OFFER_FEE_PAID);
|
||||
// No tx malleability happened after broadcast (still not in blockchain)
|
||||
complete();
|
||||
} else {
|
||||
|
@ -56,19 +56,19 @@ public class BroadcastMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
// Tx malleability happened after broadcast. We first remove the malleable offer.
|
||||
// Then we publish the changed offer to the P2P network again after setting the new TxId.
|
||||
// Normally we use a delay for broadcasting to the peers, but at shut down we want to get it fast out
|
||||
model.offerBookService.removeOffer(model.offer.getOfferPayload(),
|
||||
model.getOfferBookService().removeOffer(model.getOffer().getOfferPayload(),
|
||||
() -> {
|
||||
log.debug("We store now the changed txID to the offer and add that again.");
|
||||
// We store now the changed txID to the offer and add that again.
|
||||
model.offer.setOfferFeePaymentTxId(transaction.getHashAsString());
|
||||
model.getOffer().setOfferFeePaymentTxId(transaction.getHashAsString());
|
||||
model.setTransaction(transaction);
|
||||
model.offerBookService.addOffer(model.offer,
|
||||
model.getOfferBookService().addOffer(model.getOffer(),
|
||||
BroadcastMakerFeeTx.this::complete,
|
||||
errorMessage -> {
|
||||
log.error("addOffer failed");
|
||||
addOfferFailed = true;
|
||||
updateStateOnFault();
|
||||
model.offer.setErrorMessage("An error occurred when adding the offer to the P2P network.\n" +
|
||||
model.getOffer().setErrorMessage("An error occurred when adding the offer to the P2P network.\n" +
|
||||
"Error message:\n"
|
||||
+ errorMessage);
|
||||
failed(errorMessage);
|
||||
|
@ -78,7 +78,7 @@ public class BroadcastMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
log.error("removeOffer failed");
|
||||
removeOfferFailed = true;
|
||||
updateStateOnFault();
|
||||
model.offer.setErrorMessage("An error occurred when removing the offer from the P2P network.\n" +
|
||||
model.getOffer().setErrorMessage("An error occurred when removing the offer from the P2P network.\n" +
|
||||
"Error message:\n"
|
||||
+ errorMessage);
|
||||
failed(errorMessage);
|
||||
|
@ -89,14 +89,14 @@ public class BroadcastMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
@Override
|
||||
public void onFailure(@NotNull Throwable t) {
|
||||
updateStateOnFault();
|
||||
model.offer.setErrorMessage("An error occurred.\n" +
|
||||
model.getOffer().setErrorMessage("An error occurred.\n" +
|
||||
"Error message:\n"
|
||||
+ t.getMessage());
|
||||
failed(t);
|
||||
}
|
||||
});
|
||||
} catch (Throwable t) {
|
||||
model.offer.setErrorMessage("An error occurred.\n" +
|
||||
model.getOffer().setErrorMessage("An error occurred.\n" +
|
||||
"Error message:\n"
|
||||
+ t.getMessage());
|
||||
failed(t);
|
||||
|
@ -106,7 +106,7 @@ public class BroadcastMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
private void updateStateOnFault() {
|
||||
if (!removeOfferFailed && !addOfferFailed) {
|
||||
// If broadcast fails we need to remove offer from offerbook
|
||||
model.offerBookService.removeOffer(model.offer.getOfferPayload(),
|
||||
model.getOfferBookService().removeOffer(model.getOffer().getOfferPayload(),
|
||||
() -> log.debug("OfferPayload removed from offerbook because broadcast failed."),
|
||||
errorMessage -> log.error("removeOffer failed. " + errorMessage));
|
||||
}
|
||||
|
|
|
@ -50,29 +50,30 @@ public class CreateMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
|
||||
@Override
|
||||
protected void run() {
|
||||
Offer offer = model.offer;
|
||||
Offer offer = model.getOffer();
|
||||
try {
|
||||
runInterceptHook();
|
||||
|
||||
NodeAddress selectedArbitratorNodeAddress = ArbitratorSelectionRule.select(model.user.getAcceptedArbitratorAddresses(),
|
||||
model.offer);
|
||||
NodeAddress selectedArbitratorNodeAddress = ArbitratorSelectionRule.select(model.getUser().getAcceptedArbitratorAddresses(),
|
||||
model.getOffer());
|
||||
log.debug("selectedArbitratorAddress " + selectedArbitratorNodeAddress);
|
||||
Arbitrator selectedArbitrator = model.user.getAcceptedArbitratorByAddress(selectedArbitratorNodeAddress);
|
||||
Arbitrator selectedArbitrator = model.getUser().getAcceptedArbitratorByAddress(selectedArbitratorNodeAddress);
|
||||
checkNotNull(selectedArbitrator, "selectedArbitrator must not be null at CreateOfferFeeTx");
|
||||
BtcWalletService walletService = model.walletService;
|
||||
BtcWalletService walletService = model.getWalletService();
|
||||
String id = offer.getId();
|
||||
Address fundingAddress = walletService.getOrCreateAddressEntry(id, AddressEntry.Context.OFFER_FUNDING).getAddress();
|
||||
Address reservedForTradeAddress = walletService.getOrCreateAddressEntry(id,
|
||||
AddressEntry.Context.RESERVED_FOR_TRADE).getAddress();
|
||||
Address changeAddress = walletService.getOrCreateAddressEntry(AddressEntry.Context.AVAILABLE).getAddress();
|
||||
|
||||
final TradeWalletService tradeWalletService1 = model.getTradeWalletService();
|
||||
if (offer.isCurrencyForMakerFeeBtc()) {
|
||||
Transaction btcTransaction = model.tradeWalletService.createBtcTradingFeeTx(
|
||||
Transaction btcTransaction = tradeWalletService1.createBtcTradingFeeTx(
|
||||
fundingAddress,
|
||||
reservedForTradeAddress,
|
||||
changeAddress,
|
||||
model.reservedFundsForOffer.subtract(offer.getMakerFee()),
|
||||
model.useSavingsWallet,
|
||||
model.getReservedFundsForOffer().subtract(offer.getMakerFee()),
|
||||
model.isUseSavingsWallet(),
|
||||
offer.getMakerFee(),
|
||||
offer.getTxFee(),
|
||||
selectedArbitrator.getBtcAddress());
|
||||
|
@ -85,18 +86,18 @@ public class CreateMakerFeeTx extends Task<PlaceOfferModel> {
|
|||
|
||||
complete();
|
||||
} else {
|
||||
final BsqWalletService bsqWalletService = model.bsqWalletService;
|
||||
final TradeWalletService tradeWalletService = model.tradeWalletService;
|
||||
Transaction preparedBurnFeeTx = model.bsqWalletService.getPreparedBurnFeeTx(offer.getMakerFee());
|
||||
final BsqWalletService bsqWalletService = model.getBsqWalletService();
|
||||
final TradeWalletService tradeWalletService = tradeWalletService1;
|
||||
Transaction preparedBurnFeeTx = model.getBsqWalletService().getPreparedBurnFeeTx(offer.getMakerFee());
|
||||
Transaction txWithBsqFee = tradeWalletService.completeBsqTradingFeeTx(preparedBurnFeeTx,
|
||||
fundingAddress,
|
||||
reservedForTradeAddress,
|
||||
changeAddress,
|
||||
model.reservedFundsForOffer,
|
||||
model.useSavingsWallet,
|
||||
model.getReservedFundsForOffer(),
|
||||
model.isUseSavingsWallet(),
|
||||
offer.getTxFee());
|
||||
|
||||
Transaction signedTx = model.bsqWalletService.signTx(txWithBsqFee);
|
||||
Transaction signedTx = model.getBsqWalletService().signTx(txWithBsqFee);
|
||||
WalletService.checkAllScriptSignaturesForTx(signedTx);
|
||||
bsqWalletService.commitTx(txWithBsqFee);
|
||||
// We need to create another instance, otherwise the tx would trigger an invalid state exception
|
||||
|
|
|
@ -44,7 +44,7 @@ public class ValidateOffer extends Task<PlaceOfferModel> {
|
|||
|
||||
@Override
|
||||
protected void run() {
|
||||
Offer offer = model.offer;
|
||||
Offer offer = model.getOffer();
|
||||
try {
|
||||
runInterceptHook();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue