Make processModel in Trade final and pass in constructor instead of in init method

This commit is contained in:
chimp1984 2020-09-26 19:36:07 -05:00
parent f0a30221ab
commit cabc5af2c6
No known key found for this signature in database
GPG key ID: 9801B4EC591F90E3
8 changed files with 86 additions and 58 deletions

View file

@ -21,6 +21,7 @@ import bisq.core.btc.wallet.BtcWalletService;
import bisq.core.offer.Offer; import bisq.core.offer.Offer;
import bisq.core.proto.CoreProtoResolver; import bisq.core.proto.CoreProtoResolver;
import bisq.core.trade.protocol.BuyerAsMakerProtocol; import bisq.core.trade.protocol.BuyerAsMakerProtocol;
import bisq.core.trade.protocol.ProcessModel;
import bisq.network.p2p.NodeAddress; import bisq.network.p2p.NodeAddress;
@ -47,7 +48,8 @@ public final class BuyerAsMakerTrade extends BuyerTrade implements MakerTrade {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
txFee, txFee,
takeOfferFee, takeOfferFee,
@ -56,7 +58,8 @@ public final class BuyerAsMakerTrade extends BuyerTrade implements MakerTrade {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@ -76,6 +79,7 @@ public final class BuyerAsMakerTrade extends BuyerTrade implements MakerTrade {
BtcWalletService btcWalletService, BtcWalletService btcWalletService,
CoreProtoResolver coreProtoResolver) { CoreProtoResolver coreProtoResolver) {
protobuf.Trade proto = buyerAsMakerTradeProto.getTrade(); protobuf.Trade proto = buyerAsMakerTradeProto.getTrade();
ProcessModel processModel = ProcessModel.fromProto(proto.getProcessModel(), coreProtoResolver);
BuyerAsMakerTrade trade = new BuyerAsMakerTrade( BuyerAsMakerTrade trade = new BuyerAsMakerTrade(
Offer.fromProto(proto.getOffer()), Offer.fromProto(proto.getOffer()),
Coin.valueOf(proto.getTxFeeAsLong()), Coin.valueOf(proto.getTxFeeAsLong()),
@ -85,7 +89,8 @@ public final class BuyerAsMakerTrade extends BuyerTrade implements MakerTrade {
proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null, proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null,
proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null, proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null,
storage, storage,
btcWalletService); btcWalletService,
processModel);
trade.setTradeAmountAsLong(proto.getTradeAmountAsLong()); trade.setTradeAmountAsLong(proto.getTradeAmountAsLong());
trade.setTradePrice(proto.getTradePrice()); trade.setTradePrice(proto.getTradePrice());

View file

@ -21,6 +21,7 @@ import bisq.core.btc.wallet.BtcWalletService;
import bisq.core.offer.Offer; import bisq.core.offer.Offer;
import bisq.core.proto.CoreProtoResolver; import bisq.core.proto.CoreProtoResolver;
import bisq.core.trade.protocol.BuyerAsTakerProtocol; import bisq.core.trade.protocol.BuyerAsTakerProtocol;
import bisq.core.trade.protocol.ProcessModel;
import bisq.network.p2p.NodeAddress; import bisq.network.p2p.NodeAddress;
@ -50,7 +51,8 @@ public final class BuyerAsTakerTrade extends BuyerTrade implements TakerTrade {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
tradeAmount, tradeAmount,
txFee, txFee,
@ -62,7 +64,8 @@ public final class BuyerAsTakerTrade extends BuyerTrade implements TakerTrade {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
@ -83,6 +86,7 @@ public final class BuyerAsTakerTrade extends BuyerTrade implements TakerTrade {
BtcWalletService btcWalletService, BtcWalletService btcWalletService,
CoreProtoResolver coreProtoResolver) { CoreProtoResolver coreProtoResolver) {
protobuf.Trade proto = buyerAsTakerTradeProto.getTrade(); protobuf.Trade proto = buyerAsTakerTradeProto.getTrade();
ProcessModel processModel = ProcessModel.fromProto(proto.getProcessModel(), coreProtoResolver);
return fromProto(new BuyerAsTakerTrade( return fromProto(new BuyerAsTakerTrade(
Offer.fromProto(proto.getOffer()), Offer.fromProto(proto.getOffer()),
Coin.valueOf(proto.getTradeAmountAsLong()), Coin.valueOf(proto.getTradeAmountAsLong()),
@ -95,7 +99,8 @@ public final class BuyerAsTakerTrade extends BuyerTrade implements TakerTrade {
proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null, proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null,
proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null, proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null,
storage, storage,
btcWalletService), btcWalletService,
processModel),
proto, proto,
coreProtoResolver); coreProtoResolver);
} }

View file

@ -19,6 +19,7 @@ package bisq.core.trade;
import bisq.core.btc.wallet.BtcWalletService; import bisq.core.btc.wallet.BtcWalletService;
import bisq.core.offer.Offer; import bisq.core.offer.Offer;
import bisq.core.trade.protocol.ProcessModel;
import bisq.network.p2p.NodeAddress; import bisq.network.p2p.NodeAddress;
@ -45,7 +46,8 @@ public abstract class BuyerTrade extends Trade {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
tradeAmount, tradeAmount,
txFee, txFee,
@ -57,7 +59,8 @@ public abstract class BuyerTrade extends Trade {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
BuyerTrade(Offer offer, BuyerTrade(Offer offer,
@ -68,7 +71,8 @@ public abstract class BuyerTrade extends Trade {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
txFee, txFee,
takerFee, takerFee,
@ -77,7 +81,8 @@ public abstract class BuyerTrade extends Trade {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
@Override @Override

View file

@ -20,6 +20,7 @@ package bisq.core.trade;
import bisq.core.btc.wallet.BtcWalletService; import bisq.core.btc.wallet.BtcWalletService;
import bisq.core.offer.Offer; import bisq.core.offer.Offer;
import bisq.core.proto.CoreProtoResolver; import bisq.core.proto.CoreProtoResolver;
import bisq.core.trade.protocol.ProcessModel;
import bisq.core.trade.protocol.SellerAsMakerProtocol; import bisq.core.trade.protocol.SellerAsMakerProtocol;
import bisq.network.p2p.NodeAddress; import bisq.network.p2p.NodeAddress;
@ -47,7 +48,8 @@ public final class SellerAsMakerTrade extends SellerTrade implements MakerTrade
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
txFee, txFee,
takerFee, takerFee,
@ -56,7 +58,8 @@ public final class SellerAsMakerTrade extends SellerTrade implements MakerTrade
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
@ -77,6 +80,7 @@ public final class SellerAsMakerTrade extends SellerTrade implements MakerTrade
BtcWalletService btcWalletService, BtcWalletService btcWalletService,
CoreProtoResolver coreProtoResolver) { CoreProtoResolver coreProtoResolver) {
protobuf.Trade proto = sellerAsMakerTradeProto.getTrade(); protobuf.Trade proto = sellerAsMakerTradeProto.getTrade();
ProcessModel processModel = ProcessModel.fromProto(proto.getProcessModel(), coreProtoResolver);
SellerAsMakerTrade trade = new SellerAsMakerTrade( SellerAsMakerTrade trade = new SellerAsMakerTrade(
Offer.fromProto(proto.getOffer()), Offer.fromProto(proto.getOffer()),
Coin.valueOf(proto.getTxFeeAsLong()), Coin.valueOf(proto.getTxFeeAsLong()),
@ -86,7 +90,8 @@ public final class SellerAsMakerTrade extends SellerTrade implements MakerTrade
proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null, proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null,
proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null, proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null,
storage, storage,
btcWalletService); btcWalletService,
processModel);
trade.setTradeAmountAsLong(proto.getTradeAmountAsLong()); trade.setTradeAmountAsLong(proto.getTradeAmountAsLong());
trade.setTradePrice(proto.getTradePrice()); trade.setTradePrice(proto.getTradePrice());

View file

@ -20,6 +20,7 @@ package bisq.core.trade;
import bisq.core.btc.wallet.BtcWalletService; import bisq.core.btc.wallet.BtcWalletService;
import bisq.core.offer.Offer; import bisq.core.offer.Offer;
import bisq.core.proto.CoreProtoResolver; import bisq.core.proto.CoreProtoResolver;
import bisq.core.trade.protocol.ProcessModel;
import bisq.core.trade.protocol.SellerAsTakerProtocol; import bisq.core.trade.protocol.SellerAsTakerProtocol;
import bisq.network.p2p.NodeAddress; import bisq.network.p2p.NodeAddress;
@ -50,7 +51,8 @@ public final class SellerAsTakerTrade extends SellerTrade implements TakerTrade
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
tradeAmount, tradeAmount,
txFee, txFee,
@ -62,7 +64,8 @@ public final class SellerAsTakerTrade extends SellerTrade implements TakerTrade
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
@ -83,6 +86,7 @@ public final class SellerAsTakerTrade extends SellerTrade implements TakerTrade
BtcWalletService btcWalletService, BtcWalletService btcWalletService,
CoreProtoResolver coreProtoResolver) { CoreProtoResolver coreProtoResolver) {
protobuf.Trade proto = sellerAsTakerTradeProto.getTrade(); protobuf.Trade proto = sellerAsTakerTradeProto.getTrade();
ProcessModel processModel = ProcessModel.fromProto(proto.getProcessModel(), coreProtoResolver);
return fromProto(new SellerAsTakerTrade( return fromProto(new SellerAsTakerTrade(
Offer.fromProto(proto.getOffer()), Offer.fromProto(proto.getOffer()),
Coin.valueOf(proto.getTradeAmountAsLong()), Coin.valueOf(proto.getTradeAmountAsLong()),
@ -95,7 +99,8 @@ public final class SellerAsTakerTrade extends SellerTrade implements TakerTrade
proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null, proto.hasMediatorNodeAddress() ? NodeAddress.fromProto(proto.getMediatorNodeAddress()) : null,
proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null, proto.hasRefundAgentNodeAddress() ? NodeAddress.fromProto(proto.getRefundAgentNodeAddress()) : null,
storage, storage,
btcWalletService), btcWalletService,
processModel),
proto, proto,
coreProtoResolver); coreProtoResolver);
} }

View file

@ -19,6 +19,7 @@ package bisq.core.trade;
import bisq.core.btc.wallet.BtcWalletService; import bisq.core.btc.wallet.BtcWalletService;
import bisq.core.offer.Offer; import bisq.core.offer.Offer;
import bisq.core.trade.protocol.ProcessModel;
import bisq.network.p2p.NodeAddress; import bisq.network.p2p.NodeAddress;
@ -45,7 +46,8 @@ public abstract class SellerTrade extends Trade {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
tradeAmount, tradeAmount,
txFee, txFee,
@ -57,7 +59,8 @@ public abstract class SellerTrade extends Trade {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
SellerTrade(Offer offer, SellerTrade(Offer offer,
@ -68,7 +71,8 @@ public abstract class SellerTrade extends Trade {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
super(offer, super(offer,
txFee, txFee,
takeOfferFee, takeOfferFee,
@ -77,7 +81,8 @@ public abstract class SellerTrade extends Trade {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
} }
@Override @Override

View file

@ -274,7 +274,8 @@ public abstract class Trade implements Tradable, Model {
// Persistable // Persistable
// Immutable // Immutable
@Nullable @Getter
private final ProcessModel processModel;
@Getter @Getter
private final Offer offer; private final Offer offer;
@Getter @Getter
@ -285,10 +286,7 @@ public abstract class Trade implements Tradable, Model {
private final long takerFeeAsLong; private final long takerFeeAsLong;
@Setter @Setter
private long takeOfferDate; private long takeOfferDate;
@Setter
@Getter
@Nullable
private ProcessModel processModel;
// Mutable // Mutable
@Nullable @Nullable
@Getter @Getter
@ -473,16 +471,18 @@ public abstract class Trade implements Tradable, Model {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
this.offer = offer; this.offer = offer;
this.txFee = txFee; this.txFee = txFee;
this.takerFee = takerFee; this.takerFee = takerFee;
this.isCurrencyForTakerFeeBtc = isCurrencyForTakerFeeBtc; this.isCurrencyForTakerFeeBtc = isCurrencyForTakerFeeBtc;
this.storage = storage;
this.btcWalletService = btcWalletService;
this.arbitratorNodeAddress = arbitratorNodeAddress; this.arbitratorNodeAddress = arbitratorNodeAddress;
this.mediatorNodeAddress = mediatorNodeAddress; this.mediatorNodeAddress = mediatorNodeAddress;
this.refundAgentNodeAddress = refundAgentNodeAddress; this.refundAgentNodeAddress = refundAgentNodeAddress;
this.storage = storage;
this.btcWalletService = btcWalletService;
this.processModel = processModel;
txFeeAsLong = txFee.value; txFeeAsLong = txFee.value;
takerFeeAsLong = takerFee.value; takerFeeAsLong = takerFee.value;
@ -505,7 +505,8 @@ public abstract class Trade implements Tradable, Model {
@Nullable NodeAddress mediatorNodeAddress, @Nullable NodeAddress mediatorNodeAddress,
@Nullable NodeAddress refundAgentNodeAddress, @Nullable NodeAddress refundAgentNodeAddress,
Storage<? extends TradableList> storage, Storage<? extends TradableList> storage,
BtcWalletService btcWalletService) { BtcWalletService btcWalletService,
ProcessModel processModel) {
this(offer, this(offer,
txFee, txFee,
@ -515,7 +516,8 @@ public abstract class Trade implements Tradable, Model {
mediatorNodeAddress, mediatorNodeAddress,
refundAgentNodeAddress, refundAgentNodeAddress,
storage, storage,
btcWalletService); btcWalletService,
processModel);
this.tradePrice = tradePrice; this.tradePrice = tradePrice;
this.tradingPeerNodeAddress = tradingPeerNodeAddress; this.tradingPeerNodeAddress = tradingPeerNodeAddress;
@ -530,7 +532,7 @@ public abstract class Trade implements Tradable, Model {
@Override @Override
public Message toProtoMessage() { public Message toProtoMessage() {
protobuf.Trade.Builder builder = protobuf.Trade.newBuilder() protobuf.Trade.Builder builder = protobuf.Trade.newBuilder()
.setOffer(checkNotNull(offer).toProtoMessage()) .setOffer(offer.toProtoMessage())
.setIsCurrencyForTakerFeeBtc(isCurrencyForTakerFeeBtc) .setIsCurrencyForTakerFeeBtc(isCurrencyForTakerFeeBtc)
.setTxFeeAsLong(txFeeAsLong) .setTxFeeAsLong(txFeeAsLong)
.setTakerFeeAsLong(takerFeeAsLong) .setTakerFeeAsLong(takerFeeAsLong)
@ -577,7 +579,6 @@ public abstract class Trade implements Tradable, Model {
public static Trade fromProto(Trade trade, protobuf.Trade proto, CoreProtoResolver coreProtoResolver) { public static Trade fromProto(Trade trade, protobuf.Trade proto, CoreProtoResolver coreProtoResolver) {
trade.setTakeOfferDate(proto.getTakeOfferDate()); trade.setTakeOfferDate(proto.getTakeOfferDate());
trade.setProcessModel(ProcessModel.fromProto(proto.getProcessModel(), coreProtoResolver));
trade.setState(State.fromProto(proto.getState())); trade.setState(State.fromProto(proto.getState()));
trade.setDisputeState(DisputeState.fromProto(proto.getDisputeState())); trade.setDisputeState(DisputeState.fromProto(proto.getDisputeState()));
trade.setTradePeriodState(TradePeriodState.fromProto(proto.getTradePeriodState())); trade.setTradePeriodState(TradePeriodState.fromProto(proto.getTradePeriodState()));
@ -630,28 +631,23 @@ public abstract class Trade implements Tradable, Model {
this.btcWalletService = btcWalletService; this.btcWalletService = btcWalletService;
} }
public void setupProcessModel(ProcessModelServiceProvider processModelServiceProvider, public void setupProcessModel(ProcessModelServiceProvider serviceProvider, TradeManager tradeManager) {
TradeManager tradeManager) { processModel.applyTransient(serviceProvider, tradeManager, offer);
processModel = getOrCreateProcessModel(processModelServiceProvider);
processModel.applyTransient(processModelServiceProvider,
tradeManager,
checkNotNull(offer));
} }
public void init(ProcessModelServiceProvider processModelServiceProvider) { public void init(ProcessModelServiceProvider serviceProvider) {
serviceProvider.getArbitratorManager().getDisputeAgentByNodeAddress(arbitratorNodeAddress).ifPresent(arbitrator -> {
processModelServiceProvider.getArbitratorManager().getDisputeAgentByNodeAddress(arbitratorNodeAddress).ifPresent(arbitrator -> {
arbitratorBtcPubKey = arbitrator.getBtcPubKey(); arbitratorBtcPubKey = arbitrator.getBtcPubKey();
arbitratorPubKeyRing = arbitrator.getPubKeyRing(); arbitratorPubKeyRing = arbitrator.getPubKeyRing();
persist(); persist();
}); });
processModelServiceProvider.getMediatorManager().getDisputeAgentByNodeAddress(mediatorNodeAddress).ifPresent(mediator -> { serviceProvider.getMediatorManager().getDisputeAgentByNodeAddress(mediatorNodeAddress).ifPresent(mediator -> {
mediatorPubKeyRing = mediator.getPubKeyRing(); mediatorPubKeyRing = mediator.getPubKeyRing();
persist(); persist();
}); });
processModelServiceProvider.getRefundAgentManager().getDisputeAgentByNodeAddress(refundAgentNodeAddress).ifPresent(refundAgent -> { serviceProvider.getRefundAgentManager().getDisputeAgentByNodeAddress(refundAgentNodeAddress).ifPresent(refundAgent -> {
refundAgentPubKeyRing = refundAgent.getPubKeyRing(); refundAgentPubKeyRing = refundAgent.getPubKeyRing();
persist(); persist();
}); });
@ -668,15 +664,6 @@ public abstract class Trade implements Tradable, Model {
isInitialized = true; isInitialized = true;
} }
public ProcessModel getOrCreateProcessModel(ProcessModelServiceProvider processModelServiceProvider) {
if (processModel == null) {
processModel = new ProcessModel(checkNotNull(offer).getId(),
processModelServiceProvider.getUser().getAccountId(),
processModelServiceProvider.getKeyRing().getPubKeyRing());
}
return processModel;
}
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
// API // API
@ -1132,7 +1119,7 @@ public abstract class Trade implements Tradable, Model {
} }
public boolean isTxChainInvalid() { public boolean isTxChainInvalid() {
return checkNotNull(offer).getOfferFeePaymentTxId() == null || return offer.getOfferFeePaymentTxId() == null ||
getTakerFeeTxId() == null || getTakerFeeTxId() == null ||
getDepositTxId() == null || getDepositTxId() == null ||
getDelayedPayoutTxBytes() == null; getDelayedPayoutTxBytes() == null;

View file

@ -36,6 +36,7 @@ import bisq.core.trade.handlers.TradeResultHandler;
import bisq.core.trade.messages.TakeOfferRequest; import bisq.core.trade.messages.TakeOfferRequest;
import bisq.core.trade.messages.TradeMessage; import bisq.core.trade.messages.TradeMessage;
import bisq.core.trade.protocol.MakerProtocol; import bisq.core.trade.protocol.MakerProtocol;
import bisq.core.trade.protocol.ProcessModel;
import bisq.core.trade.protocol.ProcessModelServiceProvider; import bisq.core.trade.protocol.ProcessModelServiceProvider;
import bisq.core.trade.protocol.TakerProtocol; import bisq.core.trade.protocol.TakerProtocol;
import bisq.core.trade.statistics.TradeStatisticsManager; import bisq.core.trade.statistics.TradeStatisticsManager;
@ -243,7 +244,8 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
openOffer.getMediatorNodeAddress(), openOffer.getMediatorNodeAddress(),
openOffer.getRefundAgentNodeAddress(), openOffer.getRefundAgentNodeAddress(),
tradableListStorage, tradableListStorage,
btcWalletService) : btcWalletService,
getNewProcessModel(offer)) :
new SellerAsMakerTrade(offer, new SellerAsMakerTrade(offer,
Coin.valueOf(takeOfferRequest.getTxFee()), Coin.valueOf(takeOfferRequest.getTxFee()),
Coin.valueOf(takeOfferRequest.getTakerFee()), Coin.valueOf(takeOfferRequest.getTakerFee()),
@ -252,7 +254,8 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
openOffer.getMediatorNodeAddress(), openOffer.getMediatorNodeAddress(),
openOffer.getRefundAgentNodeAddress(), openOffer.getRefundAgentNodeAddress(),
tradableListStorage, tradableListStorage,
btcWalletService); btcWalletService,
getNewProcessModel(offer));
initNewMakerTrade(trade); initNewMakerTrade(trade);
tradableList.add(trade); tradableList.add(trade);
@ -341,7 +344,7 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
private void initNewTakerTrade(Trade trade, boolean useSavingsWallet, Coin fundsNeededForTrade) { private void initNewTakerTrade(Trade trade, boolean useSavingsWallet, Coin fundsNeededForTrade) {
initTrade(trade); initTrade(trade);
checkNotNull(trade.getProcessModel()).setUseSavingsWallet(useSavingsWallet); trade.getProcessModel().setUseSavingsWallet(useSavingsWallet);
trade.getProcessModel().setFundsNeededForTradeAsLong(fundsNeededForTrade.value); trade.getProcessModel().setFundsNeededForTradeAsLong(fundsNeededForTrade.value);
} }
@ -428,7 +431,8 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
model.getSelectedMediator(), model.getSelectedMediator(),
model.getSelectedRefundAgent(), model.getSelectedRefundAgent(),
tradableListStorage, tradableListStorage,
btcWalletService) : btcWalletService,
getNewProcessModel(offer)) :
new BuyerAsTakerTrade(offer, new BuyerAsTakerTrade(offer,
amount, amount,
txFee, txFee,
@ -440,12 +444,19 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
model.getSelectedMediator(), model.getSelectedMediator(),
model.getSelectedRefundAgent(), model.getSelectedRefundAgent(),
tradableListStorage, tradableListStorage,
btcWalletService); btcWalletService,
getNewProcessModel(offer));
trade.setTakerPaymentAccountId(paymentAccountId); trade.setTakerPaymentAccountId(paymentAccountId);
initNewTakerTrade(trade, useSavingsWallet, fundsNeededForTrade); initNewTakerTrade(trade, useSavingsWallet, fundsNeededForTrade);
return trade; return trade;
} }
private ProcessModel getNewProcessModel(Offer offer) {
return new ProcessModel(checkNotNull(offer).getId(),
processModelServiceProvider.getUser().getAccountId(),
processModelServiceProvider.getKeyRing().getPubKeyRing());
}
private OfferAvailabilityModel getOfferAvailabilityModel(Offer offer) { private OfferAvailabilityModel getOfferAvailabilityModel(Offer offer) {
return new OfferAvailabilityModel( return new OfferAvailabilityModel(
offer, offer,