mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-02 03:36:24 -04:00
Change state handling
This commit is contained in:
parent
ca3d1c96f2
commit
398a729a83
62 changed files with 976 additions and 501 deletions
|
@ -22,8 +22,6 @@ import io.bitsquare.p2p.Peer;
|
|||
import io.bitsquare.storage.Storage;
|
||||
import io.bitsquare.trade.offer.Offer;
|
||||
import io.bitsquare.trade.protocol.trade.BuyerProtocol;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
||||
|
@ -52,10 +50,8 @@ public abstract class BuyerTrade extends Trade implements Serializable {
|
|||
|
||||
@Override
|
||||
protected void initStates() {
|
||||
if (processState == null)
|
||||
processState = BuyerTradeState.ProcessState.UNDEFINED;
|
||||
if (lifeCycleState == null)
|
||||
lifeCycleState = Trade.LifeCycleState.PREPARATION;
|
||||
if (tradeState == null)
|
||||
tradeState = TradeState.BuyerState.PREPARATION;
|
||||
initStateProperties();
|
||||
}
|
||||
|
||||
|
@ -65,59 +61,73 @@ public abstract class BuyerTrade extends Trade implements Serializable {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isFailedState() {
|
||||
return tradeState == TradeState.BuyerState.FAILED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFailedState() {
|
||||
TradeState tradeState = TradeState.BuyerState.FAILED;
|
||||
// We store the phase of the last state into the failed state
|
||||
tradeState.setPhase(tradeState.getPhase());
|
||||
setTradeState(tradeState);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Setter for Mutable objects
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public void setProcessState(TradeState.ProcessState processState) {
|
||||
super.setProcessState(processState);
|
||||
public void setTradeState(TradeState tradeState) {
|
||||
super.setTradeState(tradeState);
|
||||
|
||||
switch ((TradeState.BuyerState) tradeState) {
|
||||
case PREPARATION:
|
||||
break;
|
||||
|
||||
switch ((BuyerTradeState.ProcessState) processState) {
|
||||
case DEPOSIT_PUBLISHED:
|
||||
takeOfferDate = new Date();
|
||||
|
||||
if (this instanceof OffererTrade)
|
||||
openOfferManager.closeOpenOffer(getOffer());
|
||||
break;
|
||||
|
||||
case TIMEOUT:
|
||||
disposeProtocol();
|
||||
setLifeCycleState(Trade.LifeCycleState.FAILED);
|
||||
|
||||
tradeManager.removeFailedTrade(this);
|
||||
case DEPOSIT_PUBLISHED_MSG_SENT:
|
||||
break;
|
||||
case DEPOSIT_CONFIRMED:
|
||||
break;
|
||||
|
||||
case FAULT:
|
||||
disposeProtocol();
|
||||
setLifeCycleState(Trade.LifeCycleState.FAILED);
|
||||
|
||||
tradeManager.removeFailedTrade(this);
|
||||
case FIAT_PAYMENT_STARTED:
|
||||
break;
|
||||
case FIAT_PAYMENT_STARTED_MSG_SENT:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLifeCycleState(Trade.LifeCycleState lifeCycleState) {
|
||||
super.setLifeCycleState(lifeCycleState);
|
||||
case FIAT_PAYMENT_RECEIPT_MSG_RECEIVED:
|
||||
break;
|
||||
|
||||
case PAYOUT_TX_COMMITTED:
|
||||
break;
|
||||
case PAYOUT_TX_SENT:
|
||||
break;
|
||||
|
||||
case PAYOUT_BROAD_CASTED:
|
||||
break;
|
||||
|
||||
case WITHDRAW_COMPLETED:
|
||||
disposeProtocol();
|
||||
break;
|
||||
|
||||
switch (lifeCycleState) {
|
||||
case FAILED:
|
||||
disposeProtocol();
|
||||
break;
|
||||
case COMPLETED:
|
||||
disposeProtocol();
|
||||
|
||||
default:
|
||||
log.error("Unhandled state " + tradeState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setThrowable(Throwable throwable) {
|
||||
super.setThrowable(throwable);
|
||||
|
||||
// setProcessState(BuyerTradeState.ProcessState.EXCEPTION);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Protected
|
||||
|
@ -125,7 +135,7 @@ public abstract class BuyerTrade extends Trade implements Serializable {
|
|||
|
||||
@Override
|
||||
protected void handleConfidenceResult() {
|
||||
if (((BuyerTradeState.ProcessState) processState).ordinal() < BuyerTradeState.ProcessState.DEPOSIT_CONFIRMED.ordinal())
|
||||
setProcessState(BuyerTradeState.ProcessState.DEPOSIT_CONFIRMED);
|
||||
if (((TradeState.BuyerState) tradeState).ordinal() < TradeState.BuyerState.DEPOSIT_CONFIRMED.ordinal())
|
||||
setTradeState(TradeState.BuyerState.DEPOSIT_CONFIRMED);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,6 @@ import io.bitsquare.p2p.Peer;
|
|||
import io.bitsquare.storage.Storage;
|
||||
import io.bitsquare.trade.offer.Offer;
|
||||
import io.bitsquare.trade.protocol.trade.SellerProtocol;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
||||
|
@ -52,10 +50,8 @@ public abstract class SellerTrade extends Trade implements Serializable {
|
|||
|
||||
@Override
|
||||
protected void initStates() {
|
||||
if (processState == null)
|
||||
processState = SellerTradeState.ProcessState.UNDEFINED;
|
||||
if (lifeCycleState == null)
|
||||
lifeCycleState = Trade.LifeCycleState.PENDING;
|
||||
if (tradeState == null)
|
||||
tradeState = TradeState.SellerState.PREPARATION;
|
||||
initStateProperties();
|
||||
}
|
||||
|
||||
|
@ -64,59 +60,70 @@ public abstract class SellerTrade extends Trade implements Serializable {
|
|||
((SellerProtocol) tradeProtocol).onFiatPaymentReceived();
|
||||
}
|
||||
|
||||
|
||||
public boolean isFailedState() {
|
||||
return tradeState == TradeState.SellerState.FAILED;
|
||||
}
|
||||
|
||||
public void setFailedState() {
|
||||
TradeState tradeState = TradeState.SellerState.FAILED;
|
||||
// We store the phase of the last state into the failed state
|
||||
tradeState.setPhase(tradeState.getPhase());
|
||||
setTradeState(tradeState);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Setter for Mutable objects
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public void setProcessState(TradeState.ProcessState processState) {
|
||||
super.setProcessState(processState);
|
||||
public void setTradeState(TradeState tradeState) {
|
||||
super.setTradeState(tradeState);
|
||||
|
||||
switch ((TradeState.SellerState) tradeState) {
|
||||
|
||||
case PREPARATION:
|
||||
break;
|
||||
|
||||
switch ((SellerTradeState.ProcessState) processState) {
|
||||
case DEPOSIT_PUBLISHED_MSG_RECEIVED:
|
||||
takeOfferDate = new Date();
|
||||
|
||||
if (this instanceof OffererTrade)
|
||||
openOfferManager.closeOpenOffer(getOffer());
|
||||
break;
|
||||
|
||||
case TIMEOUT:
|
||||
disposeProtocol();
|
||||
setLifeCycleState(Trade.LifeCycleState.FAILED);
|
||||
|
||||
tradeManager.removeFailedTrade(this);
|
||||
case DEPOSIT_CONFIRMED:
|
||||
break;
|
||||
|
||||
case FAULT:
|
||||
disposeProtocol();
|
||||
setLifeCycleState(Trade.LifeCycleState.FAILED);
|
||||
|
||||
tradeManager.removeFailedTrade(this);
|
||||
case FIAT_PAYMENT_STARTED_MSG_RECEIVED:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLifeCycleState(Trade.LifeCycleState lifeCycleState) {
|
||||
super.setLifeCycleState(lifeCycleState);
|
||||
case FIAT_PAYMENT_RECEIPT:
|
||||
break;
|
||||
case FIAT_PAYMENT_RECEIPT_MSG_SENT:
|
||||
break;
|
||||
|
||||
case PAYOUT_TX_RECEIVED:
|
||||
break;
|
||||
case PAYOUT_TX_COMMITTED:
|
||||
break;
|
||||
|
||||
case PAYOUT_BROAD_CASTED:
|
||||
break;
|
||||
|
||||
case WITHDRAW_COMPLETED:
|
||||
disposeProtocol();
|
||||
break;
|
||||
|
||||
switch (lifeCycleState) {
|
||||
case FAILED:
|
||||
disposeProtocol();
|
||||
break;
|
||||
case COMPLETED:
|
||||
disposeProtocol();
|
||||
|
||||
default:
|
||||
log.error("Unhandled state " + tradeState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setThrowable(Throwable throwable) {
|
||||
super.setThrowable(throwable);
|
||||
|
||||
// setProcessState(SellerTradeState.ProcessState.EXCEPTION);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Protected
|
||||
|
@ -124,7 +131,7 @@ public abstract class SellerTrade extends Trade implements Serializable {
|
|||
|
||||
@Override
|
||||
protected void handleConfidenceResult() {
|
||||
if (((SellerTradeState.ProcessState) processState).ordinal() < SellerTradeState.ProcessState.DEPOSIT_CONFIRMED.ordinal())
|
||||
setProcessState(SellerTradeState.ProcessState.DEPOSIT_CONFIRMED);
|
||||
if (((TradeState.SellerState) tradeState).ordinal() < TradeState.SellerState.DEPOSIT_CONFIRMED.ordinal())
|
||||
setTradeState(TradeState.SellerState.DEPOSIT_CONFIRMED);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,9 +34,6 @@ import io.bitsquare.trade.offer.Offer;
|
|||
import io.bitsquare.trade.offer.OpenOfferManager;
|
||||
import io.bitsquare.trade.protocol.trade.ProcessModel;
|
||||
import io.bitsquare.trade.protocol.trade.TradeProtocol;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
import io.bitsquare.user.User;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
|
@ -76,13 +73,16 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
|
||||
private transient static final Logger log = LoggerFactory.getLogger(Trade.class);
|
||||
|
||||
|
||||
public enum LifeCycleState {
|
||||
/* public enum CriticalPhase {
|
||||
PREPARATION,
|
||||
PENDING,
|
||||
COMPLETED,
|
||||
TAKER_FEE_PAID,
|
||||
DEPOSIT_PAID,
|
||||
FIAT_SENT,
|
||||
FIAT_RECEIVED,
|
||||
PAYOUT_PAID,
|
||||
WITHDRAWN,
|
||||
FAILED
|
||||
}
|
||||
}*/
|
||||
|
||||
// Mutable
|
||||
private Coin tradeAmount;
|
||||
|
@ -96,8 +96,7 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Transient/Immutable
|
||||
private transient ObjectProperty<TradeState.ProcessState> processStateProperty;
|
||||
private transient ObjectProperty<Trade.LifeCycleState> lifeCycleStateProperty;
|
||||
private transient ObjectProperty<TradeState> processStateProperty;
|
||||
// Trades are saved in the TradeList
|
||||
transient private Storage<? extends TradableList> storage;
|
||||
transient protected TradeProtocol tradeProtocol;
|
||||
|
@ -113,8 +112,7 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
// Mutable
|
||||
private MessageWithPubKey messageWithPubKey;
|
||||
protected Date takeOfferDate;
|
||||
protected TradeState.ProcessState processState;
|
||||
protected Trade.LifeCycleState lifeCycleState;
|
||||
protected TradeState tradeState;
|
||||
private Transaction depositTx;
|
||||
private Contract contract;
|
||||
private String contractAsJson;
|
||||
|
@ -122,10 +120,7 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
private String buyerContractSignature;
|
||||
private Transaction payoutTx;
|
||||
private long lockTime;
|
||||
|
||||
// Transient/Mutable
|
||||
transient private String errorMessage;
|
||||
transient private Throwable throwable;
|
||||
private String errorMessage;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -205,8 +200,7 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
}
|
||||
|
||||
protected void initStateProperties() {
|
||||
processStateProperty = new SimpleObjectProperty<>(processState);
|
||||
lifeCycleStateProperty = new SimpleObjectProperty<>(lifeCycleState);
|
||||
processStateProperty = new SimpleObjectProperty<>(tradeState);
|
||||
}
|
||||
|
||||
protected void initAmountProperty() {
|
||||
|
@ -251,40 +245,20 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
this.storage = storage;
|
||||
}
|
||||
|
||||
public void setProcessState(TradeState.ProcessState processState) {
|
||||
this.processState = processState;
|
||||
processStateProperty.set(processState);
|
||||
public void setTradeState(TradeState tradeState) {
|
||||
this.tradeState = tradeState;
|
||||
processStateProperty.set(tradeState);
|
||||
storage.queueUpForSave();
|
||||
}
|
||||
|
||||
public void setFaultState() {
|
||||
if (this instanceof SellerTrade)
|
||||
setProcessState(SellerTradeState.ProcessState.FAULT);
|
||||
else if (this instanceof BuyerTrade)
|
||||
setProcessState(BuyerTradeState.ProcessState.FAULT);
|
||||
}
|
||||
abstract public boolean isFailedState();
|
||||
|
||||
public boolean isFaultState() {
|
||||
return processState == BuyerTradeState.ProcessState.FAULT || processState == SellerTradeState.ProcessState.FAULT;
|
||||
abstract public void setFailedState();
|
||||
|
||||
public boolean isCriticalFault() {
|
||||
return tradeState.getPhase().ordinal() >= TradeState.Phase.DEPOSIT_PAID.ordinal();
|
||||
}
|
||||
|
||||
/* public void resetFault() {
|
||||
if (this instanceof SellerTrade)
|
||||
setProcessState(SellerTradeState.ProcessState.UNDEFINED);
|
||||
else if (this instanceof BuyerTrade)
|
||||
setProcessState(BuyerTradeState.ProcessState.UNDEFINED);
|
||||
|
||||
setLifeCycleState(LifeCycleState.PREPARATION);
|
||||
errorMessage = null;
|
||||
throwable = null;
|
||||
}*/
|
||||
|
||||
public void setLifeCycleState(Trade.LifeCycleState lifeCycleState) {
|
||||
this.lifeCycleState = lifeCycleState;
|
||||
lifeCycleStateProperty.set(lifeCycleState);
|
||||
storage.queueUpForSave();
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Storage
|
||||
|
@ -340,14 +314,10 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
return null;
|
||||
}
|
||||
|
||||
public ReadOnlyObjectProperty<? extends TradeState.ProcessState> processStateProperty() {
|
||||
public ReadOnlyObjectProperty<? extends TradeState> tradeStateProperty() {
|
||||
return processStateProperty;
|
||||
}
|
||||
|
||||
public ReadOnlyObjectProperty<Trade.LifeCycleState> lifeCycleStateProperty() {
|
||||
return lifeCycleStateProperty;
|
||||
}
|
||||
|
||||
public ReadOnlyObjectProperty<Coin> tradeAmountProperty() {
|
||||
return tradeAmountProperty;
|
||||
}
|
||||
|
@ -446,6 +416,15 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
|
||||
public void setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
|
||||
if (errorMessage != null && errorMessage.length() > 0) {
|
||||
setFailedState();
|
||||
|
||||
if (isCriticalFault())
|
||||
tradeManager.addTradeToFailedTrades(this);
|
||||
else if (isFailedState())
|
||||
tradeManager.addTradeToClosedTrades(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@ -453,15 +432,6 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
return errorMessage;
|
||||
}
|
||||
|
||||
public void setThrowable(Throwable throwable) {
|
||||
this.throwable = throwable;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Throwable getThrowable() {
|
||||
return throwable;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Private
|
||||
|
@ -501,14 +471,12 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
", tradeAmountProperty=" + tradeAmountProperty +
|
||||
", tradeVolumeProperty=" + tradeVolumeProperty +
|
||||
", processStateProperty=" + processStateProperty +
|
||||
", lifeCycleStateProperty=" + lifeCycleStateProperty +
|
||||
", storage=" + storage +
|
||||
", tradeProtocol=" + tradeProtocol +
|
||||
", offer=" + offer +
|
||||
", date=" + takeOfferDate +
|
||||
", processModel=" + processModel +
|
||||
", processState=" + processState +
|
||||
", lifeCycleState=" + lifeCycleState +
|
||||
", processState=" + tradeState +
|
||||
", messageWithPubKey=" + messageWithPubKey +
|
||||
", depositTx=" + depositTx +
|
||||
/* ", contract=" + contract +
|
||||
|
@ -517,7 +485,6 @@ abstract public class Trade implements Tradable, Model, Serializable {
|
|||
", buyerContractSignature='" + buyerContractSignature + '\'' +*/
|
||||
", payoutTx=" + payoutTx +
|
||||
", errorMessage='" + errorMessage + '\'' +
|
||||
", throwable=" + throwable +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ import io.bitsquare.p2p.MessageService;
|
|||
import io.bitsquare.p2p.Peer;
|
||||
import io.bitsquare.storage.Storage;
|
||||
import io.bitsquare.trade.closed.ClosedTradableManager;
|
||||
import io.bitsquare.trade.failed.FailedTradesManager;
|
||||
import io.bitsquare.trade.handlers.TakeOfferResultHandler;
|
||||
import io.bitsquare.trade.offer.Offer;
|
||||
import io.bitsquare.trade.offer.OpenOffer;
|
||||
|
@ -87,6 +88,7 @@ public class TradeManager {
|
|||
private final CryptoService<MailboxMessage> cryptoService;
|
||||
private final OpenOfferManager openOfferManager;
|
||||
private final ClosedTradableManager closedTradableManager;
|
||||
private FailedTradesManager failedTradesManager;
|
||||
private final ArbitrationRepository arbitrationRepository;
|
||||
|
||||
private final Storage<TradableList<Trade>> pendingTradesStorage;
|
||||
|
@ -109,6 +111,7 @@ public class TradeManager {
|
|||
CryptoService<MailboxMessage> cryptoService,
|
||||
OpenOfferManager openOfferManager,
|
||||
ClosedTradableManager closedTradableManager,
|
||||
FailedTradesManager failedTradesManager,
|
||||
ArbitrationRepository arbitrationRepository,
|
||||
@Named("storage.dir") File storageDir) {
|
||||
this.user = user;
|
||||
|
@ -122,6 +125,7 @@ public class TradeManager {
|
|||
this.cryptoService = cryptoService;
|
||||
this.openOfferManager = openOfferManager;
|
||||
this.closedTradableManager = closedTradableManager;
|
||||
this.failedTradesManager = failedTradesManager;
|
||||
this.arbitrationRepository = arbitrationRepository;
|
||||
|
||||
pendingTradesStorage = new Storage<>(storageDir);
|
||||
|
@ -246,7 +250,7 @@ public class TradeManager {
|
|||
// TODO if the peer has changed its IP address, we need to make another findPeer request. At the moment we use the peer stored in trade to
|
||||
// continue the trade, but that might fail.
|
||||
|
||||
if (trade.lifeCycleState == Trade.LifeCycleState.FAILED) {
|
||||
if (trade.isFailedState()) {
|
||||
failedTrades.add(trade);
|
||||
}
|
||||
else {
|
||||
|
@ -257,7 +261,10 @@ public class TradeManager {
|
|||
}
|
||||
|
||||
for (Trade trade : failedTrades) {
|
||||
removeFailedTrade(trade);
|
||||
if (trade.isCriticalFault())
|
||||
addTradeToFailedTrades(trade);
|
||||
else
|
||||
addTradeToClosedTrades(trade);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -329,7 +336,11 @@ public class TradeManager {
|
|||
public void onSuccess(@javax.annotation.Nullable Transaction transaction) {
|
||||
if (transaction != null) {
|
||||
log.info("onWithdraw onSuccess tx ID:" + transaction.getHashAsString());
|
||||
trade.setLifeCycleState(Trade.LifeCycleState.COMPLETED);
|
||||
|
||||
if (trade instanceof BuyerTrade)
|
||||
trade.setTradeState(TradeState.BuyerState.WITHDRAW_COMPLETED);
|
||||
else if (trade instanceof SellerTrade)
|
||||
trade.setTradeState(TradeState.SellerState.WITHDRAW_COMPLETED);
|
||||
|
||||
pendingTrades.remove(trade);
|
||||
closedTradableManager.add(trade);
|
||||
|
@ -355,12 +366,16 @@ public class TradeManager {
|
|||
}
|
||||
|
||||
// In a fault case we remove it and add it to the closed trades
|
||||
public void removeFailedTrade(Trade trade) {
|
||||
public void addTradeToClosedTrades(Trade trade) {
|
||||
pendingTrades.remove(trade);
|
||||
closedTradableManager.add(trade);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void addTradeToFailedTrades(Trade trade) {
|
||||
pendingTrades.remove(trade);
|
||||
failedTradesManager.add(trade);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Getters
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -372,9 +387,4 @@ public class TradeManager {
|
|||
public boolean isMyOffer(Offer offer) {
|
||||
return offer.isMyOffer(keyRing);
|
||||
}
|
||||
|
||||
private Optional<Trade> findTrade(String id) {
|
||||
return pendingTrades.stream().filter(trade -> trade.getId().equals(id)).findAny();
|
||||
}
|
||||
|
||||
}
|
|
@ -19,6 +19,7 @@ package io.bitsquare.trade;
|
|||
|
||||
import io.bitsquare.BitsquareModule;
|
||||
import io.bitsquare.trade.closed.ClosedTradableManager;
|
||||
import io.bitsquare.trade.failed.FailedTradesManager;
|
||||
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
|
@ -38,11 +39,6 @@ public class TradeModule extends BitsquareModule {
|
|||
protected void configure() {
|
||||
bind(TradeManager.class).in(Singleton.class);
|
||||
bind(ClosedTradableManager.class).in(Singleton.class);
|
||||
bind(FailedTradesManager.class).in(Singleton.class);
|
||||
}
|
||||
|
||||
/* @Override
|
||||
protected void doClose(Injector injector) {
|
||||
log.trace("doClose " + getClass().getSimpleName());
|
||||
injector.getInstance(TradeManager.class).shutDown();
|
||||
}*/
|
||||
}
|
||||
|
|
112
core/src/main/java/io/bitsquare/trade/TradeState.java
Normal file
112
core/src/main/java/io/bitsquare/trade/TradeState.java
Normal file
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.bitsquare.trade;
|
||||
|
||||
public interface TradeState {
|
||||
Phase getPhase();
|
||||
|
||||
void setPhase(Phase phase);
|
||||
|
||||
enum SellerState implements TradeState {
|
||||
PREPARATION(Phase.PREPARATION),
|
||||
|
||||
DEPOSIT_PUBLISHED_MSG_RECEIVED(Phase.DEPOSIT_PAID),
|
||||
DEPOSIT_CONFIRMED(Phase.DEPOSIT_PAID),
|
||||
|
||||
FIAT_PAYMENT_STARTED_MSG_RECEIVED(Phase.FIAT_SENT),
|
||||
|
||||
FIAT_PAYMENT_RECEIPT(Phase.FIAT_RECEIVED),
|
||||
FIAT_PAYMENT_RECEIPT_MSG_SENT(Phase.FIAT_RECEIVED),
|
||||
|
||||
PAYOUT_TX_RECEIVED(Phase.PAYOUT_PAID),
|
||||
PAYOUT_TX_COMMITTED(Phase.PAYOUT_PAID),
|
||||
|
||||
PAYOUT_BROAD_CASTED(Phase.PAYOUT_PAID),
|
||||
|
||||
WITHDRAW_COMPLETED(Phase.WITHDRAWN),
|
||||
|
||||
FAILED();
|
||||
|
||||
public Phase getPhase() {
|
||||
return phase;
|
||||
}
|
||||
|
||||
public void setPhase(Phase phase) {
|
||||
this.phase = phase;
|
||||
}
|
||||
|
||||
private Phase phase;
|
||||
|
||||
SellerState() {
|
||||
}
|
||||
|
||||
SellerState(Phase phase) {
|
||||
this.phase = phase;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum BuyerState implements TradeState {
|
||||
PREPARATION(Phase.PREPARATION),
|
||||
|
||||
DEPOSIT_PUBLISHED(Phase.DEPOSIT_PAID),
|
||||
DEPOSIT_PUBLISHED_MSG_SENT(Phase.DEPOSIT_PAID),
|
||||
DEPOSIT_CONFIRMED(Phase.DEPOSIT_PAID),
|
||||
|
||||
FIAT_PAYMENT_STARTED(Phase.FIAT_SENT),
|
||||
FIAT_PAYMENT_STARTED_MSG_SENT(Phase.FIAT_SENT),
|
||||
|
||||
FIAT_PAYMENT_RECEIPT_MSG_RECEIVED(Phase.FIAT_RECEIVED),
|
||||
|
||||
PAYOUT_TX_COMMITTED(Phase.PAYOUT_PAID),
|
||||
PAYOUT_TX_SENT(Phase.PAYOUT_PAID),
|
||||
|
||||
PAYOUT_BROAD_CASTED(Phase.PAYOUT_PAID),
|
||||
|
||||
WITHDRAW_COMPLETED(Phase.WITHDRAWN),
|
||||
|
||||
FAILED();
|
||||
|
||||
public Phase getPhase() {
|
||||
return phase;
|
||||
}
|
||||
|
||||
public void setPhase(Phase phase) {
|
||||
this.phase = phase;
|
||||
}
|
||||
|
||||
private Phase phase;
|
||||
|
||||
BuyerState() {
|
||||
}
|
||||
|
||||
BuyerState(Phase phase) {
|
||||
this.phase = phase;
|
||||
}
|
||||
}
|
||||
|
||||
enum Phase {
|
||||
PREPARATION,
|
||||
TAKER_FEE_PAID,
|
||||
DEPOSIT_PAID,
|
||||
FIAT_SENT,
|
||||
FIAT_RECEIVED,
|
||||
PAYOUT_PAID,
|
||||
WITHDRAWN
|
||||
}
|
||||
}
|
|
@ -43,7 +43,6 @@ public class ClosedTradableManager {
|
|||
public ClosedTradableManager(KeyRing keyRing, @Named("storage.dir") File storageDir) {
|
||||
this.keyRing = keyRing;
|
||||
this.closedTrades = new TradableList<>(new Storage<>(storageDir), "ClosedTrades");
|
||||
|
||||
}
|
||||
|
||||
public void add(Tradable tradable) {
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.bitsquare.trade.failed;
|
||||
|
||||
import io.bitsquare.crypto.KeyRing;
|
||||
import io.bitsquare.storage.Storage;
|
||||
import io.bitsquare.trade.TradableList;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.offer.Offer;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import javax.inject.Named;
|
||||
|
||||
import javafx.collections.ObservableList;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class FailedTradesManager {
|
||||
private static final Logger log = LoggerFactory.getLogger(FailedTradesManager.class);
|
||||
private final TradableList<Trade> failedTrades;
|
||||
private KeyRing keyRing;
|
||||
|
||||
@Inject
|
||||
public FailedTradesManager(KeyRing keyRing, @Named("storage.dir") File storageDir) {
|
||||
this.keyRing = keyRing;
|
||||
this.failedTrades = new TradableList<>(new Storage<>(storageDir), "FailedTrades");
|
||||
}
|
||||
|
||||
public void add(Trade trade) {
|
||||
failedTrades.add(trade);
|
||||
}
|
||||
|
||||
public boolean wasMyOffer(Offer offer) {
|
||||
return offer.isMyOffer(keyRing);
|
||||
}
|
||||
|
||||
public ObservableList<Trade> getFailedTrades() {
|
||||
return failedTrades.getObservableList();
|
||||
}
|
||||
|
||||
}
|
|
@ -21,6 +21,7 @@ import io.bitsquare.p2p.Message;
|
|||
import io.bitsquare.p2p.Peer;
|
||||
import io.bitsquare.trade.BuyerAsOffererTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FinalizePayoutTxRequest;
|
||||
import io.bitsquare.trade.protocol.trade.messages.PublishDepositTxRequest;
|
||||
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
|
||||
|
@ -39,8 +40,6 @@ import io.bitsquare.trade.protocol.trade.tasks.offerer.VerifyTakeOfferFeePayment
|
|||
import io.bitsquare.trade.protocol.trade.tasks.offerer.VerifyTakerAccount;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.SetupPayoutTxLockTimeReachedListener;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -63,10 +62,10 @@ public class BuyerAsOffererProtocol extends TradeProtocol implements BuyerProtoc
|
|||
this.buyerAsOffererTrade = trade;
|
||||
|
||||
// If we are after the timelock state we need to setup the listener again
|
||||
TradeState.ProcessState state = trade.processStateProperty().get();
|
||||
if (state == BuyerTradeState.ProcessState.PAYOUT_TX_COMMITTED ||
|
||||
state == BuyerTradeState.ProcessState.PAYOUT_TX_SENT ||
|
||||
state == BuyerTradeState.ProcessState.PAYOUT_BROAD_CASTED) {
|
||||
TradeState tradeState = trade.tradeStateProperty().get();
|
||||
if (tradeState == TradeState.BuyerState.PAYOUT_TX_COMMITTED ||
|
||||
tradeState == TradeState.BuyerState.PAYOUT_TX_SENT ||
|
||||
tradeState == TradeState.BuyerState.PAYOUT_BROAD_CASTED) {
|
||||
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(trade,
|
||||
() -> {
|
||||
|
@ -100,7 +99,7 @@ public class BuyerAsOffererProtocol extends TradeProtocol implements BuyerProtoc
|
|||
log.error(errorMessage);
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Start trade
|
||||
|
@ -154,7 +153,7 @@ public class BuyerAsOffererProtocol extends TradeProtocol implements BuyerProtoc
|
|||
// User clicked the "bank transfer started" button
|
||||
@Override
|
||||
public void onFiatPaymentStarted() {
|
||||
buyerAsOffererTrade.setProcessState(BuyerTradeState.ProcessState.FIAT_PAYMENT_STARTED);
|
||||
buyerAsOffererTrade.setTradeState(TradeState.BuyerState.FIAT_PAYMENT_STARTED);
|
||||
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(buyerAsOffererTrade,
|
||||
() -> handleTaskRunnerSuccess("onFiatPaymentStarted"),
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.bitsquare.p2p.Message;
|
|||
import io.bitsquare.p2p.Peer;
|
||||
import io.bitsquare.trade.BuyerAsTakerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FinalizePayoutTxRequest;
|
||||
import io.bitsquare.trade.protocol.trade.messages.PublishDepositTxRequest;
|
||||
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
|
||||
|
@ -41,8 +42,6 @@ import io.bitsquare.trade.protocol.trade.tasks.taker.BroadcastTakeOfferFeeTx;
|
|||
import io.bitsquare.trade.protocol.trade.tasks.taker.CreateTakeOfferFeeTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.taker.VerifyOfferFeePayment;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.taker.VerifyOffererAccount;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -65,10 +64,10 @@ public class BuyerAsTakerProtocol extends TradeProtocol implements BuyerProtocol
|
|||
processModel.tradingPeer.setPubKeyRing(trade.getOffer().getPubKeyRing());
|
||||
|
||||
// If we are after the timelock state we need to setup the listener again
|
||||
TradeState.ProcessState state = trade.processStateProperty().get();
|
||||
if (state == BuyerTradeState.ProcessState.PAYOUT_TX_COMMITTED ||
|
||||
state == BuyerTradeState.ProcessState.PAYOUT_TX_SENT ||
|
||||
state == BuyerTradeState.ProcessState.PAYOUT_BROAD_CASTED) {
|
||||
TradeState tradeState = trade.tradeStateProperty().get();
|
||||
if (tradeState == TradeState.BuyerState.PAYOUT_TX_COMMITTED ||
|
||||
tradeState == TradeState.BuyerState.PAYOUT_TX_SENT ||
|
||||
tradeState == TradeState.BuyerState.PAYOUT_BROAD_CASTED) {
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(trade,
|
||||
() -> {
|
||||
handleTaskRunnerSuccess("SetupPayoutTxLockTimeReachedListener");
|
||||
|
@ -153,7 +152,7 @@ public class BuyerAsTakerProtocol extends TradeProtocol implements BuyerProtocol
|
|||
// User clicked the "bank transfer started" button
|
||||
@Override
|
||||
public void onFiatPaymentStarted() {
|
||||
buyerAsTakerTrade.setProcessState(BuyerTradeState.ProcessState.FIAT_PAYMENT_STARTED);
|
||||
buyerAsTakerTrade.setTradeState(TradeState.BuyerState.FIAT_PAYMENT_STARTED);
|
||||
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(buyerAsTakerTrade,
|
||||
() -> handleTaskRunnerSuccess("onFiatPaymentStarted"),
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.bitsquare.p2p.Message;
|
|||
import io.bitsquare.p2p.Peer;
|
||||
import io.bitsquare.trade.SellerAsOffererTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.messages.PayoutTxFinalizedMessage;
|
||||
|
@ -39,8 +40,6 @@ import io.bitsquare.trade.protocol.trade.tasks.seller.SendPublishDepositTxReques
|
|||
import io.bitsquare.trade.protocol.trade.tasks.seller.SignPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.CommitPayoutTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.SetupPayoutTxLockTimeReachedListener;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -61,10 +60,10 @@ public class SellerAsOffererProtocol extends TradeProtocol implements SellerProt
|
|||
this.sellerAsOffererTrade = trade;
|
||||
|
||||
// If we are after the timelock state we need to setup the listener again
|
||||
TradeState.ProcessState state = trade.processStateProperty().get();
|
||||
if (state == SellerTradeState.ProcessState.PAYOUT_TX_RECEIVED ||
|
||||
state == SellerTradeState.ProcessState.PAYOUT_TX_COMMITTED ||
|
||||
state == SellerTradeState.ProcessState.PAYOUT_BROAD_CASTED) {
|
||||
TradeState tradeState = trade.tradeStateProperty().get();
|
||||
if (tradeState == TradeState.SellerState.PAYOUT_TX_RECEIVED ||
|
||||
tradeState == TradeState.SellerState.PAYOUT_TX_COMMITTED ||
|
||||
tradeState == TradeState.SellerState.PAYOUT_BROAD_CASTED) {
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(trade,
|
||||
() -> {
|
||||
handleTaskRunnerSuccess("SetupPayoutTxLockTimeReachedListener");
|
||||
|
@ -175,7 +174,7 @@ public class SellerAsOffererProtocol extends TradeProtocol implements SellerProt
|
|||
// User clicked the "bank transfer received" button, so we release the funds for pay out
|
||||
@Override
|
||||
public void onFiatPaymentReceived() {
|
||||
sellerAsOffererTrade.setProcessState(SellerTradeState.ProcessState.FIAT_PAYMENT_RECEIPT);
|
||||
sellerAsOffererTrade.setTradeState(TradeState.SellerState.FIAT_PAYMENT_RECEIPT);
|
||||
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(sellerAsOffererTrade,
|
||||
() -> handleTaskRunnerSuccess("onFiatPaymentReceived"),
|
||||
|
|
|
@ -22,6 +22,7 @@ import io.bitsquare.p2p.Peer;
|
|||
import io.bitsquare.trade.SellerAsTakerTrade;
|
||||
import io.bitsquare.trade.SellerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.messages.PayDepositRequest;
|
||||
|
@ -44,8 +45,6 @@ import io.bitsquare.trade.protocol.trade.tasks.taker.BroadcastTakeOfferFeeTx;
|
|||
import io.bitsquare.trade.protocol.trade.tasks.taker.CreateTakeOfferFeeTx;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.taker.VerifyOfferFeePayment;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.taker.VerifyOffererAccount;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
import io.bitsquare.trade.states.TradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -69,10 +68,10 @@ public class SellerAsTakerProtocol extends TradeProtocol implements SellerProtoc
|
|||
|
||||
// If we are after the timelock state we need to setup the listener again
|
||||
if (trade instanceof SellerTrade) {
|
||||
TradeState.ProcessState state = trade.processStateProperty().get();
|
||||
if (state == SellerTradeState.ProcessState.PAYOUT_TX_RECEIVED ||
|
||||
state == SellerTradeState.ProcessState.PAYOUT_TX_COMMITTED ||
|
||||
state == SellerTradeState.ProcessState.PAYOUT_BROAD_CASTED) {
|
||||
TradeState tradeState = trade.tradeStateProperty().get();
|
||||
if (tradeState == TradeState.SellerState.PAYOUT_TX_RECEIVED ||
|
||||
tradeState == TradeState.SellerState.PAYOUT_TX_COMMITTED ||
|
||||
tradeState == TradeState.SellerState.PAYOUT_BROAD_CASTED) {
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(trade,
|
||||
() -> {
|
||||
handleTaskRunnerSuccess("SetupPayoutTxLockTimeReachedListener");
|
||||
|
@ -199,7 +198,7 @@ public class SellerAsTakerProtocol extends TradeProtocol implements SellerProtoc
|
|||
// User clicked the "bank transfer received" button, so we release the funds for pay out
|
||||
@Override
|
||||
public void onFiatPaymentReceived() {
|
||||
sellerAsTakerTrade.setProcessState(SellerTradeState.ProcessState.FIAT_PAYMENT_RECEIPT);
|
||||
sellerAsTakerTrade.setTradeState(TradeState.SellerState.FIAT_PAYMENT_RECEIPT);
|
||||
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(sellerAsTakerTrade,
|
||||
() -> handleTaskRunnerSuccess("onFiatPaymentReceived"),
|
||||
|
|
|
@ -28,10 +28,9 @@ import io.bitsquare.p2p.listener.GetPeerAddressListener;
|
|||
import io.bitsquare.trade.BuyerTrade;
|
||||
import io.bitsquare.trade.SellerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.TradeMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.shared.SetupPayoutTxLockTimeReachedListener;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
import io.bitsquare.util.Utilities;
|
||||
|
||||
import java.util.Timer;
|
||||
|
@ -121,9 +120,9 @@ public abstract class TradeProtocol {
|
|||
|
||||
boolean needPayoutTxBroadcast = false;
|
||||
if (trade instanceof SellerTrade)
|
||||
needPayoutTxBroadcast = trade.processStateProperty().get() == SellerTradeState.ProcessState.PAYOUT_TX_COMMITTED;
|
||||
needPayoutTxBroadcast = trade.tradeStateProperty().get() == TradeState.SellerState.PAYOUT_TX_COMMITTED;
|
||||
else if (trade instanceof BuyerTrade)
|
||||
needPayoutTxBroadcast = trade.processStateProperty().get() == BuyerTradeState.ProcessState.PAYOUT_TX_COMMITTED;
|
||||
needPayoutTxBroadcast = trade.tradeStateProperty().get() == TradeState.BuyerState.PAYOUT_TX_COMMITTED;
|
||||
|
||||
if (needPayoutTxBroadcast) {
|
||||
TradeTaskRunner taskRunner = new TradeTaskRunner(trade,
|
||||
|
@ -143,10 +142,7 @@ public abstract class TradeProtocol {
|
|||
|
||||
timeoutTimer = Utilities.setTimeout(TIMEOUT, () -> {
|
||||
log.debug("Timeout reached");
|
||||
if (trade instanceof SellerTrade)
|
||||
trade.setProcessState(SellerTradeState.ProcessState.TIMEOUT);
|
||||
else if (trade instanceof BuyerTrade)
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.TIMEOUT);
|
||||
trade.setErrorMessage("A timeout occured.");
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -46,9 +46,7 @@ public class TradeTask extends Task<Trade> {
|
|||
protected void failed(Throwable t) {
|
||||
t.printStackTrace();
|
||||
appendExceptionToErrorMessage(t);
|
||||
trade.setThrowable(t);
|
||||
trade.setErrorMessage(errorMessage);
|
||||
trade.setFaultState();
|
||||
failed();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,7 +51,6 @@ public class CreateDepositTxInputs extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@ public class ProcessDepositTxInputsRequest extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
failed(t);
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
|||
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FinalizePayoutTxRequest;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.StateUtil;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -49,12 +49,12 @@ public class ProcessFinalizePayoutTxRequest extends TradeTask {
|
|||
processModel.tradingPeer.setPayoutAddressString(nonEmptyStringOf(message.sellerPayoutAddress));
|
||||
trade.setLockTime(nonNegativeLongOf(message.lockTime));
|
||||
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.FIAT_PAYMENT_RECEIPT_MSG_RECEIVED);
|
||||
trade.setTradeState(TradeState.BuyerState.FIAT_PAYMENT_RECEIPT_MSG_RECEIVED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
failed(t);
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public class ProcessPublishDepositTxRequest extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
failed(t);
|
||||
}
|
||||
|
|
|
@ -20,9 +20,9 @@ package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
|||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.p2p.listener.SendMessageListener;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.StateUtil;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -50,7 +50,7 @@ public class SendDepositTxPublishedMessage extends TradeTask {
|
|||
public void handleResult() {
|
||||
log.trace("DepositTxPublishedMessage successfully arrived at peer");
|
||||
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.DEPOSIT_PUBLISHED_MSG_SENT);
|
||||
trade.setTradeState(TradeState.BuyerState.DEPOSIT_PUBLISHED_MSG_SENT);
|
||||
|
||||
complete();
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ public class SendDepositTxPublishedMessage extends TradeTask {
|
|||
});
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,9 +20,9 @@ package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
|||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.p2p.listener.SendMessageListener;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.StateUtil;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -52,7 +52,7 @@ public class SendFiatTransferStartedMessage extends TradeTask {
|
|||
public void handleResult() {
|
||||
log.trace("Sending FiatTransferStartedMessage succeeded.");
|
||||
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.FIAT_PAYMENT_STARTED_MSG_SENT);
|
||||
trade.setTradeState(TradeState.BuyerState.FIAT_PAYMENT_STARTED_MSG_SENT);
|
||||
|
||||
complete();
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class SendFiatTransferStartedMessage extends TradeTask {
|
|||
);
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ public class SendPayDepositRequest extends TradeTask {
|
|||
});
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
StateUtil.setSendFailedState(trade);
|
||||
failed(t);
|
||||
|
|
|
@ -20,9 +20,9 @@ package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
|||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.p2p.listener.SendMessageListener;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.PayoutTxFinalizedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.StateUtil;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -49,7 +49,7 @@ public class SendPayoutTxFinalizedMessage extends TradeTask {
|
|||
public void handleResult() {
|
||||
log.trace("PayoutTxFinalizedMessage successfully arrived at peer");
|
||||
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.PAYOUT_TX_SENT);
|
||||
trade.setTradeState(TradeState.BuyerState.PAYOUT_TX_SENT);
|
||||
|
||||
complete();
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ public class SendPayoutTxFinalizedMessage extends TradeTask {
|
|||
});
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ public class SignAndFinalizePayoutTx extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,10 +19,9 @@ package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
|||
|
||||
import io.bitsquare.btc.FeePolicy;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.BuyerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
|
||||
import org.bitcoinj.core.Coin;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
|
@ -65,8 +64,7 @@ public class SignAndPublishDepositTx extends TradeTask {
|
|||
|
||||
trade.setDepositTx(transaction);
|
||||
|
||||
trade.setLifeCycleState(Trade.LifeCycleState.PENDING);
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.DEPOSIT_PUBLISHED);
|
||||
trade.setTradeState(TradeState.BuyerState.DEPOSIT_PUBLISHED);
|
||||
trade.setTakeOfferDate(new Date());
|
||||
|
||||
complete();
|
||||
|
@ -84,10 +82,6 @@ public class SignAndPublishDepositTx extends TradeTask {
|
|||
|
||||
private void handleFault(Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
if (trade instanceof BuyerTrade)
|
||||
trade.setLifeCycleState(Trade.LifeCycleState.PREPARATION);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ public class VerifyAndSignContract extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ public class VerifyTakeOfferFeePayment extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public class VerifyTakerAccount extends TradeTask {
|
|||
}
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
|
||||
StateUtil.setOfferOpenState(trade);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ public class CommitDepositTx extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ public class CreateAndSignContract extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ public class CreateAndSignDepositTx extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ package io.bitsquare.trade.protocol.trade.tasks.seller;
|
|||
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.DepositTxPublishedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -46,12 +46,12 @@ public class ProcessDepositTxPublishedMessage extends TradeTask {
|
|||
|
||||
trade.setDepositTx(checkNotNull(message.depositTx));
|
||||
|
||||
trade.setProcessState(SellerTradeState.ProcessState.DEPOSIT_PUBLISHED_MSG_RECEIVED);
|
||||
trade.setTradeState(TradeState.SellerState.DEPOSIT_PUBLISHED_MSG_RECEIVED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ package io.bitsquare.trade.protocol.trade.tasks.seller;
|
|||
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FiatTransferStartedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -46,12 +46,12 @@ public class ProcessFiatTransferStartedMessage extends TradeTask {
|
|||
|
||||
processModel.tradingPeer.setPayoutAddressString(nonEmptyStringOf(message.buyerPayoutAddress));
|
||||
|
||||
trade.setProcessState(SellerTradeState.ProcessState.FIAT_PAYMENT_STARTED_MSG_RECEIVED);
|
||||
trade.setTradeState(TradeState.SellerState.FIAT_PAYMENT_STARTED_MSG_RECEIVED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public class ProcessPayDepositRequest extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ package io.bitsquare.trade.protocol.trade.tasks.seller;
|
|||
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.PayoutTxFinalizedMessage;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -46,12 +46,12 @@ public class ProcessPayoutTxFinalizedMessage extends TradeTask {
|
|||
|
||||
trade.setPayoutTx(checkNotNull(message.payoutTx));
|
||||
|
||||
trade.setProcessState(SellerTradeState.ProcessState.PAYOUT_TX_RECEIVED);
|
||||
trade.setTradeState(TradeState.SellerState.PAYOUT_TX_RECEIVED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public class SendDepositTxInputsRequest extends TradeTask {
|
|||
});
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,9 +20,9 @@ package io.bitsquare.trade.protocol.trade.tasks.seller;
|
|||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.p2p.listener.SendMessageListener;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.messages.FinalizePayoutTxRequest;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
import io.bitsquare.trade.states.StateUtil;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -55,7 +55,7 @@ public class SendFinalizePayoutTxRequest extends TradeTask {
|
|||
public void handleResult() {
|
||||
log.trace("PayoutTxPublishedMessage successfully arrived at peer");
|
||||
|
||||
trade.setProcessState(SellerTradeState.ProcessState.FIAT_PAYMENT_RECEIPT_MSG_SENT);
|
||||
trade.setTradeState(TradeState.SellerState.FIAT_PAYMENT_RECEIPT_MSG_SENT);
|
||||
|
||||
complete();
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class SendFinalizePayoutTxRequest extends TradeTask {
|
|||
});
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public class SendPublishDepositTxRequest extends TradeTask {
|
|||
});
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ public class SignPayoutTx extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,9 +21,8 @@ import io.bitsquare.common.taskrunner.TaskRunner;
|
|||
import io.bitsquare.trade.BuyerTrade;
|
||||
import io.bitsquare.trade.SellerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
|
||||
import org.bitcoinj.core.Transaction;
|
||||
|
||||
|
@ -46,14 +45,14 @@ public class CommitPayoutTx extends TradeTask {
|
|||
trade.setPayoutTx(transaction);
|
||||
|
||||
if (trade instanceof BuyerTrade)
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.PAYOUT_TX_COMMITTED);
|
||||
trade.setTradeState(TradeState.BuyerState.PAYOUT_TX_COMMITTED);
|
||||
else if (trade instanceof SellerTrade)
|
||||
trade.setProcessState(SellerTradeState.ProcessState.PAYOUT_TX_COMMITTED);
|
||||
trade.setTradeState(TradeState.SellerState.PAYOUT_TX_COMMITTED);
|
||||
|
||||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,9 +21,8 @@ import io.bitsquare.common.taskrunner.TaskRunner;
|
|||
import io.bitsquare.trade.BuyerTrade;
|
||||
import io.bitsquare.trade.SellerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeState;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
import io.bitsquare.trade.states.BuyerTradeState;
|
||||
import io.bitsquare.trade.states.SellerTradeState;
|
||||
|
||||
import org.bitcoinj.core.StoredBlock;
|
||||
import org.bitcoinj.core.Transaction;
|
||||
|
@ -69,7 +68,7 @@ public class SetupPayoutTxLockTimeReachedListener extends TradeTask {
|
|||
}
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
@ -81,9 +80,9 @@ public class SetupPayoutTxLockTimeReachedListener extends TradeTask {
|
|||
log.debug("BroadcastTx succeeded. Transaction:" + transaction);
|
||||
|
||||
if (trade instanceof BuyerTrade)
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.PAYOUT_BROAD_CASTED);
|
||||
trade.setTradeState(TradeState.BuyerState.PAYOUT_BROAD_CASTED);
|
||||
else if (trade instanceof SellerTrade)
|
||||
trade.setProcessState(SellerTradeState.ProcessState.PAYOUT_BROAD_CASTED);
|
||||
trade.setTradeState(TradeState.SellerState.PAYOUT_BROAD_CASTED);
|
||||
|
||||
|
||||
complete();
|
||||
|
@ -92,7 +91,7 @@ public class SetupPayoutTxLockTimeReachedListener extends TradeTask {
|
|||
@Override
|
||||
public void onFailure(@NotNull Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
/*
|
||||
if (trade instanceof TakerTrade)
|
||||
trade.setProcessState(TakerTradeState.ProcessState.PAYOUT_BROAD_CASTED_FAILED);
|
||||
|
|
|
@ -43,7 +43,7 @@ public class VerifyOfferFeePayment extends TradeTask {
|
|||
complete();
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class VerifyOffererAccount extends TradeTask {
|
|||
}
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
trade.setThrowable(t);
|
||||
|
||||
failed(t);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,46 +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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.bitsquare.trade.states;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class BuyerTradeState {
|
||||
private static final Logger log = LoggerFactory.getLogger(BuyerTradeState.class);
|
||||
|
||||
public enum ProcessState implements TradeState.ProcessState {
|
||||
UNDEFINED,
|
||||
|
||||
DEPOSIT_PUBLISHED,
|
||||
DEPOSIT_PUBLISHED_MSG_SENT,
|
||||
DEPOSIT_CONFIRMED,
|
||||
|
||||
FIAT_PAYMENT_STARTED,
|
||||
FIAT_PAYMENT_STARTED_MSG_SENT,
|
||||
|
||||
FIAT_PAYMENT_RECEIPT_MSG_RECEIVED,
|
||||
|
||||
PAYOUT_TX_COMMITTED,
|
||||
PAYOUT_TX_SENT,
|
||||
|
||||
PAYOUT_BROAD_CASTED,
|
||||
|
||||
TIMEOUT,
|
||||
FAULT
|
||||
}
|
||||
}
|
|
@ -1,45 +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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.bitsquare.trade.states;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class SellerTradeState {
|
||||
private static final Logger log = LoggerFactory.getLogger(SellerTradeState.class);
|
||||
|
||||
public enum ProcessState implements TradeState.ProcessState {
|
||||
UNDEFINED,
|
||||
|
||||
DEPOSIT_PUBLISHED_MSG_RECEIVED,
|
||||
DEPOSIT_CONFIRMED,
|
||||
|
||||
FIAT_PAYMENT_STARTED_MSG_RECEIVED,
|
||||
|
||||
FIAT_PAYMENT_RECEIPT,
|
||||
FIAT_PAYMENT_RECEIPT_MSG_SENT,
|
||||
|
||||
PAYOUT_TX_RECEIVED,
|
||||
PAYOUT_TX_COMMITTED,
|
||||
|
||||
PAYOUT_BROAD_CASTED,
|
||||
|
||||
TIMEOUT,
|
||||
FAULT
|
||||
}
|
||||
}
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
package io.bitsquare.trade.states;
|
||||
|
||||
import io.bitsquare.trade.BuyerTrade;
|
||||
import io.bitsquare.trade.Trade;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -26,15 +25,17 @@ import org.slf4j.LoggerFactory;
|
|||
public class StateUtil {
|
||||
private static final Logger log = LoggerFactory.getLogger(StateUtil.class);
|
||||
|
||||
// TODO remove?
|
||||
public static void setSendFailedState(Trade trade) {
|
||||
/* if (trade instanceof BuyerTrade)
|
||||
trade.setProcessState(BuyerTradeState.ProcessState.MESSAGE_SENDING_FAILED);
|
||||
trade.setProcessState(BuyerProcessState.MESSAGE_SENDING_FAILED);
|
||||
else if (trade instanceof SellerTrade)
|
||||
trade.setProcessState(SellerTradeState.ProcessState.MESSAGE_SENDING_FAILED);*/
|
||||
trade.setProcessState(SellerProcessState.MESSAGE_SENDING_FAILED);*/
|
||||
}
|
||||
|
||||
// TODO remove?
|
||||
public static void setOfferOpenState(Trade trade) {
|
||||
if (trade instanceof BuyerTrade)
|
||||
trade.setLifeCycleState(Trade.LifeCycleState.PREPARATION);
|
||||
/*if (trade instanceof BuyerTrade)
|
||||
trade.setLifeCycleState(Trade.LifeCycleState.PREPARATION);*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,28 +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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package io.bitsquare.trade.states;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class TradeState {
|
||||
private static final Logger log = LoggerFactory.getLogger(TradeState.class);
|
||||
|
||||
public interface ProcessState {
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue