Changed type for tasks

This commit is contained in:
Manfred Karrer 2015-04-02 16:43:23 +02:00
parent a71853140a
commit 47ff54e0d6
11 changed files with 83 additions and 56 deletions

View file

@ -17,15 +17,8 @@
package io.bitsquare.common.taskrunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public interface Model {
void persist();
public class Model {
private static final Logger log = LoggerFactory.getLogger(Model.class);
public void persist() {
}
public void onComplete() {
}
void onComplete();
}

View file

@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
* Holds all data which are relevant to the trade, but not those which are only needed in the trade process as shared data between tasks. Those data are
* stored in the task model.
*/
abstract public class Trade extends Model implements Serializable {
abstract public class Trade implements Model, Serializable {
// That object is saved to disc. We need to take care of changes to not break deserialization.
private static final long serialVersionUID = 1L;

View file

@ -27,7 +27,7 @@ import io.bitsquare.trade.protocol.trade.messages.OfferMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CheckOfferAvailabilityModel extends Model {
public class CheckOfferAvailabilityModel implements Model {
private static final Logger log = LoggerFactory.getLogger(CheckOfferAvailabilityModel.class);
public final Offer offer;
@ -58,4 +58,14 @@ public class CheckOfferAvailabilityModel extends Model {
public OfferMessage getMessage() {
return message;
}
@Override
public void persist() {
}
@Override
public void onComplete() {
}
}

View file

@ -28,7 +28,7 @@ import org.bitcoinj.core.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PlaceOfferModel extends Model {
public class PlaceOfferModel implements Model {
private static final Logger log = LoggerFactory.getLogger(PlaceOfferModel.class);
public final Offer offer;
@ -55,4 +55,14 @@ public class PlaceOfferModel extends Model {
public Transaction getTransaction() {
return transaction;
}
@Override
public void persist() {
}
@Override
public void onComplete() {
}
}

View file

@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
public class TradeTask extends Task<Trade> {
private static final Logger log = LoggerFactory.getLogger(TradeTask.class);
protected final ProcessModel processModel;
protected final Trade trade;

View file

@ -24,6 +24,7 @@ import io.bitsquare.p2p.MessageHandler;
import io.bitsquare.p2p.Peer;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.BuyerAsOffererTrade;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage;
import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailableMessage;
import io.bitsquare.trade.protocol.trade.TradeProtocol;
@ -56,17 +57,17 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
private static final Logger log = LoggerFactory.getLogger(BuyerAsOffererProtocol.class);
private MessageHandler messageHandler;
private final BuyerAsOffererTrade buyerAsOffererTrade;
private final BuyerAsOffererTrade trade;
private final ProcessModel processModel;
///////////////////////////////////////////////////////////////////////////////////////////
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
public BuyerAsOffererProtocol(BuyerAsOffererTrade model) {
public BuyerAsOffererProtocol(BuyerAsOffererTrade trade) {
log.debug("New OffererProtocol " + this);
this.buyerAsOffererTrade = model;
processModel = buyerAsOffererTrade.getProcessModel();
this.trade = trade;
processModel = this.trade.getProcessModel();
messageHandler = this::handleMessage;
processModel.getMessageService().addMessageHandler(messageHandler);
@ -110,7 +111,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
// to take the
// offer
// at the same time
boolean isOfferOpen = buyerAsOffererTrade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN;
boolean isOfferOpen = trade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN;
ReportOfferAvailabilityMessage reportOfferAvailabilityMessage = new ReportOfferAvailabilityMessage(processModel.getId(), isOfferOpen);
processModel.getMessageService().sendMessage(sender, reportOfferAvailabilityMessage, new SendMessageListener() {
@Override
@ -135,11 +136,11 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
private void handleRequestDepositTxInputsMessage(RequestDepositTxInputsMessage tradeMessage, Peer taker) {
checkTradeId(processModel.getId(), tradeMessage);
processModel.setTradeMessage(tradeMessage);
buyerAsOffererTrade.setTradingPeer(taker);
trade.setTradingPeer(taker);
buyerAsOffererTrade.setLifeCycleState(OffererState.LifeCycleState.OFFER_RESERVED);
trade.setLifeCycleState(OffererState.LifeCycleState.OFFER_RESERVED);
TaskRunner<BuyerAsOffererTrade> taskRunner = new TaskRunner<>(buyerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleRequestDepositTxInputsMessage completed"),
this::handleTaskRunnerFault);
taskRunner.addTasks(
@ -153,7 +154,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
private void handleRequestPublishDepositTxMessage(RequestPublishDepositTxMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<BuyerAsOffererTrade> taskRunner = new TaskRunner<>(buyerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleRequestPublishDepositTxMessage completed"),
this::handleTaskRunnerFault);
taskRunner.addTasks(
@ -173,7 +174,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
// User clicked the "bank transfer started" button
public void onFiatPaymentStarted() {
TaskRunner<BuyerAsOffererTrade> taskRunner = new TaskRunner<>(buyerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleBankTransferStartedUIEvent completed"),
this::handleTaskRunnerFault);
taskRunner.addTasks(
@ -192,7 +193,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
private void handlePayoutTxPublishedMessage(PayoutTxPublishedMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<BuyerAsOffererTrade> taskRunner = new TaskRunner<>(buyerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> {
log.debug("taskRunner at handlePayoutTxPublishedMessage completed");
// we are done!
@ -216,7 +217,7 @@ public class BuyerAsOffererProtocol implements TradeProtocol {
TradeMessage tradeMessage = (TradeMessage) message;
nonEmptyStringOf(tradeMessage.tradeId);
if (tradeMessage.tradeId.equals(buyerAsOffererTrade.getId())) {
if (tradeMessage.tradeId.equals(trade.getId())) {
if (tradeMessage instanceof RequestIsOfferAvailableMessage) {
handleRequestIsOfferAvailableMessage((RequestIsOfferAvailableMessage) tradeMessage, sender);
}

View file

@ -23,6 +23,7 @@ import io.bitsquare.p2p.Message;
import io.bitsquare.p2p.MessageHandler;
import io.bitsquare.p2p.Peer;
import io.bitsquare.trade.BuyerAsTakerTrade;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.TradeProtocol;
import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCommitsPayoutTx;
import io.bitsquare.trade.protocol.trade.buyer.tasks.BuyerCreatesAndSignPayoutTx;
@ -51,7 +52,7 @@ import static io.bitsquare.util.Validator.nonEmptyStringOf;
public class BuyerAsTakerProtocol implements TradeProtocol {
private static final Logger log = LoggerFactory.getLogger(BuyerAsTakerProtocol.class);
private final BuyerAsTakerTrade buyerAsTakerTrade;
private final BuyerAsTakerTrade trade;
private final ProcessModel processModel;
private final MessageHandler messageHandler;
@ -62,7 +63,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol {
public BuyerAsTakerProtocol(BuyerAsTakerTrade trade) {
log.debug("New SellerAsTakerProtocol " + this);
this.buyerAsTakerTrade = trade;
this.trade = trade;
processModel = trade.getProcessModel();
messageHandler = this::handleMessage;
@ -94,7 +95,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol {
}
public void takeAvailableOffer() {
TaskRunner<BuyerAsTakerTrade> taskRunner = new TaskRunner<>(buyerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at takeAvailableOffer completed"),
this::handleTaskRunnerFault);
@ -115,7 +116,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol {
private void handle(RequestPublishDepositTxMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<BuyerAsTakerTrade> taskRunner = new TaskRunner<>(buyerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleRequestPublishDepositTxMessage completed"),
this::handleTaskRunnerFault);
taskRunner.addTasks(
@ -135,7 +136,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol {
// User clicked the "bank transfer started" button
public void onFiatPaymentStarted() {
TaskRunner<BuyerAsTakerTrade> taskRunner = new TaskRunner<>(buyerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at onFiatPaymentStarted completed"),
this::handleTaskRunnerFault);
taskRunner.addTasks(
@ -154,7 +155,7 @@ public class BuyerAsTakerProtocol implements TradeProtocol {
private void handle(PayoutTxPublishedMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<BuyerAsTakerTrade> taskRunner = new TaskRunner<>(buyerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> {
log.debug("taskRunner at handlePayoutTxPublishedMessage completed");
// we are done!

View file

@ -24,6 +24,7 @@ import io.bitsquare.p2p.MessageHandler;
import io.bitsquare.p2p.Peer;
import io.bitsquare.p2p.listener.SendMessageListener;
import io.bitsquare.trade.SellerAsOffererTrade;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage;
import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailableMessage;
import io.bitsquare.trade.protocol.trade.TradeProtocol;
@ -54,17 +55,17 @@ public class SellerAsOffererProtocol implements TradeProtocol {
private static final Logger log = LoggerFactory.getLogger(SellerAsOffererProtocol.class);
private final MessageHandler messageHandler;
private final SellerAsOffererTrade sellerAsOffererTrade;
private final SellerAsOffererTrade trade;
private final ProcessModel processModel;
///////////////////////////////////////////////////////////////////////////////////////////
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
public SellerAsOffererProtocol(SellerAsOffererTrade model) {
public SellerAsOffererProtocol(SellerAsOffererTrade trade) {
log.debug("New OffererProtocol " + this);
this.sellerAsOffererTrade = model;
processModel = sellerAsOffererTrade.getProcessModel();
this.trade = trade;
processModel = this.trade.getProcessModel();
messageHandler = this::handleMessage;
processModel.getMessageService().addMessageHandler(messageHandler);
@ -108,7 +109,7 @@ public class SellerAsOffererProtocol implements TradeProtocol {
// to take the
// offer
// at the same time
boolean isOfferOpen = sellerAsOffererTrade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN;
boolean isOfferOpen = trade.lifeCycleStateProperty().get() == OffererState.LifeCycleState.OFFER_OPEN;
ReportOfferAvailabilityMessage reportOfferAvailabilityMessage = new ReportOfferAvailabilityMessage(processModel.getId(), isOfferOpen);
processModel.getMessageService().sendMessage(sender, reportOfferAvailabilityMessage, new SendMessageListener() {
@ -138,9 +139,9 @@ public class SellerAsOffererProtocol implements TradeProtocol {
private void handle(RequestPayDepositMessage tradeMessage, Peer sender) {
processModel.setTradeMessage(tradeMessage);
sellerAsOffererTrade.setTradingPeer(sender);
trade.setTradingPeer(sender);
TaskRunner<SellerAsOffererTrade> taskRunner = new TaskRunner<>(sellerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleTakerDepositPaymentRequestMessage completed"),
this::handleTaskRunnerFault);
@ -157,7 +158,7 @@ public class SellerAsOffererProtocol implements TradeProtocol {
private void handle(DepositTxPublishedMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<SellerAsOffererTrade> taskRunner = new TaskRunner<>(sellerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleDepositTxPublishedMessage completed"),
this::handleTaskRunnerFault);
@ -171,7 +172,7 @@ public class SellerAsOffererProtocol implements TradeProtocol {
private void handle(FiatTransferStartedMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<SellerAsOffererTrade> taskRunner = new TaskRunner<>(sellerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleFiatTransferStartedMessage completed"),
this::handleTaskRunnerFault);
@ -186,9 +187,9 @@ public class SellerAsOffererProtocol implements TradeProtocol {
// User clicked the "bank transfer received" button, so we release the funds for pay out
public void onFiatPaymentReceived() {
sellerAsOffererTrade.setProcessState(OffererState.ProcessState.FIAT_PAYMENT_RECEIVED);
trade.setProcessState(OffererState.ProcessState.FIAT_PAYMENT_RECEIVED);
TaskRunner<SellerAsOffererTrade> taskRunner = new TaskRunner<>(sellerAsOffererTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> {
log.debug("taskRunner at handleFiatReceivedUIEvent completed");
@ -215,7 +216,7 @@ public class SellerAsOffererProtocol implements TradeProtocol {
if (message instanceof TradeMessage) {
TradeMessage tradeMessage = (TradeMessage) message;
nonEmptyStringOf(tradeMessage.tradeId);
if (tradeMessage.tradeId.equals(sellerAsOffererTrade.getId())) {
if (tradeMessage.tradeId.equals(trade.getId())) {
if (tradeMessage instanceof RequestIsOfferAvailableMessage) {
handle((RequestIsOfferAvailableMessage) tradeMessage, sender);
}

View file

@ -54,7 +54,7 @@ import static io.bitsquare.util.Validator.nonEmptyStringOf;
public class SellerAsTakerProtocol implements TradeProtocol {
private static final Logger log = LoggerFactory.getLogger(SellerAsTakerProtocol.class);
private final SellerAsTakerTrade sellerAsTakerTrade;
private final SellerAsTakerTrade trade;
private final ProcessModel processModel;
private final MessageHandler messageHandler;
@ -65,7 +65,7 @@ public class SellerAsTakerProtocol implements TradeProtocol {
public SellerAsTakerProtocol(SellerAsTakerTrade trade) {
log.debug("New SellerAsTakerProtocol " + this);
this.sellerAsTakerTrade = trade;
this.trade = trade;
processModel = trade.getProcessModel();
messageHandler = this::handleMessage;
@ -97,7 +97,7 @@ public class SellerAsTakerProtocol implements TradeProtocol {
}
public void takeAvailableOffer() {
TaskRunner<Trade> taskRunner = new TaskRunner<>(sellerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at takeAvailableOffer completed"),
this::handleTaskRunnerFault);
@ -117,7 +117,7 @@ public class SellerAsTakerProtocol implements TradeProtocol {
private void handleRequestTakerDepositPaymentMessage(RequestPayDepositMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<Trade> taskRunner = new TaskRunner<>(sellerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleTakerDepositPaymentRequestMessage completed"),
this::handleTaskRunnerFault);
@ -134,7 +134,7 @@ public class SellerAsTakerProtocol implements TradeProtocol {
private void handleDepositTxPublishedMessage(DepositTxPublishedMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<SellerAsTakerTrade> taskRunner = new TaskRunner<>(sellerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleDepositTxPublishedMessage completed"),
this::handleTaskRunnerFault);
@ -148,7 +148,7 @@ public class SellerAsTakerProtocol implements TradeProtocol {
private void handleFiatTransferStartedMessage(FiatTransferStartedMessage tradeMessage) {
processModel.setTradeMessage(tradeMessage);
TaskRunner<SellerAsTakerTrade> taskRunner = new TaskRunner<>(sellerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> log.debug("taskRunner at handleFiatTransferStartedMessage completed"),
this::handleTaskRunnerFault);
@ -163,9 +163,9 @@ public class SellerAsTakerProtocol implements TradeProtocol {
// User clicked the "bank transfer received" button, so we release the funds for pay out
public void onFiatPaymentReceived() {
sellerAsTakerTrade.setProcessState(TakerState.ProcessState.FIAT_PAYMENT_RECEIVED);
trade.setProcessState(TakerState.ProcessState.FIAT_PAYMENT_RECEIVED);
TaskRunner<SellerAsTakerTrade> taskRunner = new TaskRunner<>(sellerAsTakerTrade,
TaskRunner<Trade> taskRunner = new TaskRunner<>(trade,
() -> {
log.debug("taskRunner at handleFiatReceivedUIEvent completed");

View file

@ -39,7 +39,7 @@ public class SellerCreatesAndSignsContract extends TradeTask {
assert processModel.getTakeOfferFeeTxId() != null;
Contract contract = new Contract(
processModel.getOffer(),
model.getTradeAmount(),
trade.getTradeAmount(),
processModel.getTakeOfferFeeTxId(),
processModel.tradingPeer.getAccountId(),
processModel.getAccountId(),
@ -50,9 +50,9 @@ public class SellerCreatesAndSignsContract extends TradeTask {
String contractAsJson = Utilities.objectToJson(contract);
String signature = processModel.getSignatureService().signMessage(processModel.getRegistrationKeyPair(), contractAsJson);
model.setContract(contract);
model.setContractAsJson(contractAsJson);
model.setSellerContractSignature(signature);
trade.setContract(contract);
trade.setContractAsJson(contractAsJson);
trade.setSellerContractSignature(signature);
complete();
} catch (Throwable t) {

View file

@ -49,7 +49,7 @@ import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ProcessModel extends Model implements Serializable {
public class ProcessModel implements Model, Serializable {
// That object is saved to disc. We need to take care of changes to not break deserialization.
private static final long serialVersionUID = 1L;
@ -277,4 +277,14 @@ public class ProcessModel extends Model implements Serializable {
public void setTakeOfferFeeTxId(String takeOfferFeeTxId) {
this.takeOfferFeeTxId = takeOfferFeeTxId;
}
@Override
public void persist() {
}
@Override
public void onComplete() {
}
}