From 0a4e082e44d33de33ee8cabc307138a3819e1f3d Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 2 Apr 2015 15:11:49 +0200 Subject: [PATCH] Unified Buyer tasks --- .../bitsquare/gui/main/debug/DebugView.java | 30 +++-- .../pending/PendingTradesViewModel.java | 8 +- .../java/io/bitsquare/p2p/MailboxService.java | 2 +- .../java/io/bitsquare/p2p/MessageService.java | 2 +- .../p2p/tomp2p/TomP2PMailboxService.java | 8 +- .../p2p/tomp2p/TomP2PMessageService.java | 17 +-- .../java/io/bitsquare/trade/Contract.java | 48 ++++---- .../buyer/offerer/BuyerAsOffererProtocol.java | 36 +++--- .../offerer/tasks/OffererCommitsPayoutTx.java | 50 --------- .../tasks/OffererCreatesAndSignPayoutTx.java | 66 ----------- .../tasks/OffererCreatesDepositTxInputs.java | 67 ------------ ...ffererProcessPayoutTxPublishedMessage.java | 62 ----------- ...rProcessRequestDepositTxInputsMessage.java | 11 +- ...ProcessRequestPublishDepositTxMessage.java | 11 +- ...OffererSendsDepositTxPublishedMessage.java | 70 ------------ ...ffererSendsFiatTransferStartedMessage.java | 87 --------------- ...ndsRequestSellerDepositPaymentMessage.java | 91 ---------------- .../OffererSignsAndPublishDepositTx.java | 103 ------------------ .../OffererVerifiesAndSignsContract.java | 74 ------------- .../buyer/taker/BuyerAsTakerProtocol.java | 40 +++---- ...estPublishDepositTxFromSellerMessage.java} | 10 +- ...kerSendsRequestDepositTxInputsMessage.java | 12 +- ...erSendsRequestPublishDepositTxMessage.java | 11 +- .../BuyerCommitsPayoutTx.java} | 8 +- .../BuyerCreatesAndSignPayoutTx.java} | 28 +++-- .../BuyerCreatesDepositTxInputs.java} | 11 +- ...BuyerProcessPayoutTxPublishedMessage.java} | 17 +-- .../BuyerSendsDepositTxPublishedMessage.java} | 18 ++- ...BuyerSendsFiatTransferStartedMessage.java} | 38 +++---- .../BuyerSendsRequestPayDepositMessage.java} | 36 ++---- .../BuyerSignsAndPublishDepositTx.java} | 37 ++++--- .../BuyerVerifiesAndSignsContract.java} | 24 ++-- .../protocol/trade/buyer/tasks/StateUtil.java | 45 ++++++++ .../messages/FiatTransferStartedMessage.java | 8 +- .../RequestPayDepositFromOffererMessage.java | 60 ---------- .../messages/RequestPayDepositMessage.java | 4 + ...estPublishDepositTxFromSellerMessage.java} | 24 ++-- ...ssRequestPayDepositFromOffererMessage.java | 4 +- ...questPublishDepositTxFromTakerMessage.java | 4 +- .../taker/tasks/CreateTakeOfferFeeTx.java | 1 + 40 files changed, 284 insertions(+), 999 deletions(-) delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCommitsPayoutTx.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesAndSignPayoutTx.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesDepositTxInputs.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessPayoutTxPublishedMessage.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsDepositTxPublishedMessage.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsFiatTransferStartedMessage.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsRequestSellerDepositPaymentMessage.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSignsAndPublishDepositTx.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererVerifiesAndSignsContract.java rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/{TakerProcessRequestPublishDepositTxFromTakerMessage.java => TakerProcessRequestPublishDepositTxFromSellerMessage.java} (87%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerCommitsPayoutTx.java => tasks/BuyerCommitsPayoutTx.java} (83%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerCreatesAndSignsPayoutTx.java => tasks/BuyerCreatesAndSignPayoutTx.java} (65%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerCreatesDepositTxInputs.java => tasks/BuyerCreatesDepositTxInputs.java} (84%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerProcessPayoutTxPublishedMessage.java => tasks/BuyerProcessPayoutTxPublishedMessage.java} (72%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerSendsDepositTxPublishedMessage.java => tasks/BuyerSendsDepositTxPublishedMessage.java} (73%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerSendsFiatTransferStartedMessage.java => tasks/BuyerSendsFiatTransferStartedMessage.java} (68%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerSendsRequestPayDepositMessage.java => tasks/BuyerSendsRequestPayDepositMessage.java} (63%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerSignsAndPublishDepositTx.java => tasks/BuyerSignsAndPublishDepositTx.java} (71%) rename core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/{taker/tasks/TakerVerifiesAndSignsContract.java => tasks/BuyerVerifiesAndSignsContract.java} (77%) create mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/StateUtil.java delete mode 100644 core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositFromOffererMessage.java rename core/src/main/java/io/bitsquare/trade/protocol/trade/messages/{RequestPublishDepositTxFromTakerMessage.java => RequestPublishDepositTxFromSellerMessage.java} (61%) diff --git a/core/src/main/java/io/bitsquare/gui/main/debug/DebugView.java b/core/src/main/java/io/bitsquare/gui/main/debug/DebugView.java index 336d713b5d..060ad518d6 100644 --- a/core/src/main/java/io/bitsquare/gui/main/debug/DebugView.java +++ b/core/src/main/java/io/bitsquare/gui/main/debug/DebugView.java @@ -29,18 +29,17 @@ 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.buyer.offerer.BuyerAsOffererProtocol; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererCreatesAndSignPayoutTx; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererCreatesDepositTxInputs; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererProcessPayoutTxPublishedMessage; import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererProcessRequestDepositTxInputsMessage; import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererProcessRequestPublishDepositTxMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSendsDepositTxPublishedMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSendsFiatTransferStartedMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSendsRequestSellerDepositPaymentMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSignsAndPublishDepositTx; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererVerifiesAndSignsContract; import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerSendsRequestDepositTxInputsMessage; import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerSendsRequestPublishDepositTxMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesAndSignPayoutTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesDepositTxInputs; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerProcessPayoutTxPublishedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsDepositTxPublishedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsFiatTransferStartedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsRequestPayDepositMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSignsAndPublishDepositTx; import io.bitsquare.trade.protocol.trade.seller.taker.SellerAsTakerProtocol; import io.bitsquare.trade.protocol.trade.seller.taker.tasks.TakerCommitDepositTx; import io.bitsquare.trade.protocol.trade.seller.taker.tasks.TakerCreatesAndSignContract; @@ -102,20 +101,19 @@ public class DebugView extends InitializableView { /*---- Protocol ----*/ BuyerAsOffererProtocol.class, OffererProcessRequestDepositTxInputsMessage.class, - OffererCreatesDepositTxInputs.class, - OffererSendsRequestSellerDepositPaymentMessage.class, + BuyerCreatesDepositTxInputs.class, + BuyerSendsRequestPayDepositMessage.class, OffererProcessRequestPublishDepositTxMessage.class, VerifyTakerAccount.class, - OffererVerifiesAndSignsContract.class, - OffererSignsAndPublishDepositTx.class, - OffererSendsDepositTxPublishedMessage.class, + BuyerSignsAndPublishDepositTx.class, + BuyerSendsDepositTxPublishedMessage.class, - OffererCreatesAndSignPayoutTx.class, + BuyerCreatesAndSignPayoutTx.class, VerifyTakeOfferFeePayment.class, - OffererSendsFiatTransferStartedMessage.class, + BuyerSendsFiatTransferStartedMessage.class, - OffererProcessPayoutTxPublishedMessage.class, + BuyerProcessPayoutTxPublishedMessage.class, Boolean.class, /* used as seperator*/ diff --git a/core/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java b/core/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java index a925a073e0..4d5e91653f 100644 --- a/core/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java +++ b/core/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesViewModel.java @@ -217,7 +217,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel() { @Override public void operationComplete(BaseFuture future) throws Exception { @@ -85,7 +85,7 @@ public class TomP2PMailboxService extends TomP2PDHTService implements MailboxSer executor.execute(() -> { resultHandler.handleResult(); - log.trace("Add message to mailbox was successful. Added data: [locationKey: " + getLocationKey(p2pSigPubKey) + + log.trace("Add message to mailbox was successful. Added data: [locationKey: " + getLocationKey(recipientP2pSigPubKey) + ", value: " + data + "]"); }); } diff --git a/core/src/main/java/io/bitsquare/p2p/tomp2p/TomP2PMessageService.java b/core/src/main/java/io/bitsquare/p2p/tomp2p/TomP2PMessageService.java index 4f91d2b8bc..f5e29b1517 100644 --- a/core/src/main/java/io/bitsquare/p2p/tomp2p/TomP2PMessageService.java +++ b/core/src/main/java/io/bitsquare/p2p/tomp2p/TomP2PMessageService.java @@ -78,7 +78,7 @@ public class TomP2PMessageService extends TomP2PService implements MessageServic } @Override - public void sendMessage(Peer peer, Message message, PublicKey p2pSigPubKey, PublicKey p2pEncryptPubKey, + public void sendMessage(Peer peer, Message message, PublicKey recipientP2pSigPubKey, PublicKey recipientP2pEncryptPubKey, SendMessageListener listener) { if (peer == null) @@ -95,9 +95,9 @@ public class TomP2PMessageService extends TomP2PService implements MessageServic executor.execute(listener::handleResult); } else { - if (p2pSigPubKey != null && p2pEncryptPubKey != null) { + if (recipientP2pSigPubKey != null && recipientP2pEncryptPubKey != null) { log.info("sendMessage failed. We will try to send the message to the mailbox. Fault reason: " + futureDirect.failedReason()); - sendMailboxMessage(p2pSigPubKey, p2pEncryptPubKey, (MailboxMessage) message, listener); + sendMailboxMessage(recipientP2pSigPubKey, recipientP2pEncryptPubKey, (MailboxMessage) message, listener); } else { log.error("sendMessage failed with reason " + futureDirect.failedReason()); @@ -108,9 +108,9 @@ public class TomP2PMessageService extends TomP2PService implements MessageServic @Override public void exceptionCaught(Throwable t) throws Exception { - if (p2pSigPubKey != null && p2pEncryptPubKey != null) { + if (recipientP2pSigPubKey != null && recipientP2pEncryptPubKey != null) { log.info("sendMessage failed with exception. We will try to send the message to the mailbox. Exception: " + t.getMessage()); - sendMailboxMessage(p2pSigPubKey, p2pEncryptPubKey, (MailboxMessage) message, listener); + sendMailboxMessage(recipientP2pSigPubKey, recipientP2pEncryptPubKey, (MailboxMessage) message, listener); } else { log.error("sendMessage failed with exception " + t.getMessage()); @@ -120,18 +120,19 @@ public class TomP2PMessageService extends TomP2PService implements MessageServic }); } - private void sendMailboxMessage(PublicKey p2pSigPubKey, PublicKey p2pEncryptPubKey, MailboxMessage message, SendMessageListener listener) { + private void sendMailboxMessage(PublicKey recipientP2pSigPubKey, PublicKey recipientP2pEncryptPubKey, MailboxMessage message, SendMessageListener + listener) { Bucket bucket = null; log.info("sendMailboxMessage called"); try { - bucket = encryptionService.encryptObject(p2pEncryptPubKey, message); + bucket = encryptionService.encryptObject(recipientP2pEncryptPubKey, message); } catch (Throwable t) { t.printStackTrace(); log.error(t.getMessage()); executor.execute(listener::handleFault); } EncryptedMailboxMessage encrypted = new EncryptedMailboxMessage(bucket); - mailboxService.addMessage(p2pSigPubKey, + mailboxService.addMessage(recipientP2pSigPubKey, encrypted, () -> { log.debug("Message successfully added to peers mailbox."); diff --git a/core/src/main/java/io/bitsquare/trade/Contract.java b/core/src/main/java/io/bitsquare/trade/Contract.java index cd24a23c26..af1bb8fc76 100644 --- a/core/src/main/java/io/bitsquare/trade/Contract.java +++ b/core/src/main/java/io/bitsquare/trade/Contract.java @@ -38,31 +38,31 @@ public class Contract implements Serializable { public final Offer offer; public final String takeOfferFeeTxID; public final Coin tradeAmount; - public final String offererAccountID; - public final String takerAccountID; - public final FiatAccount offererFiatAccount; - public final FiatAccount takerFiatAccount; - public final String offererP2PSigPubKeyAsString; - public final String takerP2PSigPubKeyAsString; + public final String buyerAccountID; + public final String sellerAccountID; + public final FiatAccount buyerFiatAccount; + public final FiatAccount sellerFiatAccount; + public final String buyerP2PSigPubKeyAsString; + public final String sellerP2PSigPubKeyAsString; public Contract(Offer offer, Coin tradeAmount, String takeOfferFeeTxID, - String offererAccountID, - String takerAccountID, - FiatAccount offererFiatAccount, - FiatAccount takerFiatAccount, - PublicKey offererP2PSigPubKey, - PublicKey takerP2PSigPubKey) { + String buyerAccountID, + String sellerAccountID, + FiatAccount buyerFiatAccount, + FiatAccount sellerFiatAccount, + PublicKey buyerP2PSigPubKey, + PublicKey sellerP2PSigPubKey) { this.offer = offer; this.tradeAmount = tradeAmount; this.takeOfferFeeTxID = takeOfferFeeTxID; - this.offererAccountID = offererAccountID; - this.takerAccountID = takerAccountID; - this.offererFiatAccount = offererFiatAccount; - this.takerFiatAccount = takerFiatAccount; - this.offererP2PSigPubKeyAsString = Utilities.getHexFromPubKey(offererP2PSigPubKey); - this.takerP2PSigPubKeyAsString = Utilities.getHexFromPubKey(takerP2PSigPubKey); + this.buyerAccountID = buyerAccountID; + this.sellerAccountID = sellerAccountID; + this.buyerFiatAccount = buyerFiatAccount; + this.sellerFiatAccount = sellerFiatAccount; + this.buyerP2PSigPubKeyAsString = Utilities.getHexFromPubKey(buyerP2PSigPubKey); + this.sellerP2PSigPubKeyAsString = Utilities.getHexFromPubKey(sellerP2PSigPubKey); } @Override @@ -71,12 +71,12 @@ public class Contract implements Serializable { "offer=" + offer + ", takeOfferFeeTxID='" + takeOfferFeeTxID + '\'' + ", tradeAmount=" + tradeAmount + - ", offererAccountID='" + offererAccountID + '\'' + - ", takerAccountID='" + takerAccountID + '\'' + - ", offererFiatAccount=" + offererFiatAccount + - ", takerFiatAccount=" + takerFiatAccount + - ", offererP2PSigPubKeyAsString='" + offererP2PSigPubKeyAsString + '\'' + - ", takerP2PSigPubKeyAsString='" + takerP2PSigPubKeyAsString + '\'' + + ", buyerAccountID='" + buyerAccountID + '\'' + + ", sellerAccountID='" + sellerAccountID + '\'' + + ", buyerFiatAccount=" + buyerFiatAccount + + ", sellerFiatAccount=" + sellerFiatAccount + + ", buyerP2PSigPubKeyAsString='" + buyerP2PSigPubKeyAsString + '\'' + + ", sellerP2PSigPubKeyAsString='" + sellerP2PSigPubKeyAsString + '\'' + '}'; } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/BuyerAsOffererProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/BuyerAsOffererProtocol.java index 66ced29168..cc2cde9f7a 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/BuyerAsOffererProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/BuyerAsOffererProtocol.java @@ -27,17 +27,17 @@ import io.bitsquare.trade.BuyerAsOffererTrade; import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage; import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailableMessage; import io.bitsquare.trade.protocol.trade.TradeProtocol; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererCommitsPayoutTx; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererCreatesAndSignPayoutTx; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererCreatesDepositTxInputs; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererProcessPayoutTxPublishedMessage; import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererProcessRequestDepositTxInputsMessage; import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererProcessRequestPublishDepositTxMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSendsDepositTxPublishedMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSendsFiatTransferStartedMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSendsRequestSellerDepositPaymentMessage; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererSignsAndPublishDepositTx; -import io.bitsquare.trade.protocol.trade.buyer.offerer.tasks.OffererVerifiesAndSignsContract; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCommitsPayoutTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesAndSignPayoutTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesDepositTxInputs; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerProcessPayoutTxPublishedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsDepositTxPublishedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsFiatTransferStartedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsRequestPayDepositMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSignsAndPublishDepositTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerVerifiesAndSignsContract; import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage; import io.bitsquare.trade.protocol.trade.messages.RequestDepositTxInputsMessage; import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxMessage; @@ -144,8 +144,8 @@ public class BuyerAsOffererProtocol implements TradeProtocol { this::handleTaskRunnerFault); taskRunner.addTasks( OffererProcessRequestDepositTxInputsMessage.class, - OffererCreatesDepositTxInputs.class, - OffererSendsRequestSellerDepositPaymentMessage.class + BuyerCreatesDepositTxInputs.class, + BuyerSendsRequestPayDepositMessage.class ); taskRunner.run(); } @@ -159,9 +159,9 @@ public class BuyerAsOffererProtocol implements TradeProtocol { taskRunner.addTasks( OffererProcessRequestPublishDepositTxMessage.class, VerifyTakerAccount.class, - OffererVerifiesAndSignsContract.class, - OffererSignsAndPublishDepositTx.class, - OffererSendsDepositTxPublishedMessage.class + BuyerVerifiesAndSignsContract.class, + BuyerSignsAndPublishDepositTx.class, + BuyerSendsDepositTxPublishedMessage.class ); taskRunner.run(); } @@ -178,8 +178,8 @@ public class BuyerAsOffererProtocol implements TradeProtocol { this::handleTaskRunnerFault); taskRunner.addTasks( VerifyTakeOfferFeePayment.class, - OffererCreatesAndSignPayoutTx.class, - OffererSendsFiatTransferStartedMessage.class + BuyerCreatesAndSignPayoutTx.class, + BuyerSendsFiatTransferStartedMessage.class ); taskRunner.run(); } @@ -200,8 +200,8 @@ public class BuyerAsOffererProtocol implements TradeProtocol { }, this::handleTaskRunnerFault); - taskRunner.addTasks(OffererProcessPayoutTxPublishedMessage.class); - taskRunner.addTasks(OffererCommitsPayoutTx.class); + taskRunner.addTasks(BuyerProcessPayoutTxPublishedMessage.class); + taskRunner.addTasks(BuyerCommitsPayoutTx.class); taskRunner.run(); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCommitsPayoutTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCommitsPayoutTx.java deleted file mode 100644 index 0a6b45d222..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCommitsPayoutTx.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; - -import org.bitcoinj.core.Transaction; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererCommitsPayoutTx extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererCommitsPayoutTx.class); - - public OffererCommitsPayoutTx(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - Transaction transaction = processModel.getTradeWalletService().commitTx(trade.getPayoutTx()); - - trade.setPayoutTx(transaction); - - complete(); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); - } - } -} \ No newline at end of file diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesAndSignPayoutTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesAndSignPayoutTx.java deleted file mode 100644 index ca8a3c9acd..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesAndSignPayoutTx.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; - -import org.bitcoinj.core.Coin; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererCreatesAndSignPayoutTx extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererCreatesAndSignPayoutTx.class); - - public OffererCreatesAndSignPayoutTx(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - assert trade.getTradeAmount() != null; - Coin securityDeposit = trade.getSecurityDeposit(); - Coin offererPayoutAmount = securityDeposit.add(trade.getTradeAmount()); - Coin takerPayoutAmount = securityDeposit; - - byte[] offererPayoutTxSignature = processModel.getTradeWalletService().createAndSignPayoutTx( - trade.getDepositTx(), - offererPayoutAmount, - takerPayoutAmount, - processModel.getAddressEntry(), - processModel.tradingPeer.getPayoutAddressString(), - processModel.getTradeWalletPubKey(), - processModel.tradingPeer.getTradeWalletPubKey(), - processModel.getArbitratorPubKey()); - - processModel.setPayoutTxSignature(offererPayoutTxSignature); - processModel.setPayoutAmount(offererPayoutAmount); - processModel.tradingPeer.setPayoutAmount(takerPayoutAmount); - - complete(); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); - } - } -} - diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesDepositTxInputs.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesDepositTxInputs.java deleted file mode 100644 index fcf240ee03..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererCreatesDepositTxInputs.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.btc.FeePolicy; -import io.bitsquare.btc.TradeWalletService; -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.states.OffererState; - -import org.bitcoinj.core.Coin; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererCreatesDepositTxInputs extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererCreatesDepositTxInputs.class); - - public OffererCreatesDepositTxInputs(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - log.debug("trade.id" + trade.getId()); - Coin inputAmount = trade.getSecurityDeposit().add(FeePolicy.TX_FEE); - TradeWalletService.Result result = processModel.getTradeWalletService().createDepositTxInputs(inputAmount, - processModel.getAddressEntry()); - - processModel.setConnectedOutputsForAllInputs(result.getConnectedOutputsForAllInputs()); - processModel.setOutputs(result.getOutputs()); - - complete(); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) { - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - } - else if (trade instanceof SellerAsOffererTrade) { - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - } - - failed(t); - } - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessPayoutTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessPayoutTxPublishedMessage.java deleted file mode 100644 index f51cc5e73a..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessPayoutTxPublishedMessage.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage; -import io.bitsquare.trade.states.OffererState; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static com.google.common.base.Preconditions.checkNotNull; -import static io.bitsquare.util.Validator.checkTradeId; - -public class OffererProcessPayoutTxPublishedMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererProcessPayoutTxPublishedMessage.class); - - public OffererProcessPayoutTxPublishedMessage(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - PayoutTxPublishedMessage message = (PayoutTxPublishedMessage) processModel.getTradeMessage(); - checkTradeId(processModel.getId(), message); - checkNotNull(message); - - trade.setPayoutTx(checkNotNull(message.payoutTx)); - - if (trade instanceof BuyerAsOffererTrade) - trade.setProcessState(OffererState.ProcessState.PAYOUT_PUBLISHED); - else if (trade instanceof SellerAsOffererTrade) - trade.setProcessState(OffererState.ProcessState.PAYOUT_PUBLISHED); - - complete(); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); - } - } -} \ No newline at end of file diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestDepositTxInputsMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestDepositTxInputsMessage.java index 648be2a938..33ca4d24b3 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestDepositTxInputsMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestDepositTxInputsMessage.java @@ -18,12 +18,10 @@ package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; +import io.bitsquare.trade.protocol.trade.buyer.tasks.StateUtil; import io.bitsquare.trade.protocol.trade.messages.RequestDepositTxInputsMessage; -import io.bitsquare.trade.states.OffererState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,12 +51,7 @@ public class OffererProcessRequestDepositTxInputsMessage extends TradeTask { } catch (Throwable t) { t.printStackTrace(); trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - else if (trade instanceof SellerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - + StateUtil.setOfferOpenState(trade); failed(t); } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestPublishDepositTxMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestPublishDepositTxMessage.java index 9895d5eb80..78ce090958 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestPublishDepositTxMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererProcessRequestPublishDepositTxMessage.java @@ -18,12 +18,10 @@ package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; +import io.bitsquare.trade.protocol.trade.buyer.tasks.StateUtil; import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxMessage; -import io.bitsquare.trade.states.OffererState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,12 +58,7 @@ public class OffererProcessRequestPublishDepositTxMessage extends TradeTask { } catch (Throwable t) { t.printStackTrace(); trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - else if (trade instanceof SellerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - + StateUtil.setOfferOpenState(trade); failed(t); } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsDepositTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsDepositTxPublishedMessage.java deleted file mode 100644 index af4cea293c..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsDepositTxPublishedMessage.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage; -import io.bitsquare.trade.states.OffererState; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererSendsDepositTxPublishedMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererSendsDepositTxPublishedMessage.class); - - public OffererSendsDepositTxPublishedMessage(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - DepositTxPublishedMessage tradeMessage = new DepositTxPublishedMessage(processModel.getId(), trade.getDepositTx()); - - processModel.getMessageService().sendMessage(trade.getTradingPeer(), tradeMessage, new SendMessageListener() { - @Override - public void handleResult() { - log.trace("DepositTxPublishedMessage successfully arrived at peer"); - complete(); - } - - @Override - public void handleFault() { - appendToErrorMessage("Sending DepositTxPublishedMessage failed"); - trade.setErrorMessage(errorMessage); - - if (trade instanceof BuyerAsOffererTrade) - trade.setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - else if (trade instanceof SellerAsOffererTrade) - trade.setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - - failed(); - } - }); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); - } - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsFiatTransferStartedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsFiatTransferStartedMessage.java deleted file mode 100644 index 8531a4c81a..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsFiatTransferStartedMessage.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage; -import io.bitsquare.trade.states.OffererState; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererSendsFiatTransferStartedMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererSendsFiatTransferStartedMessage.class); - - public OffererSendsFiatTransferStartedMessage(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - FiatTransferStartedMessage tradeMessage = new FiatTransferStartedMessage(processModel.getId(), - processModel.getPayoutTxSignature(), - processModel.getPayoutAmount(), - processModel.tradingPeer.getPayoutAmount(), - processModel.getAddressEntry().getAddressString()); - - processModel.getMessageService().sendMessage(trade.getTradingPeer(), tradeMessage, - processModel.tradingPeer.getP2pSigPubKey(), - processModel.tradingPeer.getP2pEncryptPubKey(), - new SendMessageListener() { - @Override - public void handleResult() { - log.trace("Sending FiatTransferStartedMessage succeeded."); - - if (trade instanceof BuyerAsOffererTrade) { - ((BuyerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.FIAT_PAYMENT_STARTED); - } - else if (trade instanceof SellerAsOffererTrade) { - ((SellerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.FIAT_PAYMENT_STARTED); - } - - complete(); - } - - @Override - public void handleFault() { - appendToErrorMessage("Sending FiatTransferStartedMessage failed"); - trade.setErrorMessage(errorMessage); - - if (trade instanceof BuyerAsOffererTrade) { - ((BuyerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - } - else if (trade instanceof SellerAsOffererTrade) { - ((SellerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - } - - failed(); - } - }); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); - } - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsRequestSellerDepositPaymentMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsRequestSellerDepositPaymentMessage.java deleted file mode 100644 index 9dc0d0e634..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSendsRequestSellerDepositPaymentMessage.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.RequestPayDepositMessage; -import io.bitsquare.trade.states.OffererState; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererSendsRequestSellerDepositPaymentMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererSendsRequestSellerDepositPaymentMessage.class); - - public OffererSendsRequestSellerDepositPaymentMessage(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - RequestPayDepositMessage tradeMessage = new RequestPayDepositMessage( - processModel.getId(), - processModel.getConnectedOutputsForAllInputs(), - processModel.getOutputs(), - processModel.getTradeWalletPubKey(), - processModel.getP2pSigPubKey(), - processModel.getP2pEncryptPubKey(), - processModel.getFiatAccount(), - processModel.getAccountId()); - - processModel.getMessageService().sendMessage(trade.getTradingPeer(), tradeMessage, new SendMessageListener() { - @Override - public void handleResult() { - log.trace("RequestTakerDepositPaymentMessage successfully arrived at peer"); - complete(); - } - - @Override - public void handleFault() { - appendToErrorMessage("Sending RequestTakerDepositPaymentMessage failed"); - trade.setErrorMessage(errorMessage); - if (trade instanceof BuyerAsOffererTrade) { - ((BuyerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - ((BuyerAsOffererTrade) trade).setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - } - else if (trade instanceof SellerAsOffererTrade) { - ((SellerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - ((SellerAsOffererTrade) trade).setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - } - - failed(); - } - }); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) { - ((BuyerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - ((SellerAsOffererTrade) trade).setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - } - else if (trade instanceof SellerAsOffererTrade) { - ((SellerAsOffererTrade) trade).setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); - ((SellerAsOffererTrade) trade).setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - } - - failed(t); - } - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSignsAndPublishDepositTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSignsAndPublishDepositTx.java deleted file mode 100644 index 768e240833..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererSignsAndPublishDepositTx.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.btc.FeePolicy; -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.states.OffererState; - -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.Transaction; - -import com.google.common.util.concurrent.FutureCallback; - -import org.jetbrains.annotations.NotNull; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererSignsAndPublishDepositTx extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererSignsAndPublishDepositTx.class); - - public OffererSignsAndPublishDepositTx(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - Coin inputAmount = trade.getSecurityDeposit().add(FeePolicy.TX_FEE); - - processModel.getTradeWalletService().signAndPublishDepositTx( - processModel.tradingPeer.getPreparedDepositTx(), - processModel.getConnectedOutputsForAllInputs(), - processModel.tradingPeer.getConnectedOutputsForAllInputs(), - processModel.getOutputs(), - inputAmount, - processModel.getTradeWalletPubKey(), - processModel.tradingPeer.getTradeWalletPubKey(), - processModel.getArbitratorPubKey(), - new FutureCallback() { - @Override - public void onSuccess(Transaction transaction) { - log.trace("offererSignAndPublishTx succeeded " + transaction); - - trade.setDepositTx(transaction); - - if (trade instanceof BuyerAsOffererTrade) { - trade.setProcessState(OffererState.ProcessState.DEPOSIT_PUBLISHED); - trade.setLifeCycleState(OffererState.LifeCycleState.PENDING); - } - else if (trade instanceof SellerAsOffererTrade) { - trade.setProcessState(OffererState.ProcessState.DEPOSIT_PUBLISHED); - trade.setLifeCycleState(OffererState.LifeCycleState.PENDING); - } - - complete(); - } - - @Override - public void onFailure(@NotNull Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - else if (trade instanceof SellerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - - failed(t); - } - }); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - else if (trade instanceof SellerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - - failed(t); - } - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererVerifiesAndSignsContract.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererVerifiesAndSignsContract.java deleted file mode 100644 index 80f4679b1c..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/offerer/tasks/OffererVerifiesAndSignsContract.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.buyer.offerer.tasks; - -import io.bitsquare.common.taskrunner.TaskRunner; -import io.bitsquare.trade.BuyerAsOffererTrade; -import io.bitsquare.trade.Contract; -import io.bitsquare.trade.SellerAsOffererTrade; -import io.bitsquare.trade.Trade; -import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.states.OffererState; -import io.bitsquare.util.Utilities; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OffererVerifiesAndSignsContract extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(OffererVerifiesAndSignsContract.class); - - public OffererVerifiesAndSignsContract(TaskRunner taskHandler, Trade trade) { - super(taskHandler, trade); - } - - @Override - protected void doRun() { - try { - Contract contract = new Contract( - processModel.getOffer(), - trade.getTradeAmount(), - processModel.getTakeOfferFeeTxId(), - processModel.getAccountId(), - processModel.tradingPeer.getAccountId(), - processModel.getFiatAccount(), - processModel.tradingPeer.getFiatAccount(), - processModel.getP2pSigPubKey(), - processModel.tradingPeer.getP2pSigPubKey()); - String contractAsJson = Utilities.objectToJson(contract); - String signature = processModel.getSignatureService().signMessage(processModel.getRegistrationKeyPair(), - contractAsJson); - - trade.setContract(contract); - trade.setContractAsJson(contractAsJson); - trade.setOffererContractSignature(signature); - trade.setTakerContractSignature(processModel.tradingPeer.getContractSignature()); - - complete(); - } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - - if (trade instanceof BuyerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - else if (trade instanceof SellerAsOffererTrade) - trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); - - failed(t); - } - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/BuyerAsTakerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/BuyerAsTakerProtocol.java index 71752df940..e2f70084a2 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/BuyerAsTakerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/BuyerAsTakerProtocol.java @@ -24,16 +24,16 @@ import io.bitsquare.p2p.MessageHandler; import io.bitsquare.p2p.Peer; import io.bitsquare.trade.BuyerAsTakerTrade; import io.bitsquare.trade.protocol.trade.TradeProtocol; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerCommitsPayoutTx; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerCreatesAndSignsPayoutTx; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerCreatesDepositTxInputs; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerProcessPayoutTxPublishedMessage; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerProcessRequestPublishDepositTxFromTakerMessage; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerSendsDepositTxPublishedMessage; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerSendsFiatTransferStartedMessage; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerSendsRequestPayDepositMessage; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerSignsAndPublishDepositTx; -import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerVerifiesAndSignsContract; +import io.bitsquare.trade.protocol.trade.buyer.taker.tasks.TakerProcessRequestPublishDepositTxFromSellerMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCommitsPayoutTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesAndSignPayoutTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesDepositTxInputs; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerProcessPayoutTxPublishedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsDepositTxPublishedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsFiatTransferStartedMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSendsRequestPayDepositMessage; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerSignsAndPublishDepositTx; +import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerVerifiesAndSignsContract; import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage; import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxMessage; import io.bitsquare.trade.protocol.trade.messages.TradeMessage; @@ -101,8 +101,8 @@ public class BuyerAsTakerProtocol implements TradeProtocol { taskRunner.addTasks( CreateTakeOfferFeeTx.class, BroadcastTakeOfferFeeTx.class, - TakerCreatesDepositTxInputs.class, - TakerSendsRequestPayDepositMessage.class + BuyerCreatesDepositTxInputs.class, + BuyerSendsRequestPayDepositMessage.class ); taskRunner.run(); } @@ -119,11 +119,11 @@ public class BuyerAsTakerProtocol implements TradeProtocol { () -> log.debug("taskRunner at handleRequestPublishDepositTxMessage completed"), this::handleTaskRunnerFault); taskRunner.addTasks( - TakerProcessRequestPublishDepositTxFromTakerMessage.class, + TakerProcessRequestPublishDepositTxFromSellerMessage.class, VerifyOffererAccount.class, - TakerVerifiesAndSignsContract.class, - TakerSignsAndPublishDepositTx.class, - TakerSendsDepositTxPublishedMessage.class + BuyerVerifiesAndSignsContract.class, + BuyerSignsAndPublishDepositTx.class, + BuyerSendsDepositTxPublishedMessage.class ); taskRunner.run(); } @@ -140,8 +140,8 @@ public class BuyerAsTakerProtocol implements TradeProtocol { this::handleTaskRunnerFault); taskRunner.addTasks( VerifyOfferFeePayment.class, - TakerCreatesAndSignsPayoutTx.class, - TakerSendsFiatTransferStartedMessage.class + BuyerCreatesAndSignPayoutTx.class, + BuyerSendsFiatTransferStartedMessage.class ); taskRunner.run(); } @@ -163,8 +163,8 @@ public class BuyerAsTakerProtocol implements TradeProtocol { this::handleTaskRunnerFault); taskRunner.addTasks( - TakerProcessPayoutTxPublishedMessage.class, - TakerCommitsPayoutTx.class); + BuyerProcessPayoutTxPublishedMessage.class, + BuyerCommitsPayoutTx.class); taskRunner.run(); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessRequestPublishDepositTxFromTakerMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessRequestPublishDepositTxFromSellerMessage.java similarity index 87% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessRequestPublishDepositTxFromTakerMessage.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessRequestPublishDepositTxFromSellerMessage.java index ba2f6b20ae..d8aa790c82 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessRequestPublishDepositTxFromTakerMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessRequestPublishDepositTxFromSellerMessage.java @@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxFromTakerMessage; +import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxFromSellerMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,17 +28,17 @@ import org.slf4j.LoggerFactory; import static com.google.common.base.Preconditions.*; import static io.bitsquare.util.Validator.*; -public class TakerProcessRequestPublishDepositTxFromTakerMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerProcessRequestPublishDepositTxFromTakerMessage.class); +public class TakerProcessRequestPublishDepositTxFromSellerMessage extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(TakerProcessRequestPublishDepositTxFromSellerMessage.class); - public TakerProcessRequestPublishDepositTxFromTakerMessage(TaskRunner taskHandler, Trade trade) { + public TakerProcessRequestPublishDepositTxFromSellerMessage(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @Override protected void doRun() { try { - RequestPublishDepositTxFromTakerMessage message = (RequestPublishDepositTxFromTakerMessage) processModel.getTradeMessage(); + RequestPublishDepositTxFromSellerMessage message = (RequestPublishDepositTxFromSellerMessage) processModel.getTradeMessage(); checkTradeId(processModel.getId(), message); checkNotNull(message); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestDepositTxInputsMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestDepositTxInputsMessage.java index 31317ba76b..25e05ac491 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestDepositTxInputsMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestDepositTxInputsMessage.java @@ -19,12 +19,10 @@ package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsTakerTrade; -import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; +import io.bitsquare.trade.protocol.trade.buyer.tasks.StateUtil; import io.bitsquare.trade.protocol.trade.messages.RequestDepositTxInputsMessage; -import io.bitsquare.trade.states.TakerState; import javafx.application.Platform; @@ -72,13 +70,7 @@ public class TakerSendsRequestDepositTxInputsMessage extends TradeTask { "or cancel that trade."); trade.setErrorMessage(errorMessage); - - if (trade instanceof BuyerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - else if (trade instanceof SellerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - - + StateUtil.setSendFailedState(trade); failed(); } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPublishDepositTxMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPublishDepositTxMessage.java index da8ba869ad..0a68dab2d1 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPublishDepositTxMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPublishDepositTxMessage.java @@ -19,12 +19,10 @@ package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsTakerTrade; -import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; +import io.bitsquare.trade.protocol.trade.buyer.tasks.StateUtil; import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxMessage; -import io.bitsquare.trade.states.TakerState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -62,12 +60,7 @@ public class TakerSendsRequestPublishDepositTxMessage extends TradeTask { public void handleFault() { appendToErrorMessage("Sending RequestOffererPublishDepositTxMessage failed"); trade.setErrorMessage(errorMessage); - - if (trade instanceof BuyerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - else if (trade instanceof SellerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - + StateUtil.setSendFailedState(trade); failed(); } }); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCommitsPayoutTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCommitsPayoutTx.java similarity index 83% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCommitsPayoutTx.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCommitsPayoutTx.java index 03bd398ddc..84f2623cea 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCommitsPayoutTx.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCommitsPayoutTx.java @@ -15,7 +15,7 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.trade.Trade; @@ -26,10 +26,10 @@ import org.bitcoinj.core.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerCommitsPayoutTx extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerCommitsPayoutTx.class); +public class BuyerCommitsPayoutTx extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerCommitsPayoutTx.class); - public TakerCommitsPayoutTx(TaskRunner taskHandler, Trade trade) { + public BuyerCommitsPayoutTx(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCreatesAndSignsPayoutTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCreatesAndSignPayoutTx.java similarity index 65% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCreatesAndSignsPayoutTx.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCreatesAndSignPayoutTx.java index e9e59a8325..3f5bd9c2bf 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCreatesAndSignsPayoutTx.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCreatesAndSignPayoutTx.java @@ -15,7 +15,7 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.trade.Trade; @@ -26,10 +26,10 @@ import org.bitcoinj.core.Coin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerCreatesAndSignsPayoutTx extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerCreatesAndSignsPayoutTx.class); +public class BuyerCreatesAndSignPayoutTx extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerCreatesAndSignPayoutTx.class); - public TakerCreatesAndSignsPayoutTx(TaskRunner taskHandler, Trade trade) { + public BuyerCreatesAndSignPayoutTx(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -37,25 +37,23 @@ public class TakerCreatesAndSignsPayoutTx extends TradeTask { protected void doRun() { try { assert trade.getTradeAmount() != null; - Coin securityDeposit = trade.getSecurityDeposit(); + assert trade.getSecurityDeposit() != null; + Coin sellerPayoutAmount = trade.getSecurityDeposit(); + Coin buyerPayoutAmount = sellerPayoutAmount.add(trade.getTradeAmount()); - Coin offererPayoutAmount = securityDeposit; - Coin takerPayoutAmount = securityDeposit.add(trade.getTradeAmount()); - - - byte[] takerPayoutTxSignature = processModel.getTradeWalletService().createAndSignPayoutTx( + byte[] buyerPayoutTxSignature = processModel.getTradeWalletService().createAndSignPayoutTx( trade.getDepositTx(), - takerPayoutAmount, - offererPayoutAmount, + buyerPayoutAmount, + sellerPayoutAmount, processModel.getAddressEntry(), processModel.tradingPeer.getPayoutAddressString(), processModel.getTradeWalletPubKey(), processModel.tradingPeer.getTradeWalletPubKey(), processModel.getArbitratorPubKey()); - processModel.setPayoutTxSignature(takerPayoutTxSignature); - processModel.setPayoutAmount(takerPayoutAmount); - processModel.tradingPeer.setPayoutAmount(offererPayoutAmount); + processModel.setPayoutTxSignature(buyerPayoutTxSignature); + processModel.setPayoutAmount(buyerPayoutAmount); + processModel.tradingPeer.setPayoutAmount(sellerPayoutAmount); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCreatesDepositTxInputs.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCreatesDepositTxInputs.java similarity index 84% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCreatesDepositTxInputs.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCreatesDepositTxInputs.java index 56d88fd112..18a823bc66 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerCreatesDepositTxInputs.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerCreatesDepositTxInputs.java @@ -15,7 +15,7 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.btc.FeePolicy; import io.bitsquare.btc.TradeWalletService; @@ -28,10 +28,10 @@ import org.bitcoinj.core.Coin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerCreatesDepositTxInputs extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerCreatesDepositTxInputs.class); +public class BuyerCreatesDepositTxInputs extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerCreatesDepositTxInputs.class); - public TakerCreatesDepositTxInputs(TaskRunner taskHandler, Trade trade) { + public BuyerCreatesDepositTxInputs(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -50,6 +50,9 @@ public class TakerCreatesDepositTxInputs extends TradeTask { } catch (Throwable t) { t.printStackTrace(); trade.setThrowable(t); + + StateUtil.setOfferOpenState(trade); + failed(t); } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessPayoutTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerProcessPayoutTxPublishedMessage.java similarity index 72% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessPayoutTxPublishedMessage.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerProcessPayoutTxPublishedMessage.java index 8f29d92e92..74f79ca546 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerProcessPayoutTxPublishedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerProcessPayoutTxPublishedMessage.java @@ -15,14 +15,17 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; +import io.bitsquare.trade.BuyerAsOffererTrade; import io.bitsquare.trade.BuyerAsTakerTrade; +import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; import io.bitsquare.trade.protocol.trade.messages.PayoutTxPublishedMessage; +import io.bitsquare.trade.states.OffererState; import io.bitsquare.trade.states.TakerState; import org.slf4j.Logger; @@ -31,10 +34,10 @@ import org.slf4j.LoggerFactory; import static com.google.common.base.Preconditions.checkNotNull; import static io.bitsquare.util.Validator.checkTradeId; -public class TakerProcessPayoutTxPublishedMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerProcessPayoutTxPublishedMessage.class); +public class BuyerProcessPayoutTxPublishedMessage extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerProcessPayoutTxPublishedMessage.class); - public TakerProcessPayoutTxPublishedMessage(TaskRunner taskHandler, Trade trade) { + public BuyerProcessPayoutTxPublishedMessage(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -47,9 +50,9 @@ public class TakerProcessPayoutTxPublishedMessage extends TradeTask { trade.setPayoutTx(checkNotNull(message.payoutTx)); - if (trade instanceof BuyerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.PAYOUT_PUBLISHED); - else if (trade instanceof SellerAsTakerTrade) + if (trade instanceof BuyerAsOffererTrade || trade instanceof SellerAsOffererTrade) + trade.setProcessState(OffererState.ProcessState.PAYOUT_PUBLISHED); + else if (trade instanceof BuyerAsTakerTrade || trade instanceof SellerAsTakerTrade) trade.setProcessState(TakerState.ProcessState.PAYOUT_PUBLISHED); complete(); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsDepositTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsDepositTxPublishedMessage.java similarity index 73% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsDepositTxPublishedMessage.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsDepositTxPublishedMessage.java index 31f9928b8a..c955ced0f1 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsDepositTxPublishedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsDepositTxPublishedMessage.java @@ -15,24 +15,21 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsTakerTrade; -import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage; -import io.bitsquare.trade.states.TakerState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerSendsDepositTxPublishedMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerSendsDepositTxPublishedMessage.class); +public class BuyerSendsDepositTxPublishedMessage extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerSendsDepositTxPublishedMessage.class); - public TakerSendsDepositTxPublishedMessage(TaskRunner taskHandler, Trade trade) { + public BuyerSendsDepositTxPublishedMessage(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -53,10 +50,7 @@ public class TakerSendsDepositTxPublishedMessage extends TradeTask { appendToErrorMessage("Sending DepositTxPublishedMessage failed"); trade.setErrorMessage(errorMessage); - if (trade instanceof BuyerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - else if (trade instanceof SellerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); + StateUtil.setSendFailedState(trade); failed(); } @@ -67,4 +61,6 @@ public class TakerSendsDepositTxPublishedMessage extends TradeTask { failed(t); } } + + } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsFiatTransferStartedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsFiatTransferStartedMessage.java similarity index 68% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsFiatTransferStartedMessage.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsFiatTransferStartedMessage.java index 743deb55df..8d6f4f819a 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsFiatTransferStartedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsFiatTransferStartedMessage.java @@ -15,24 +15,27 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.p2p.listener.SendMessageListener; +import io.bitsquare.trade.BuyerAsOffererTrade; import io.bitsquare.trade.BuyerAsTakerTrade; +import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage; +import io.bitsquare.trade.states.OffererState; import io.bitsquare.trade.states.TakerState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerSendsFiatTransferStartedMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerSendsFiatTransferStartedMessage.class); +public class BuyerSendsFiatTransferStartedMessage extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerSendsFiatTransferStartedMessage.class); - public TakerSendsFiatTransferStartedMessage(TaskRunner taskHandler, Trade trade) { + public BuyerSendsFiatTransferStartedMessage(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -42,23 +45,22 @@ public class TakerSendsFiatTransferStartedMessage extends TradeTask { FiatTransferStartedMessage tradeMessage = new FiatTransferStartedMessage(processModel.getId(), processModel.getPayoutTxSignature(), processModel.getPayoutAmount(), - processModel.tradingPeer.getPayoutAmount(), - processModel.getAddressEntry().getAddressString()); + processModel.getAddressEntry().getAddressString(), + processModel.tradingPeer.getPayoutAmount() + ); processModel.getMessageService().sendMessage(trade.getTradingPeer(), tradeMessage, - processModel.getP2pSigPubKey(), - processModel.getP2pEncryptPubKey(), + processModel.tradingPeer.getP2pSigPubKey(), + processModel.tradingPeer.getP2pEncryptPubKey(), new SendMessageListener() { @Override public void handleResult() { log.trace("Sending FiatTransferStartedMessage succeeded."); - if (trade instanceof BuyerAsTakerTrade) { + if (trade instanceof BuyerAsOffererTrade || trade instanceof SellerAsOffererTrade) + trade.setProcessState(OffererState.ProcessState.FIAT_PAYMENT_STARTED); + if (trade instanceof BuyerAsTakerTrade || trade instanceof SellerAsTakerTrade) trade.setProcessState(TakerState.ProcessState.FIAT_PAYMENT_STARTED); - } - else if (trade instanceof SellerAsTakerTrade) { - trade.setProcessState(TakerState.ProcessState.FIAT_PAYMENT_STARTED); - } complete(); } @@ -68,16 +70,12 @@ public class TakerSendsFiatTransferStartedMessage extends TradeTask { appendToErrorMessage("Sending FiatTransferStartedMessage failed"); trade.setErrorMessage(errorMessage); - if (trade instanceof BuyerAsTakerTrade) { - ((BuyerAsTakerTrade) trade).setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - } - else if (trade instanceof SellerAsTakerTrade) { - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - } + StateUtil.setSendFailedState(trade); failed(); } - }); + } + ); } catch (Throwable t) { t.printStackTrace(); trade.setThrowable(t); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPayDepositMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsRequestPayDepositMessage.java similarity index 63% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPayDepositMessage.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsRequestPayDepositMessage.java index d53a26807e..bd4cd2c7c3 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSendsRequestPayDepositMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSendsRequestPayDepositMessage.java @@ -15,33 +15,30 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.p2p.listener.SendMessageListener; -import io.bitsquare.trade.BuyerAsTakerTrade; -import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.RequestPayDepositFromOffererMessage; -import io.bitsquare.trade.states.TakerState; +import io.bitsquare.trade.protocol.trade.messages.RequestPayDepositMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerSendsRequestPayDepositMessage extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerSendsRequestPayDepositMessage.class); +public class BuyerSendsRequestPayDepositMessage extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerSendsRequestPayDepositMessage.class); - public TakerSendsRequestPayDepositMessage(TaskRunner taskHandler, Trade trade) { + public BuyerSendsRequestPayDepositMessage(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @Override protected void doRun() { try { - RequestPayDepositFromOffererMessage message = new RequestPayDepositFromOffererMessage( + RequestPayDepositMessage tradeMessage = new RequestPayDepositMessage( processModel.getId(), - model.getTradeAmount(), + trade.getTradeAmount(), processModel.getConnectedOutputsForAllInputs(), processModel.getOutputs(), processModel.getTradeWalletPubKey(), @@ -50,7 +47,7 @@ public class TakerSendsRequestPayDepositMessage extends TradeTask { processModel.getFiatAccount(), processModel.getAccountId()); - processModel.getMessageService().sendMessage(trade.getTradingPeer(), message, new SendMessageListener() { + processModel.getMessageService().sendMessage(trade.getTradingPeer(), tradeMessage, new SendMessageListener() { @Override public void handleResult() { log.trace("RequestTakerDepositPaymentMessage successfully arrived at peer"); @@ -61,25 +58,16 @@ public class TakerSendsRequestPayDepositMessage extends TradeTask { public void handleFault() { appendToErrorMessage("Sending RequestTakerDepositPaymentMessage failed"); trade.setErrorMessage(errorMessage); - if (trade instanceof BuyerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - else if (trade instanceof SellerAsTakerTrade) - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - + StateUtil.setOfferOpenState(trade); + StateUtil.setSendFailedState(trade); failed(); } }); } catch (Throwable t) { t.printStackTrace(); trade.setThrowable(t); - - if (trade instanceof BuyerAsTakerTrade) { - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - } - else if (trade instanceof SellerAsTakerTrade) { - trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); - } - + StateUtil.setOfferOpenState(trade); + StateUtil.setSendFailedState(trade); failed(t); } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSignsAndPublishDepositTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSignsAndPublishDepositTx.java similarity index 71% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSignsAndPublishDepositTx.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSignsAndPublishDepositTx.java index c3a63faf48..37414c357b 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerSignsAndPublishDepositTx.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerSignsAndPublishDepositTx.java @@ -15,14 +15,17 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.btc.FeePolicy; import io.bitsquare.common.taskrunner.TaskRunner; +import io.bitsquare.trade.BuyerAsOffererTrade; import io.bitsquare.trade.BuyerAsTakerTrade; +import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.SellerAsTakerTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; +import io.bitsquare.trade.states.OffererState; import io.bitsquare.trade.states.TakerState; import org.bitcoinj.core.Coin; @@ -35,10 +38,10 @@ import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerSignsAndPublishDepositTx extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerSignsAndPublishDepositTx.class); +public class BuyerSignsAndPublishDepositTx extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerSignsAndPublishDepositTx.class); - public TakerSignsAndPublishDepositTx(TaskRunner taskHandler, Trade trade) { + public BuyerSignsAndPublishDepositTx(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -63,13 +66,13 @@ public class TakerSignsAndPublishDepositTx extends TradeTask { trade.setDepositTx(transaction); - if (trade instanceof BuyerAsTakerTrade) { + if (trade instanceof BuyerAsTakerTrade || trade instanceof SellerAsTakerTrade) { trade.setProcessState(TakerState.ProcessState.DEPOSIT_PUBLISHED); trade.setLifeCycleState(TakerState.LifeCycleState.PENDING); } - else if (trade instanceof SellerAsTakerTrade) { - trade.setProcessState(TakerState.ProcessState.DEPOSIT_PUBLISHED); - trade.setLifeCycleState(TakerState.LifeCycleState.PENDING); + else if (trade instanceof BuyerAsOffererTrade || trade instanceof SellerAsOffererTrade) { + trade.setProcessState(OffererState.ProcessState.DEPOSIT_PUBLISHED); + trade.setLifeCycleState(OffererState.LifeCycleState.PENDING); } complete(); @@ -77,15 +80,21 @@ public class TakerSignsAndPublishDepositTx extends TradeTask { @Override public void onFailure(@NotNull Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); + handleFault(t); } }); } catch (Throwable t) { - t.printStackTrace(); - trade.setThrowable(t); - failed(t); + handleFault(t); } } + + private void handleFault(Throwable t) { + t.printStackTrace(); + trade.setThrowable(t); + + if (trade instanceof BuyerAsOffererTrade || trade instanceof SellerAsOffererTrade) + trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); + + failed(t); + } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerVerifiesAndSignsContract.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerVerifiesAndSignsContract.java similarity index 77% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerVerifiesAndSignsContract.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerVerifiesAndSignsContract.java index 84cd946444..1cd9569298 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/taker/tasks/TakerVerifiesAndSignsContract.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/BuyerVerifiesAndSignsContract.java @@ -15,7 +15,7 @@ * along with Bitsquare. If not, see . */ -package io.bitsquare.trade.protocol.trade.buyer.taker.tasks; +package io.bitsquare.trade.protocol.trade.buyer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.trade.Contract; @@ -26,10 +26,10 @@ import io.bitsquare.util.Utilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TakerVerifiesAndSignsContract extends TradeTask { - private static final Logger log = LoggerFactory.getLogger(TakerVerifiesAndSignsContract.class); +public class BuyerVerifiesAndSignsContract extends TradeTask { + private static final Logger log = LoggerFactory.getLogger(BuyerVerifiesAndSignsContract.class); - public TakerVerifiesAndSignsContract(TaskRunner taskHandler, Trade trade) { + public BuyerVerifiesAndSignsContract(TaskRunner taskHandler, Trade trade) { super(taskHandler, trade); } @@ -39,17 +39,15 @@ public class TakerVerifiesAndSignsContract extends TradeTask { Contract contract = new Contract( processModel.getOffer(), trade.getTradeAmount(), - processModel.getTakeOfferFeeTx().getHashAsString(), - processModel.tradingPeer.getAccountId(), + processModel.getTakeOfferFeeTxId(), processModel.getAccountId(), - processModel.tradingPeer.getFiatAccount(), + processModel.tradingPeer.getAccountId(), processModel.getFiatAccount(), - processModel.tradingPeer.getP2pSigPubKey(), - processModel.getP2pSigPubKey()); + processModel.tradingPeer.getFiatAccount(), + processModel.getP2pSigPubKey(), + processModel.tradingPeer.getP2pSigPubKey()); String contractAsJson = Utilities.objectToJson(contract); - String signature = processModel.getSignatureService().signMessage(processModel.getRegistrationKeyPair(), - contractAsJson); - + String signature = processModel.getSignatureService().signMessage(processModel.getRegistrationKeyPair(), contractAsJson); trade.setContract(contract); trade.setContractAsJson(contractAsJson); trade.setOffererContractSignature(signature); @@ -60,6 +58,8 @@ public class TakerVerifiesAndSignsContract extends TradeTask { t.printStackTrace(); trade.setThrowable(t); + StateUtil.setOfferOpenState(trade); + failed(t); } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/StateUtil.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/StateUtil.java new file mode 100644 index 0000000000..acf7391988 --- /dev/null +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/buyer/tasks/StateUtil.java @@ -0,0 +1,45 @@ +/* + * This file is part of Bitsquare. + * + * Bitsquare is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bitsquare is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bitsquare. If not, see . + */ + +package io.bitsquare.trade.protocol.trade.buyer.tasks; + +import io.bitsquare.trade.BuyerAsOffererTrade; +import io.bitsquare.trade.BuyerAsTakerTrade; +import io.bitsquare.trade.SellerAsOffererTrade; +import io.bitsquare.trade.SellerAsTakerTrade; +import io.bitsquare.trade.Trade; +import io.bitsquare.trade.states.OffererState; +import io.bitsquare.trade.states.TakerState; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class StateUtil { + private static final Logger log = LoggerFactory.getLogger(StateUtil.class); + + public static void setSendFailedState(Trade trade) { + if (trade instanceof BuyerAsOffererTrade || trade instanceof SellerAsOffererTrade) + trade.setProcessState(OffererState.ProcessState.MESSAGE_SENDING_FAILED); + else if (trade instanceof BuyerAsTakerTrade || trade instanceof SellerAsTakerTrade) + trade.setProcessState(TakerState.ProcessState.MESSAGE_SENDING_FAILED); + } + + public static void setOfferOpenState(Trade trade) { + if (trade instanceof BuyerAsOffererTrade || trade instanceof SellerAsOffererTrade) + trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_OPEN); + } +} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java index c8de18219b..a6a1e2152d 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/FiatTransferStartedMessage.java @@ -32,18 +32,18 @@ public class FiatTransferStartedMessage extends TradeMessage implements MailboxM public final byte[] buyerSignature; public final Coin buyerPayoutAmount; - public final Coin sellerPayoutAmount; public final String buyerPayoutAddress; + public final Coin sellerPayoutAmount; public FiatTransferStartedMessage(String tradeId, byte[] buyerSignature, Coin buyerPayoutAmount, - Coin sellerPayoutAmount, - String buyerPayoutAddress) { + String buyerPayoutAddress, + Coin sellerPayoutAmount) { super(tradeId); this.buyerSignature = buyerSignature; this.buyerPayoutAmount = buyerPayoutAmount; - this.sellerPayoutAmount = sellerPayoutAmount; this.buyerPayoutAddress = buyerPayoutAddress; + this.sellerPayoutAmount = sellerPayoutAmount; } } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositFromOffererMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositFromOffererMessage.java deleted file mode 100644 index daa14586bd..0000000000 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositFromOffererMessage.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of Bitsquare. - * - * Bitsquare is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bitsquare is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bitsquare. If not, see . - */ - -package io.bitsquare.trade.protocol.trade.messages; - -import io.bitsquare.fiat.FiatAccount; - -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.TransactionOutput; - -import java.io.Serializable; - -import java.security.PublicKey; - -import java.util.List; - -import javax.annotation.concurrent.Immutable; - -@Immutable -public class RequestPayDepositFromOffererMessage extends RequestPayDepositMessage implements Serializable { - // That object is sent over the wire, so we need to take care of version compatibility. - private static final long serialVersionUID = 1L; - - public final Coin tradeAmount; - - public RequestPayDepositFromOffererMessage(String tradeId, - Coin tradeAmount, - List buyerConnectedOutputsForAllInputs, - List buyerOutputs, - byte[] buyerTradeWalletPubKey, - PublicKey buyerP2PSigPublicKey, - PublicKey buyerP2PEncryptPublicKey, - FiatAccount buyerFiatAccount, - String buyerAccountId) { - super(tradeId, - buyerConnectedOutputsForAllInputs, - buyerOutputs, - buyerTradeWalletPubKey, - buyerP2PSigPublicKey, - buyerP2PEncryptPublicKey, - buyerFiatAccount, - buyerAccountId); - - this.tradeAmount = tradeAmount; - } -} diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositMessage.java index bafd2971ef..4140a1ff85 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPayDepositMessage.java @@ -19,6 +19,7 @@ package io.bitsquare.trade.protocol.trade.messages; import io.bitsquare.fiat.FiatAccount; +import org.bitcoinj.core.Coin; import org.bitcoinj.core.TransactionOutput; import java.io.Serializable; @@ -41,8 +42,10 @@ public class RequestPayDepositMessage extends TradeMessage implements Serializab public final PublicKey buyerP2PEncryptPublicKey; public final FiatAccount buyerFiatAccount; public final String buyerAccountId; + public final Coin tradeAmount; public RequestPayDepositMessage(String tradeId, + Coin tradeAmount, List buyerConnectedOutputsForAllInputs, List buyerOutputs, byte[] buyerTradeWalletPubKey, @@ -51,6 +54,7 @@ public class RequestPayDepositMessage extends TradeMessage implements Serializab FiatAccount buyerFiatAccount, String buyerAccountId) { super(tradeId); + this.tradeAmount = tradeAmount; this.buyerP2PSigPublicKey = buyerP2PSigPublicKey; this.buyerP2PEncryptPublicKey = buyerP2PEncryptPublicKey; this.buyerConnectedOutputsForAllInputs = buyerConnectedOutputsForAllInputs; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPublishDepositTxFromTakerMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPublishDepositTxFromSellerMessage.java similarity index 61% rename from core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPublishDepositTxFromTakerMessage.java rename to core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPublishDepositTxFromSellerMessage.java index d459980b8b..49802b56ba 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPublishDepositTxFromTakerMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/messages/RequestPublishDepositTxFromSellerMessage.java @@ -31,22 +31,22 @@ import java.util.List; import javax.annotation.concurrent.Immutable; @Immutable -public class RequestPublishDepositTxFromTakerMessage extends RequestPublishDepositTxMessage implements Serializable { +public class RequestPublishDepositTxFromSellerMessage extends RequestPublishDepositTxMessage implements Serializable { // That object is sent over the wire, so we need to take care of version compatibility. private static final long serialVersionUID = 1L; public byte[] sellerTradeWalletPubKey; - public RequestPublishDepositTxFromTakerMessage(String tradeId, - FiatAccount takerFiatAccount, - String takerAccountId, - byte[] sellerTradeWalletPubKey, - PublicKey takerP2PSigPublicKey, - PublicKey takerP2PEncryptPublicKey, - String takerContractAsJson, - String takerContractSignature, - String takerPayoutAddressString, - Transaction takersPreparedDepositTx, - List takerConnectedOutputsForAllInputs) { + public RequestPublishDepositTxFromSellerMessage(String tradeId, + FiatAccount takerFiatAccount, + String takerAccountId, + byte[] sellerTradeWalletPubKey, + PublicKey takerP2PSigPublicKey, + PublicKey takerP2PEncryptPublicKey, + String takerContractAsJson, + String takerContractSignature, + String takerPayoutAddressString, + Transaction takersPreparedDepositTx, + List takerConnectedOutputsForAllInputs) { super(tradeId, takerFiatAccount, takerAccountId, diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererProcessRequestPayDepositFromOffererMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererProcessRequestPayDepositFromOffererMessage.java index 13c5f604a4..dfc7d0d086 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererProcessRequestPayDepositFromOffererMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererProcessRequestPayDepositFromOffererMessage.java @@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.seller.offerer.tasks; import io.bitsquare.common.taskrunner.TaskRunner; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.RequestPayDepositFromOffererMessage; +import io.bitsquare.trade.protocol.trade.messages.RequestPayDepositMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +38,7 @@ public class OffererProcessRequestPayDepositFromOffererMessage extends TradeTask @Override protected void doRun() { try { - RequestPayDepositFromOffererMessage message = (RequestPayDepositFromOffererMessage) processModel.getTradeMessage(); + RequestPayDepositMessage message = (RequestPayDepositMessage) processModel.getTradeMessage(); checkTradeId(processModel.getId(), message); checkNotNull(message); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererSendsRequestPublishDepositTxFromTakerMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererSendsRequestPublishDepositTxFromTakerMessage.java index 9228e31b05..99394a07bf 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererSendsRequestPublishDepositTxFromTakerMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/seller/offerer/tasks/OffererSendsRequestPublishDepositTxFromTakerMessage.java @@ -23,7 +23,7 @@ import io.bitsquare.trade.BuyerAsOffererTrade; import io.bitsquare.trade.SellerAsOffererTrade; import io.bitsquare.trade.Trade; import io.bitsquare.trade.protocol.trade.TradeTask; -import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxFromTakerMessage; +import io.bitsquare.trade.protocol.trade.messages.RequestPublishDepositTxFromSellerMessage; import io.bitsquare.trade.states.OffererState; import org.slf4j.Logger; @@ -39,7 +39,7 @@ public class OffererSendsRequestPublishDepositTxFromTakerMessage extends TradeTa @Override protected void doRun() { try { - RequestPublishDepositTxFromTakerMessage tradeMessage = new RequestPublishDepositTxFromTakerMessage( + RequestPublishDepositTxFromSellerMessage tradeMessage = new RequestPublishDepositTxFromSellerMessage( processModel.getId(), processModel.getFiatAccount(), processModel.getAccountId(), diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/taker/tasks/CreateTakeOfferFeeTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/taker/tasks/CreateTakeOfferFeeTx.java index 48a95dbab0..0573add566 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/taker/tasks/CreateTakeOfferFeeTx.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/shared/taker/tasks/CreateTakeOfferFeeTx.java @@ -42,6 +42,7 @@ public class CreateTakeOfferFeeTx extends TradeTask { Transaction createTakeOfferFeeTx = processModel.getTradeWalletService().createTakeOfferFeeTx(processModel.getAddressEntry()); processModel.setTakeOfferFeeTx(createTakeOfferFeeTx); + processModel.setTakeOfferFeeTxId(createTakeOfferFeeTx.getHashAsString()); if (trade instanceof BuyerAsTakerTrade) trade.setProcessState(TakerState.ProcessState.TAKE_OFFER_FEE_TX_CREATED);