Rename process classes

This commit is contained in:
Manfred Karrer 2015-03-21 11:48:57 +01:00
parent 239389b529
commit 12bea799f3
43 changed files with 238 additions and 210 deletions

View File

@ -28,26 +28,26 @@ import io.bitsquare.trade.protocol.placeoffer.tasks.AddOfferToRemoteOfferBook;
import io.bitsquare.trade.protocol.placeoffer.tasks.BroadcastCreateOfferFeeTx;
import io.bitsquare.trade.protocol.placeoffer.tasks.CreateOfferFeeTx;
import io.bitsquare.trade.protocol.placeoffer.tasks.ValidateOffer;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererProtocol;
import io.bitsquare.trade.protocol.trade.offerer.OffererAsBuyerProtocol;
import io.bitsquare.trade.protocol.trade.offerer.tasks.CreateAndSignPayoutTx;
import io.bitsquare.trade.protocol.trade.offerer.tasks.CreateOffererDepositTxInputs;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessPayoutTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestOffererPublishDepositTxMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RequestDepositPayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RequestTakerDepositPayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendBankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendDepositTxIdToTaker;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendDepositTxToTaker;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SetupListenerForBlockChainConfirmation;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SignAndPublishDepositTx;
import io.bitsquare.trade.protocol.trade.offerer.tasks.VerifyAndSignContract;
import io.bitsquare.trade.protocol.trade.offerer.tasks.VerifyTakeOfferFeePayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.VerifyTakerAccount;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerProtocol;
import io.bitsquare.trade.protocol.trade.taker.TakerAsSellerProtocol;
import io.bitsquare.trade.protocol.trade.taker.tasks.CreateAndSignContract;
import io.bitsquare.trade.protocol.trade.taker.tasks.CreateTakeOfferFeeTx;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessFiatTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessDepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRequestDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRequestTakerDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.SendPayoutTxToOfferer;
import io.bitsquare.trade.protocol.trade.taker.tasks.SendRequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.SendSignedTakerDepositTx;
@ -101,17 +101,17 @@ public class DebugView extends InitializableView {
/*---- Protocol ----*/
BuyerAsOffererProtocol.class,
OffererAsBuyerProtocol.class,
ProcessRequestDepositTxInputsMessage.class,
CreateOffererDepositTxInputs.class,
RequestDepositPayment.class,
RequestTakerDepositPayment.class,
ProcessRequestOffererPublishDepositTxMessage.class,
VerifyTakerAccount.class,
VerifyAndSignContract.class,
SignAndPublishDepositTx.class,
SetupListenerForBlockChainConfirmation.class,
SendDepositTxIdToTaker.class,
SendDepositTxToTaker.class,
CreateAndSignPayoutTx.class,
VerifyTakeOfferFeePayment.class,
@ -122,11 +122,11 @@ public class DebugView extends InitializableView {
/*---- Protocol ----*/
SellerAsTakerProtocol.class,
TakerAsSellerProtocol.class,
CreateTakeOfferFeeTx.class,
SendRequestDepositTxInputsMessage.class,
ProcessRequestDepositPaymentMessage.class,
ProcessRequestTakerDepositPaymentMessage.class,
VerifyOffererAccount.class,
CreateAndSignContract.class,
TakerCreatesAndSignsDepositTx.class,

View File

@ -20,5 +20,5 @@ package io.bitsquare.p2p;
import java.util.List;
public interface MailboxMessagesResultHandler {
void handleResult(List<EncryptedMailboxMessage> messages);
void handleResult(List<EncryptedMailboxMessage> encryptedMailboxMessages);
}

View File

@ -45,10 +45,10 @@ import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailable
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferModel;
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferProtocol;
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererProtocol;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerProtocol;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.offerer.OffererAsBuyerProtocol;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import io.bitsquare.trade.protocol.trade.taker.TakerAsSellerProtocol;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import io.bitsquare.user.AccountSettings;
import io.bitsquare.user.User;
@ -86,8 +86,8 @@ public class TradeManager {
private EncryptionService<MailboxMessage> encryptionService;
private final OfferBookService offerBookService;
private final Map<String, SellerAsTakerProtocol> sellerAsTakerProtocolMap = new HashMap<>();
private final Map<String, BuyerAsOffererProtocol> buyerAcceptsOfferProtocolMap = new HashMap<>();
private final Map<String, TakerAsSellerProtocol> takerAsSellerProtocolMap = new HashMap<>();
private final Map<String, OffererAsBuyerProtocol> offererAsBuyerProtocolMap = new HashMap<>();
private final Map<String, CheckOfferAvailabilityProtocol> checkOfferAvailabilityProtocolMap = new HashMap<>();
private final ObservableMap<String, Offer> openOffers = FXCollections.observableHashMap();
@ -144,7 +144,7 @@ public class TradeManager {
// BuyerAcceptsOfferProtocol listens for take offer requests, so we need to instantiate it early.
public void onAllServicesInitialized() {
for (Map.Entry<String, Offer> entry : openOffers.entrySet()) {
createBuyerAcceptsOfferProtocol(entry.getValue());
createOffererAsBuyerProtocol(entry.getValue());
}
for (Map.Entry<String, Trade> entry : pendingTrades.entrySet()) {
Trade trade = entry.getValue();
@ -154,7 +154,7 @@ public class TradeManager {
else {
Offer offer = trade.getOffer();
if (isMyOffer(offer)) {
createBuyerAcceptsOfferProtocol(offer);
createOffererAsBuyerProtocol(offer);
}
else {
CheckOfferAvailabilityModel model = new CheckOfferAvailabilityModel(offer, messageService, addressService);
@ -163,7 +163,7 @@ public class TradeManager {
disposeCheckOfferAvailabilityRequest(offer);
// TODO need to check that trade hijacking is not possible (taking trades form other peers)
if (offer.getState() == Offer.State.AVAILABLE || offer.getState() == Offer.State.RESERVED) {
createSellerAsTakerProtocol(trade, model.getPeer());
createTakerAsSellerProtocol(trade, model.getPeer());
}
},
(errorMessage) -> disposeCheckOfferAvailabilityRequest(offer));
@ -174,8 +174,8 @@ public class TradeManager {
}
mailboxService.getAllMessages(user.getP2PSigPubKey(),
(messages) -> {
decryptMailboxMessages(messages);
(encryptedMailboxMessages) -> {
decryptMailboxMessages(encryptedMailboxMessages);
emptyMailbox();
});
@ -222,7 +222,7 @@ public class TradeManager {
(transaction) -> {
openOffers.put(offer.getId(), offer);
persistOpenOffers();
createBuyerAcceptsOfferProtocol(offer);
createOffererAsBuyerProtocol(offer);
resultHandler.handleResult(transaction);
},
(message) -> errorMessageHandler.handleErrorMessage(message)
@ -286,14 +286,14 @@ public class TradeManager {
public void onFiatPaymentStarted(String tradeId) {
// TODO remove if check when persistence is impl.
if (buyerAcceptsOfferProtocolMap.containsKey(tradeId)) {
buyerAcceptsOfferProtocolMap.get(tradeId).onFiatPaymentStarted();
if (offererAsBuyerProtocolMap.containsKey(tradeId)) {
offererAsBuyerProtocolMap.get(tradeId).onFiatPaymentStarted();
persistPendingTrades();
}
}
public void onFiatPaymentReceived(String tradeId) {
sellerAsTakerProtocolMap.get(tradeId).onFiatPaymentReceived();
takerAsSellerProtocolMap.get(tradeId).onFiatPaymentReceived();
}
public void onWithdrawAtTradeCompleted(Trade trade) {
@ -377,9 +377,9 @@ public class TradeManager {
openOffers.remove(offerId);
disposeCheckOfferAvailabilityRequest(offer);
persistOpenOffers();
if (removeFromBuyerAcceptsOfferProtocolMap && buyerAcceptsOfferProtocolMap.containsKey(offerId)) {
buyerAcceptsOfferProtocolMap.get(offerId).cleanup();
buyerAcceptsOfferProtocolMap.remove(offerId);
if (removeFromBuyerAcceptsOfferProtocolMap && offererAsBuyerProtocolMap.containsKey(offerId)) {
offererAsBuyerProtocolMap.get(offerId).cleanup();
offererAsBuyerProtocolMap.remove(offerId);
}
resultHandler.handleResult();
@ -415,7 +415,7 @@ public class TradeManager {
Trade trade = createTrade(offer);
trade.setTradeAmount(amount);
SellerAsTakerProtocol sellerTakesOfferProtocol = createSellerAsTakerProtocol(trade, peer);
TakerAsSellerProtocol sellerTakesOfferProtocol = createTakerAsSellerProtocol(trade, peer);
sellerTakesOfferProtocol.takeAvailableOffer();
return trade;
}
@ -433,7 +433,7 @@ public class TradeManager {
return trade;
}
private SellerAsTakerProtocol createSellerAsTakerProtocol(Trade trade, Peer peer) {
private TakerAsSellerProtocol createTakerAsSellerProtocol(Trade trade, Peer peer) {
trade.stateProperty().addListener((ov, oldValue, newValue) -> {
log.debug("trade state = " + newValue);
switch (newValue) {
@ -457,7 +457,7 @@ public class TradeManager {
}
});
SellerAsTakerModel model = new SellerAsTakerModel(
TakerAsSellerModel model = new TakerAsSellerModel(
trade,
peer,
messageService,
@ -468,17 +468,17 @@ public class TradeManager {
user,
persistence);
SellerAsTakerProtocol sellerTakesOfferProtocol = new SellerAsTakerProtocol(model);
sellerAsTakerProtocolMap.put(trade.getId(), sellerTakesOfferProtocol);
TakerAsSellerProtocol protocol = new TakerAsSellerProtocol(model);
takerAsSellerProtocolMap.put(trade.getId(), protocol);
if (mailboxMessages.containsKey(trade.getId()))
sellerTakesOfferProtocol.setMailboxMessage(mailboxMessages.get(trade.getId()));
protocol.setMailboxMessage(mailboxMessages.get(trade.getId()));
return sellerTakesOfferProtocol;
return protocol;
}
private void createBuyerAcceptsOfferProtocol(Offer offer) {
private void createOffererAsBuyerProtocol(Offer offer) {
Trade trade;
if (pendingTrades.containsKey(offer.getId())) {
trade = pendingTrades.get(offer.getId());
@ -489,7 +489,7 @@ public class TradeManager {
// don't save it in pendingTrades. It is only a potential trade
}
BuyerAsOffererModel model = new BuyerAsOffererModel(
OffererAsBuyerModel model = new OffererAsBuyerModel(
trade,
messageService,
mailboxService,
@ -531,7 +531,7 @@ public class TradeManager {
case MESSAGE_SENDING_FAILED:
case FAULT:
closeTrade(trade);
buyerAcceptsOfferProtocolMap.get(trade.getId()).cleanup();
offererAsBuyerProtocolMap.get(trade.getId()).cleanup();
break;
default:
log.warn("Unhandled trade state: " + newValue);
@ -539,8 +539,11 @@ public class TradeManager {
}
});
BuyerAsOffererProtocol buyerAcceptsOfferProtocol = new BuyerAsOffererProtocol(model);
buyerAcceptsOfferProtocolMap.put(offer.getId(), buyerAcceptsOfferProtocol);
OffererAsBuyerProtocol protocol = new OffererAsBuyerProtocol(model);
offererAsBuyerProtocolMap.put(offer.getId(), protocol);
if (mailboxMessages.containsKey(trade.getId()))
protocol.setMailboxMessage(mailboxMessages.get(trade.getId()));
}
private void closeTrade(Trade trade) {
@ -549,13 +552,13 @@ public class TradeManager {
persistPendingTrades();
}
if (sellerAsTakerProtocolMap.containsKey(trade.getId())) {
sellerAsTakerProtocolMap.get(trade.getId()).cleanup();
sellerAsTakerProtocolMap.remove(trade.getId());
if (takerAsSellerProtocolMap.containsKey(trade.getId())) {
takerAsSellerProtocolMap.get(trade.getId()).cleanup();
takerAsSellerProtocolMap.remove(trade.getId());
}
else if (buyerAcceptsOfferProtocolMap.containsKey(trade.getId())) {
buyerAcceptsOfferProtocolMap.get(trade.getId()).cleanup();
buyerAcceptsOfferProtocolMap.remove(trade.getId());
else if (offererAsBuyerProtocolMap.containsKey(trade.getId())) {
offererAsBuyerProtocolMap.get(trade.getId()).cleanup();
offererAsBuyerProtocolMap.remove(trade.getId());
}
if (!closedTrades.containsKey(trade.getId())) {
@ -572,22 +575,26 @@ public class TradeManager {
private void decryptMailboxMessages(List<EncryptedMailboxMessage> encryptedMailboxMessages) {
log.trace("applyMailboxMessage encryptedMailboxMessage.size=" + encryptedMailboxMessages.size());
for (EncryptedMailboxMessage encrypted : encryptedMailboxMessages) {
MailboxMessage mailboxMessage = null;
try {
mailboxMessage = encryptionService.decryptToObject(user.getP2pEncryptPrivateKey(), encrypted.getEncryptionPackage());
MailboxMessage mailboxMessage = encryptionService.decryptToObject(user.getP2pEncryptPrivateKey(), encrypted.getEncryptionPackage());
if (mailboxMessage instanceof TradeMessage) {
String tradeId = ((TradeMessage) mailboxMessage).tradeId;
mailboxMessages.put(tradeId, mailboxMessage);
log.trace("mailboxMessage with tradeID " + tradeId);
if (takerAsSellerProtocolMap.containsKey(tradeId)) {
takerAsSellerProtocolMap.get(tradeId).setMailboxMessage(encrypted);
log.trace("sellerAsTakerProtocolMap exist with tradeID " + tradeId);
}
if (offererAsBuyerProtocolMap.containsKey(tradeId)) {
offererAsBuyerProtocolMap.get(tradeId).setMailboxMessage(encrypted);
log.trace("buyerAcceptsOfferProtocolMap exist with tradeID " + tradeId);
}
}
} catch (Throwable e) {
e.printStackTrace();
log.error(e.getMessage());
}
if (mailboxMessage instanceof TradeMessage) {
String tradeId = ((TradeMessage) mailboxMessage).tradeId;
mailboxMessages.put(tradeId, mailboxMessage);
log.trace("mailboxMessage with tradeID " + tradeId);
if (sellerAsTakerProtocolMap.containsKey(tradeId)) {
sellerAsTakerProtocolMap.get(tradeId).setMailboxMessage(encrypted);
log.trace("sellerAsTakerProtocolMap exist with tradeID " + tradeId);
}
}
}
}

View File

@ -17,11 +17,13 @@
package io.bitsquare.trade.protocol.trade.messages;
import io.bitsquare.p2p.MailboxMessage;
import org.bitcoinj.core.Transaction;
import java.io.Serializable;
public class DepositTxPublishedMessage extends TradeMessage implements Serializable {
public class DepositTxPublishedMessage extends TradeMessage implements MailboxMessage, Serializable {
private static final long serialVersionUID = -1532231540167406581L;
public final Transaction depositTx;

View File

@ -21,7 +21,7 @@ import io.bitsquare.p2p.Message;
import java.io.Serializable;
public class OfferMessage implements Message, Serializable {
public abstract class OfferMessage implements Message, Serializable {
private static final long serialVersionUID = -89035992124170905L;
public String offerId;

View File

@ -17,11 +17,13 @@
package io.bitsquare.trade.protocol.trade.messages;
import io.bitsquare.p2p.MailboxMessage;
import org.bitcoinj.core.Transaction;
import java.io.Serializable;
public class PayoutTxPublishedMessage extends TradeMessage implements Serializable {
public class PayoutTxPublishedMessage extends TradeMessage implements MailboxMessage, Serializable {
private static final long serialVersionUID = 1288653559218403873L;
public final Transaction payoutTx;

View File

@ -25,7 +25,7 @@ import java.io.Serializable;
import java.util.List;
public class RequestDepositPaymentMessage extends TradeMessage implements Serializable {
public class RequestTakerDepositPaymentMessage extends TradeMessage implements Serializable {
private static final long serialVersionUID = -3988720410493712913L;
public final List<TransactionOutput> offererConnectedOutputsForAllInputs;
@ -34,12 +34,12 @@ public class RequestDepositPaymentMessage extends TradeMessage implements Serial
public final FiatAccount offererFiatAccount;
public final String offererAccountId;
public RequestDepositPaymentMessage(String tradeId,
List<TransactionOutput> offererConnectedOutputsForAllInputs,
List<TransactionOutput> offererOutputs,
byte[] offererPubKey,
FiatAccount offererFiatAccount,
String offererAccountId) {
public RequestTakerDepositPaymentMessage(String tradeId,
List<TransactionOutput> offererConnectedOutputsForAllInputs,
List<TransactionOutput> offererOutputs,
byte[] offererPubKey,
FiatAccount offererFiatAccount,
String offererAccountId) {
this.tradeId = tradeId;
this.offererConnectedOutputsForAllInputs = offererConnectedOutputsForAllInputs;
this.offererOutputs = offererOutputs;

View File

@ -21,7 +21,7 @@ import io.bitsquare.p2p.Message;
import java.io.Serializable;
public class TradeMessage implements Message, Serializable {
public abstract class TradeMessage implements Message, Serializable {
private static final long serialVersionUID = 7572470983485004081L;
public String tradeId;

View File

@ -18,6 +18,7 @@
package io.bitsquare.trade.protocol.trade.offerer;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.MailboxMessage;
import io.bitsquare.p2p.Message;
import io.bitsquare.p2p.MessageHandler;
import io.bitsquare.p2p.Peer;
@ -26,15 +27,15 @@ import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.messages.RequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.messages.RequestOffererPublishDepositTxMessage;
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import io.bitsquare.trade.protocol.trade.offerer.tasks.CreateAndSignPayoutTx;
import io.bitsquare.trade.protocol.trade.offerer.tasks.CreateOffererDepositTxInputs;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessPayoutTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessRequestOffererPublishDepositTxMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RequestDepositPayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.RequestTakerDepositPayment;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendBankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendDepositTxIdToTaker;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SendDepositTxToTaker;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SetupListenerForBlockChainConfirmation;
import io.bitsquare.trade.protocol.trade.offerer.tasks.SignAndPublishDepositTx;
import io.bitsquare.trade.protocol.trade.offerer.tasks.VerifyAndSignContract;
@ -50,10 +51,10 @@ import org.slf4j.LoggerFactory;
import static io.bitsquare.util.Validator.*;
public class BuyerAsOffererProtocol {
private static final Logger log = LoggerFactory.getLogger(BuyerAsOffererProtocol.class);
public class OffererAsBuyerProtocol {
private static final Logger log = LoggerFactory.getLogger(OffererAsBuyerProtocol.class);
private final BuyerAsOffererModel model;
private final OffererAsBuyerModel model;
private final MessageHandler messageHandler;
private TransactionConfidence.Listener transactionConfidenceListener;
@ -63,7 +64,7 @@ public class BuyerAsOffererProtocol {
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
public BuyerAsOffererProtocol(BuyerAsOffererModel model) {
public OffererAsBuyerProtocol(OffererAsBuyerModel model) {
log.debug("New BuyerAsOffererProtocol " + this);
this.model = model;
messageHandler = this::handleMessage;
@ -76,6 +77,17 @@ public class BuyerAsOffererProtocol {
// Public methods
///////////////////////////////////////////////////////////////////////////////////////////
public void setMailboxMessage(MailboxMessage mailboxMessage) {
log.debug("setMailboxMessage " + mailboxMessage);
// Might be called twice, so check that its only processed once
if (model.mailboxMessage == null) {
model.mailboxMessage = mailboxMessage;
if (mailboxMessage instanceof PayoutTxPublishedMessage) {
handlePayoutTxPublishedMessage((PayoutTxPublishedMessage) mailboxMessage);
}
}
}
public void cleanup() {
log.debug("cleanup " + this);
@ -99,7 +111,7 @@ public class BuyerAsOffererProtocol {
model.setTradeMessage(tradeMessage);
model.taker.peer = taker;
TaskRunner<BuyerAsOffererModel> taskRunner = new TaskRunner<>(model,
TaskRunner<OffererAsBuyerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("sequence at handleTakeOfferFeePayedMessage completed");
},
@ -110,7 +122,7 @@ public class BuyerAsOffererProtocol {
taskRunner.addTasks(
ProcessRequestDepositTxInputsMessage.class,
CreateOffererDepositTxInputs.class,
RequestDepositPayment.class
RequestTakerDepositPayment.class
);
taskRunner.run();
}
@ -118,7 +130,7 @@ public class BuyerAsOffererProtocol {
private void handleRequestOffererPublishDepositTxMessage(RequestOffererPublishDepositTxMessage tradeMessage) {
model.setTradeMessage(tradeMessage);
TaskRunner<BuyerAsOffererModel> taskRunner = new TaskRunner<>(model,
TaskRunner<OffererAsBuyerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("taskRunner at handleRequestOffererPublishDepositTxMessage completed");
transactionConfidenceListener = (tx, reason) -> {
@ -142,7 +154,7 @@ public class BuyerAsOffererProtocol {
VerifyAndSignContract.class,
SignAndPublishDepositTx.class,
SetupListenerForBlockChainConfirmation.class,
SendDepositTxIdToTaker.class
SendDepositTxToTaker.class
);
taskRunner.run();
}
@ -154,7 +166,7 @@ public class BuyerAsOffererProtocol {
// User clicked the "bank transfer started" button
public void onFiatPaymentStarted() {
TaskRunner<BuyerAsOffererModel> taskRunner = new TaskRunner<>(model,
TaskRunner<OffererAsBuyerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("sequence at handleBankTransferStartedUIEvent completed");
},
@ -178,7 +190,7 @@ public class BuyerAsOffererProtocol {
private void handlePayoutTxPublishedMessage(PayoutTxPublishedMessage tradeMessage) {
model.setTradeMessage(tradeMessage);
TaskRunner<BuyerAsOffererModel> taskRunner = new TaskRunner<>(model,
TaskRunner<OffererAsBuyerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("sequence at handlePayoutTxPublishedMessage completed");

View File

@ -30,7 +30,7 @@ import java.security.PublicKey;
import java.util.List;
public class OffererModel implements Serializable {
public class Offerer implements Serializable {
private static final long serialVersionUID = -1845177552607819927L;
// Those fields are set at constructor but not declared as final because constructor is not called in case model gets created from a persisted model

View File

@ -32,18 +32,18 @@ import java.io.Serializable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BuyerAsOffererModel extends SharedTradeModel implements Serializable {
public class OffererAsBuyerModel extends SharedTradeModel implements Serializable {
private static final long serialVersionUID = 5000457153390911569L;
private static final Logger log = LoggerFactory.getLogger(BuyerAsOffererModel.class);
private static final Logger log = LoggerFactory.getLogger(OffererAsBuyerModel.class);
transient public final Trade trade;
public final TakerModel taker;
public final OffererModel offerer;
public final Taker taker;
public final Offerer offerer;
// written by tasks
private String takeOfferFeeTxId;
public BuyerAsOffererModel(Trade trade,
public OffererAsBuyerModel(Trade trade,
MessageService messageService,
MailboxService mailboxService,
WalletService walletService,
@ -62,8 +62,8 @@ public class BuyerAsOffererModel extends SharedTradeModel implements Serializabl
this.trade = trade;
Serializable serializable = persistence.read(this, "BuyerAsOffererModel_" + id);
if (serializable instanceof BuyerAsOffererModel) {
BuyerAsOffererModel persistedModel = (BuyerAsOffererModel) serializable;
if (serializable instanceof OffererAsBuyerModel) {
OffererAsBuyerModel persistedModel = (OffererAsBuyerModel) serializable;
log.debug("Model reconstructed form persisted model.");
setTakeOfferFeeTxId(persistedModel.takeOfferFeeTxId);
@ -72,8 +72,8 @@ public class BuyerAsOffererModel extends SharedTradeModel implements Serializabl
offerer = persistedModel.offerer;
}
else {
taker = new TakerModel();
offerer = new OffererModel();
taker = new Taker();
offerer = new Offerer();
}
offerer.registrationPubKey = walletService.getRegistrationAddressEntry().getPubKey();

View File

@ -30,7 +30,7 @@ import java.security.PublicKey;
import java.util.List;
public class TakerModel implements Serializable {
public class Taker implements Serializable {
private static final long serialVersionUID = 2660909397210346486L;
// written by tasks

View File

@ -20,17 +20,17 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.bitcoinj.core.Coin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CreateAndSignPayoutTx extends Task<BuyerAsOffererModel> {
public class CreateAndSignPayoutTx extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(CreateAndSignPayoutTx.class);
public CreateAndSignPayoutTx(TaskRunner taskHandler, BuyerAsOffererModel model) {
public CreateAndSignPayoutTx(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -21,17 +21,17 @@ import io.bitsquare.btc.FeePolicy;
import io.bitsquare.btc.TradeWalletService;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.bitcoinj.core.Coin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CreateOffererDepositTxInputs extends Task<BuyerAsOffererModel> {
public class CreateOffererDepositTxInputs extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(CreateOffererDepositTxInputs.class);
public CreateOffererDepositTxInputs(TaskRunner taskHandler, BuyerAsOffererModel model) {
public CreateOffererDepositTxInputs(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -21,7 +21,7 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -29,10 +29,10 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
import static io.bitsquare.util.Validator.checkTradeId;
public class ProcessPayoutTxPublishedMessage extends Task<BuyerAsOffererModel> {
public class ProcessPayoutTxPublishedMessage extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessPayoutTxPublishedMessage.class);
public ProcessPayoutTxPublishedMessage(TaskRunner taskHandler, BuyerAsOffererModel model) {
public ProcessPayoutTxPublishedMessage(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -21,7 +21,7 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.RequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -29,10 +29,10 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
import static io.bitsquare.util.Validator.*;
public class ProcessRequestDepositTxInputsMessage extends Task<BuyerAsOffererModel> {
public class ProcessRequestDepositTxInputsMessage extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessRequestDepositTxInputsMessage.class);
public ProcessRequestDepositTxInputsMessage(TaskRunner taskHandler, BuyerAsOffererModel model) {
public ProcessRequestDepositTxInputsMessage(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.messages.RequestOffererPublishDepositTxMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -28,10 +28,10 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.*;
import static io.bitsquare.util.Validator.*;
public class ProcessRequestOffererPublishDepositTxMessage extends Task<BuyerAsOffererModel> {
public class ProcessRequestOffererPublishDepositTxMessage extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessRequestOffererPublishDepositTxMessage.class);
public ProcessRequestOffererPublishDepositTxMessage(TaskRunner taskHandler, BuyerAsOffererModel model) {
public ProcessRequestOffererPublishDepositTxMessage(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -20,22 +20,22 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.protocol.trade.messages.RequestDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.messages.RequestTakerDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RequestDepositPayment extends Task<BuyerAsOffererModel> {
private static final Logger log = LoggerFactory.getLogger(RequestDepositPayment.class);
public class RequestTakerDepositPayment extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(RequestTakerDepositPayment.class);
public RequestDepositPayment(TaskRunner taskHandler, BuyerAsOffererModel model) {
public RequestTakerDepositPayment(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}
@Override
protected void doRun() {
RequestDepositPaymentMessage tradeMessage = new RequestDepositPaymentMessage(
RequestTakerDepositPaymentMessage tradeMessage = new RequestTakerDepositPaymentMessage(
model.id,
model.offerer.connectedOutputsForAllInputs,
model.offerer.outputs,

View File

@ -22,15 +22,15 @@ import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendBankTransferStartedMessage extends Task<BuyerAsOffererModel> {
public class SendBankTransferStartedMessage extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(SendBankTransferStartedMessage.class);
public SendBankTransferStartedMessage(TaskRunner taskHandler, BuyerAsOffererModel model) {
public SendBankTransferStartedMessage(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -21,15 +21,15 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendDepositTxIdToTaker extends Task<BuyerAsOffererModel> {
private static final Logger log = LoggerFactory.getLogger(SendDepositTxIdToTaker.class);
public class SendDepositTxToTaker extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(SendDepositTxToTaker.class);
public SendDepositTxIdToTaker(TaskRunner taskHandler, BuyerAsOffererModel model) {
public SendDepositTxToTaker(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.core.TransactionConfidence;
@ -30,13 +30,13 @@ import javafx.application.Platform;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SetupListenerForBlockChainConfirmation extends Task<BuyerAsOffererModel> {
public class SetupListenerForBlockChainConfirmation extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(SetupListenerForBlockChainConfirmation.class);
private TransactionConfidence.Listener transactionConfidenceListener;
private TransactionConfidence transactionConfidence;
public SetupListenerForBlockChainConfirmation(TaskRunner taskHandler, BuyerAsOffererModel model) {
public SetupListenerForBlockChainConfirmation(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -21,7 +21,7 @@ import io.bitsquare.btc.FeePolicy;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.Transaction;
@ -33,10 +33,10 @@ import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SignAndPublishDepositTx extends Task<BuyerAsOffererModel> {
public class SignAndPublishDepositTx extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(SignAndPublishDepositTx.class);
public SignAndPublishDepositTx(TaskRunner taskHandler, BuyerAsOffererModel model) {
public SignAndPublishDepositTx(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -21,16 +21,16 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Contract;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import io.bitsquare.util.Utilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VerifyAndSignContract extends Task<BuyerAsOffererModel> {
public class VerifyAndSignContract extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(VerifyAndSignContract.class);
public VerifyAndSignContract(TaskRunner taskHandler, BuyerAsOffererModel model) {
public VerifyAndSignContract(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -19,15 +19,15 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VerifyTakeOfferFeePayment extends Task<BuyerAsOffererModel> {
public class VerifyTakeOfferFeePayment extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(VerifyTakeOfferFeePayment.class);
public VerifyTakeOfferFeePayment(TaskRunner taskHandler, BuyerAsOffererModel model) {
public VerifyTakeOfferFeePayment(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -19,15 +19,15 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.offerer.models.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.models.OffererAsBuyerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VerifyTakerAccount extends Task<BuyerAsOffererModel> {
public class VerifyTakerAccount extends Task<OffererAsBuyerModel> {
private static final Logger log = LoggerFactory.getLogger(VerifyTakerAccount.class);
public VerifyTakerAccount(TaskRunner taskHandler, BuyerAsOffererModel model) {
public VerifyTakerAccount(TaskRunner taskHandler, OffererAsBuyerModel model) {
super(taskHandler, model);
}

View File

@ -22,18 +22,17 @@ import io.bitsquare.p2p.MailboxMessage;
import io.bitsquare.p2p.Message;
import io.bitsquare.p2p.MessageHandler;
import io.bitsquare.p2p.Peer;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.messages.RequestDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.messages.RequestTakerDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import io.bitsquare.trade.protocol.trade.taker.tasks.BroadcastTakeOfferFeeTx;
import io.bitsquare.trade.protocol.trade.taker.tasks.CreateAndSignContract;
import io.bitsquare.trade.protocol.trade.taker.tasks.CreateTakeOfferFeeTx;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessDepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessFiatTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRequestDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.ProcessRequestTakerDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.SendPayoutTxToOfferer;
import io.bitsquare.trade.protocol.trade.taker.tasks.SendRequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.taker.tasks.SendSignedTakerDepositTx;
@ -53,11 +52,11 @@ import org.slf4j.LoggerFactory;
import static io.bitsquare.util.Validator.nonEmptyStringOf;
public class SellerAsTakerProtocol {
private static final Logger log = LoggerFactory.getLogger(SellerAsTakerProtocol.class);
public class TakerAsSellerProtocol {
private static final Logger log = LoggerFactory.getLogger(TakerAsSellerProtocol.class);
private static final int TIMEOUT_DELAY = 10000;
private final SellerAsTakerModel model;
private final TakerAsSellerModel model;
private final MessageHandler messageHandler;
private AnimationTimer timeoutTimer;
@ -66,7 +65,7 @@ public class SellerAsTakerProtocol {
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
public SellerAsTakerProtocol(SellerAsTakerModel model) {
public TakerAsSellerProtocol(TakerAsSellerModel model) {
log.debug("New SellerAsTakerProtocol " + this);
this.model = model;
messageHandler = this::handleMessage;
@ -93,11 +92,14 @@ public class SellerAsTakerProtocol {
if (mailboxMessage instanceof FiatTransferStartedMessage) {
handleFiatTransferStartedMessage((FiatTransferStartedMessage) mailboxMessage);
}
else if (mailboxMessage instanceof DepositTxPublishedMessage) {
handleDepositTxPublishedMessage((DepositTxPublishedMessage) mailboxMessage);
}
}
}
public void takeAvailableOffer() {
TaskRunner<SellerAsTakerModel> taskRunner = new TaskRunner<>(model,
TaskRunner<TakerAsSellerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("taskRunner at takeAvailableOffer completed");
},
@ -118,10 +120,10 @@ public class SellerAsTakerProtocol {
// Incoming message handling
///////////////////////////////////////////////////////////////////////////////////////////
private void handleRequestDepositPaymentMessage(RequestDepositPaymentMessage tradeMessage) {
private void handleRequestTakerDepositPaymentMessage(RequestTakerDepositPaymentMessage tradeMessage) {
model.setTradeMessage(tradeMessage);
TaskRunner<SellerAsTakerModel> taskRunner = new TaskRunner<>(model,
TaskRunner<TakerAsSellerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("taskRunner at handleTakerDepositPaymentRequestMessage completed");
},
@ -130,7 +132,7 @@ public class SellerAsTakerProtocol {
}
);
taskRunner.addTasks(
ProcessRequestDepositPaymentMessage.class,
ProcessRequestTakerDepositPaymentMessage.class,
VerifyOffererAccount.class,
CreateAndSignContract.class,
TakerCreatesAndSignsDepositTx.class,
@ -142,7 +144,7 @@ public class SellerAsTakerProtocol {
private void handleDepositTxPublishedMessage(DepositTxPublishedMessage tradeMessage) {
model.setTradeMessage(tradeMessage);
TaskRunner<SellerAsTakerModel> taskRunner = new TaskRunner<>(model,
TaskRunner<TakerAsSellerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("taskRunner at handleDepositTxPublishedMessage completed");
},
@ -160,10 +162,9 @@ public class SellerAsTakerProtocol {
private void handleFiatTransferStartedMessage(FiatTransferStartedMessage tradeMessage) {
model.setTradeMessage(tradeMessage);
TaskRunner<SellerAsTakerModel> taskRunner = new TaskRunner<>(model,
TaskRunner<TakerAsSellerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("taskRunner at handleFiatTransferStartedMessage completed");
model.trade.setState(Trade.State.FIAT_PAYMENT_STARTED);
},
(errorMessage) -> {
log.error(errorMessage);
@ -173,13 +174,14 @@ public class SellerAsTakerProtocol {
taskRunner.run();
}
///////////////////////////////////////////////////////////////////////////////////////////
// Called from UI
///////////////////////////////////////////////////////////////////////////////////////////
// User clicked the "bank transfer received" button, so we release the funds for pay out
public void onFiatPaymentReceived() {
TaskRunner<SellerAsTakerModel> taskRunner = new TaskRunner<>(model,
TaskRunner<TakerAsSellerModel> taskRunner = new TaskRunner<>(model,
() -> {
log.debug("taskRunner at handleFiatReceivedUIEvent completed");
@ -209,8 +211,8 @@ public class SellerAsTakerProtocol {
nonEmptyStringOf(tradeMessage.tradeId);
if (tradeMessage.tradeId.equals(model.id)) {
if (tradeMessage instanceof RequestDepositPaymentMessage) {
handleRequestDepositPaymentMessage((RequestDepositPaymentMessage) tradeMessage);
if (tradeMessage instanceof RequestTakerDepositPaymentMessage) {
handleRequestTakerDepositPaymentMessage((RequestTakerDepositPaymentMessage) tradeMessage);
}
else if (tradeMessage instanceof DepositTxPublishedMessage) {
handleDepositTxPublishedMessage((DepositTxPublishedMessage) tradeMessage);

View File

@ -27,7 +27,7 @@ import java.io.Serializable;
import java.util.List;
public class OffererModel implements Serializable {
public class Offerer implements Serializable {
private static final long serialVersionUID = 1582902150121576205L;
// Those fields are set at constructor but not declared as final because constructor is not called in case model gets created from a persisted model

View File

@ -31,7 +31,7 @@ import java.security.PublicKey;
import java.util.List;
public class TakerModel implements Serializable {
public class Taker implements Serializable {
private static long serialVersionUID = -4041809885931756860L;
// Those fields are set at constructor but not declared as final because constructor is not called in case model gets created from a persisted model

View File

@ -35,19 +35,19 @@ import java.io.Serializable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SellerAsTakerModel extends SharedTradeModel implements Serializable {
public class TakerAsSellerModel extends SharedTradeModel implements Serializable {
private static final long serialVersionUID = -963501132927618376L;
private static final Logger log = LoggerFactory.getLogger(SellerAsTakerModel.class);
private static final Logger log = LoggerFactory.getLogger(TakerAsSellerModel.class);
public final Trade trade;
public final TakerModel taker;
public final OffererModel offerer;
public final Taker taker;
public final Offerer offerer;
// written by tasks
private Transaction takeOfferFeeTx;
private Transaction payoutTx;
public SellerAsTakerModel(Trade trade,
public TakerAsSellerModel(Trade trade,
Peer offererPeer,
MessageService messageService,
MailboxService mailboxService,
@ -67,8 +67,8 @@ public class SellerAsTakerModel extends SharedTradeModel implements Serializable
this.trade = trade;
Serializable serializable = persistence.read(this, "SellerAsTakerModel_" + id);
if (serializable instanceof SellerAsTakerModel) {
SellerAsTakerModel persistedModel = (SellerAsTakerModel) serializable;
if (serializable instanceof TakerAsSellerModel) {
TakerAsSellerModel persistedModel = (TakerAsSellerModel) serializable;
log.debug("Model reconstructed form persisted model.");
setTakeOfferFeeTx(persistedModel.getTakeOfferFeeTx());
@ -78,8 +78,8 @@ public class SellerAsTakerModel extends SharedTradeModel implements Serializable
offerer = persistedModel.offerer;
}
else {
taker = new TakerModel();
offerer = new OffererModel();
taker = new Taker();
offerer = new Offerer();
}
offerer.peer = offererPeer;

View File

@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.bitcoinj.core.Transaction;
@ -31,10 +31,10 @@ import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BroadcastTakeOfferFeeTx extends Task<SellerAsTakerModel> {
public class BroadcastTakeOfferFeeTx extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(BroadcastTakeOfferFeeTx.class);
public BroadcastTakeOfferFeeTx(TaskRunner taskHandler, SellerAsTakerModel model) {
public BroadcastTakeOfferFeeTx(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -21,16 +21,16 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Contract;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import io.bitsquare.util.Utilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CreateAndSignContract extends Task<SellerAsTakerModel> {
public class CreateAndSignContract extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(CreateAndSignContract.class);
public CreateAndSignContract(TaskRunner taskHandler, SellerAsTakerModel model) {
public CreateAndSignContract(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -20,17 +20,17 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.bitcoinj.core.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CreateTakeOfferFeeTx extends Task<SellerAsTakerModel> {
public class CreateTakeOfferFeeTx extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(CreateTakeOfferFeeTx.class);
public CreateTakeOfferFeeTx(TaskRunner taskHandler, SellerAsTakerModel model) {
public CreateTakeOfferFeeTx(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -21,7 +21,7 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -29,10 +29,10 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
import static io.bitsquare.util.Validator.checkTradeId;
public class ProcessDepositTxPublishedMessage extends Task<SellerAsTakerModel> {
public class ProcessDepositTxPublishedMessage extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessDepositTxPublishedMessage.class);
public ProcessDepositTxPublishedMessage(TaskRunner taskHandler, SellerAsTakerModel model) {
public ProcessDepositTxPublishedMessage(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -19,8 +19,9 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -28,10 +29,10 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
import static io.bitsquare.util.Validator.*;
public class ProcessFiatTransferStartedMessage extends Task<SellerAsTakerModel> {
public class ProcessFiatTransferStartedMessage extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessFiatTransferStartedMessage.class);
public ProcessFiatTransferStartedMessage(TaskRunner taskHandler, SellerAsTakerModel model) {
public ProcessFiatTransferStartedMessage(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}
@ -45,9 +46,11 @@ public class ProcessFiatTransferStartedMessage extends Task<SellerAsTakerModel>
model.offerer.payoutAmount = positiveCoinOf(nonZeroCoinOf(message.offererPayoutAmount));
model.taker.payoutAmount = positiveCoinOf(nonZeroCoinOf(message.takerPayoutAmount));
model.offerer.payoutAddressString = nonEmptyStringOf(message.offererPayoutAddress);
model.trade.setState(Trade.State.FIAT_PAYMENT_STARTED);
complete();
} catch (Throwable t) {
model.trade.setState(Trade.State.FAULT);
failed(t);
}
}

View File

@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.messages.RequestDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.messages.RequestTakerDepositPaymentMessage;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -28,10 +28,10 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.*;
import static io.bitsquare.util.Validator.*;
public class ProcessRequestDepositPaymentMessage extends Task<SellerAsTakerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessRequestDepositPaymentMessage.class);
public class ProcessRequestTakerDepositPaymentMessage extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(ProcessRequestTakerDepositPaymentMessage.class);
public ProcessRequestDepositPaymentMessage(TaskRunner taskHandler, SellerAsTakerModel model) {
public ProcessRequestTakerDepositPaymentMessage(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}
@ -39,7 +39,7 @@ public class ProcessRequestDepositPaymentMessage extends Task<SellerAsTakerModel
protected void doRun() {
try {
checkTradeId(model.id, model.getTradeMessage());
RequestDepositPaymentMessage message = (RequestDepositPaymentMessage) model.getTradeMessage();
RequestTakerDepositPaymentMessage message = (RequestTakerDepositPaymentMessage) model.getTradeMessage();
model.offerer.connectedOutputsForAllInputs = checkNotNull(message.offererConnectedOutputsForAllInputs);
checkArgument(message.offererConnectedOutputsForAllInputs.size() > 0);

View File

@ -21,15 +21,15 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendPayoutTxToOfferer extends Task<SellerAsTakerModel> {
public class SendPayoutTxToOfferer extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(SendPayoutTxToOfferer.class);
public SendPayoutTxToOfferer(TaskRunner taskHandler, SellerAsTakerModel model) {
public SendPayoutTxToOfferer(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -22,17 +22,17 @@ import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.messages.RequestDepositTxInputsMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import javafx.application.Platform;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendRequestDepositTxInputsMessage extends Task<SellerAsTakerModel> {
public class SendRequestDepositTxInputsMessage extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(SendRequestDepositTxInputsMessage.class);
public SendRequestDepositTxInputsMessage(TaskRunner taskHandler, SellerAsTakerModel model) {
public SendRequestDepositTxInputsMessage(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -21,15 +21,15 @@ import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.protocol.trade.messages.RequestOffererPublishDepositTxMessage;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SendSignedTakerDepositTx extends Task<SellerAsTakerModel> {
public class SendSignedTakerDepositTx extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(SendSignedTakerDepositTx.class);
public SendSignedTakerDepositTx(TaskRunner taskHandler, SellerAsTakerModel model) {
public SendSignedTakerDepositTx(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.bitcoinj.core.Transaction;
@ -31,10 +31,10 @@ import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SignAndPublishPayoutTx extends Task<SellerAsTakerModel> {
public class SignAndPublishPayoutTx extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(SignAndPublishPayoutTx.class);
public SignAndPublishPayoutTx(TaskRunner taskHandler, SellerAsTakerModel model) {
public SignAndPublishPayoutTx(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -19,15 +19,15 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TakerCommitDepositTx extends Task<SellerAsTakerModel> {
public class TakerCommitDepositTx extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(TakerCommitDepositTx.class);
public TakerCommitDepositTx(TaskRunner taskHandler, SellerAsTakerModel model) {
public TakerCommitDepositTx(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -22,17 +22,17 @@ import io.bitsquare.btc.TradeWalletService;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.bitcoinj.core.Coin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TakerCreatesAndSignsDepositTx extends Task<SellerAsTakerModel> {
public class TakerCreatesAndSignsDepositTx extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(TakerCreatesAndSignsDepositTx.class);
public TakerCreatesAndSignsDepositTx(TaskRunner taskHandler, SellerAsTakerModel model) {
public TakerCreatesAndSignsDepositTx(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -19,15 +19,15 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VerifyOfferFeePayment extends Task<SellerAsTakerModel> {
public class VerifyOfferFeePayment extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(VerifyOfferFeePayment.class);
public VerifyOfferFeePayment(TaskRunner taskHandler, SellerAsTakerModel model) {
public VerifyOfferFeePayment(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}

View File

@ -19,15 +19,15 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.common.taskrunner.Task;
import io.bitsquare.common.taskrunner.TaskRunner;
import io.bitsquare.trade.protocol.trade.taker.models.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.models.TakerAsSellerModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VerifyOffererAccount extends Task<SellerAsTakerModel> {
public class VerifyOffererAccount extends Task<TakerAsSellerModel> {
private static final Logger log = LoggerFactory.getLogger(VerifyOffererAccount.class);
public VerifyOffererAccount(TaskRunner taskHandler, SellerAsTakerModel model) {
public VerifyOffererAccount(TaskRunner taskHandler, TakerAsSellerModel model) {
super(taskHandler, model);
}