Change state handling

This commit is contained in:
Manfred Karrer 2015-04-23 13:10:32 +02:00
parent ca3d1c96f2
commit 398a729a83
62 changed files with 976 additions and 501 deletions

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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 +
'}';
}

View file

@ -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();
}
}

View file

@ -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();
}*/
}

View 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
}
}

View file

@ -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) {

View file

@ -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();
}
}

View file

@ -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"),

View file

@ -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"),

View file

@ -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"),

View file

@ -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"),

View file

@ -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.");
});
}

View file

@ -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();
}
}

View file

@ -51,7 +51,6 @@ public class CreateDepositTxInputs extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
StateUtil.setOfferOpenState(trade);

View file

@ -52,7 +52,6 @@ public class ProcessDepositTxInputsRequest extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
StateUtil.setOfferOpenState(trade);
failed(t);
}

View file

@ -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);
}

View file

@ -57,7 +57,7 @@ public class ProcessPublishDepositTxRequest extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
StateUtil.setOfferOpenState(trade);
failed(t);
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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);
}
}

View file

@ -61,7 +61,7 @@ public class SignAndFinalizePayoutTx extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -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);
}

View file

@ -58,7 +58,7 @@ public class VerifyAndSignContract extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
StateUtil.setOfferOpenState(trade);

View file

@ -44,7 +44,7 @@ public class VerifyTakeOfferFeePayment extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -56,7 +56,7 @@ public class VerifyTakerAccount extends TradeTask {
}
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
StateUtil.setOfferOpenState(trade);

View file

@ -45,7 +45,7 @@ public class CommitDepositTx extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -58,7 +58,7 @@ public class CreateAndSignContract extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -60,7 +60,7 @@ public class CreateAndSignDepositTx extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -56,7 +56,7 @@ public class ProcessPayDepositRequest extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -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);
}
}

View file

@ -83,7 +83,7 @@ public class SendDepositTxInputsRequest extends TradeTask {
});
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -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);
}
}

View file

@ -72,7 +72,7 @@ public class SendPublishDepositTxRequest extends TradeTask {
});
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -62,7 +62,7 @@ public class SignPayoutTx extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -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);
}
}

View file

@ -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);

View file

@ -43,7 +43,7 @@ public class VerifyOfferFeePayment extends TradeTask {
complete();
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -49,7 +49,7 @@ public class VerifyOffererAccount extends TradeTask {
}
} catch (Throwable t) {
t.printStackTrace();
trade.setThrowable(t);
failed(t);
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -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);*/
}
}

View file

@ -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 {
}
}