diff --git a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java
index 330a660234..2b6f0d762b 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java
@@ -37,6 +37,7 @@ import io.bitsquare.trade.TradeManager;
import io.bitsquare.trade.TradeMessageService;
import io.bitsquare.user.User;
import io.bitsquare.util.DSAKeyUtil;
+import io.bitsquare.viewfx.model.ViewModel;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.ECKey;
@@ -50,8 +51,6 @@ import java.util.List;
import java.util.Locale;
import java.util.concurrent.TimeoutException;
-import io.bitsquare.viewfx.model.ViewModel;
-
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
@@ -367,10 +366,10 @@ class MainViewModel implements ViewModel {
Arbitrator.ID_TYPE.REAL_LIFE_ID,
languages,
new Reputation(),
- Coin.parseCoin("0.001"),
+ Coin.parseCoin("0.1"),
arbitrationMethods,
idVerifications,
- "https://bitsquare.io/",
+ "https://bitsquare.io",
"Bla bla...");
accountSettings.addAcceptedArbitrator(arbitrator);
diff --git a/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.fxml b/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.fxml
index cd58f2c2cf..8f63e8ee8d 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.fxml
+++ b/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.fxml
@@ -60,7 +60,7 @@
-
+
diff --git a/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java b/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java
index 18ef7c9b4e..e5080528f1 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/debug/DebugView.java
@@ -18,6 +18,7 @@
package io.bitsquare.gui.main.debug;
import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityProtocol;
+import io.bitsquare.trade.protocol.availability.tasks.ProcessReportOfferAvailabilityMessage;
import io.bitsquare.trade.protocol.availability.tasks.RequestIsOfferAvailable;
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferProtocol;
import io.bitsquare.trade.protocol.placeoffer.tasks.AddOfferToRemoteOfferBook;
@@ -56,15 +57,14 @@ import io.bitsquare.trade.protocol.trade.taker.tasks.SignAndPublishPayoutTx;
import io.bitsquare.trade.protocol.trade.taker.tasks.TakerCommitDepositTx;
import io.bitsquare.trade.protocol.trade.taker.tasks.VerifyOfferFeePayment;
import io.bitsquare.trade.protocol.trade.taker.tasks.VerifyOffererAccount;
-import io.bitsquare.util.tasks.TaskInterception;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.viewfx.view.FxmlView;
+import io.bitsquare.viewfx.view.InitializableView;
import java.util.Arrays;
import javax.inject.Inject;
-import io.bitsquare.viewfx.view.FxmlView;
-import io.bitsquare.viewfx.view.InitializableView;
-
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
@@ -91,6 +91,7 @@ public class DebugView extends InitializableView {
CheckOfferAvailabilityProtocol.class,
io.bitsquare.trade.protocol.availability.tasks.GetPeerAddress.class,
RequestIsOfferAvailable.class,
+ ProcessReportOfferAvailabilityMessage.class,
Boolean.class, /* used as seperator*/
@@ -178,11 +179,20 @@ public class DebugView extends InitializableView {
void onSelectTask() {
Class item = taskComboBox.getSelectionModel().getSelectedItem();
if (!item.getSimpleName().contains("Protocol")) {
- if (interceptBeforeCheckBox.isSelected())
- TaskInterception.taskToInterceptBeforeRun = item;
- else
- TaskInterception.taskToInterceptAfterRun = item;
+ if (interceptBeforeCheckBox.isSelected()) {
+ Task.taskToInterceptBeforeRun = item;
+ Task.taskToInterceptAfterRun = null;
+ }
+ else {
+ Task.taskToInterceptAfterRun = item;
+ Task.taskToInterceptBeforeRun = null;
+ }
}
}
+
+ @FXML
+ void onCheckBoxChanged() {
+ onSelectTask();
+ }
}
diff --git a/gui/src/main/java/io/bitsquare/gui/main/trade/TradeView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/TradeView.java
index 00a3ad865b..882df47a7d 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/trade/TradeView.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/trade/TradeView.java
@@ -26,16 +26,15 @@ import io.bitsquare.gui.main.trade.offerbook.OfferBookView;
import io.bitsquare.gui.main.trade.takeoffer.TakeOfferView;
import io.bitsquare.offer.Direction;
import io.bitsquare.offer.Offer;
+import io.bitsquare.viewfx.view.ActivatableView;
+import io.bitsquare.viewfx.view.View;
+import io.bitsquare.viewfx.view.ViewLoader;
import org.bitcoinj.core.Coin;
import org.bitcoinj.utils.Fiat;
import java.util.List;
-import io.bitsquare.viewfx.view.View;
-import io.bitsquare.viewfx.view.ViewLoader;
-import io.bitsquare.viewfx.view.ActivatableView;
-
import javafx.application.Platform;
import javafx.collections.ListChangeListener;
import javafx.scene.control.*;
@@ -78,8 +77,7 @@ public abstract class TradeView extends ActivatableView {
// TODO Find a way to do that in the InputTextField directly, but a tab change does not trigger any event...
TabPane tabPane = root;
tabPane.getSelectionModel().selectedIndexProperty()
- .addListener((observableValue, oldValue, newValue) ->
- Platform.runLater(InputTextField::hideErrorMessageDisplay));
+ .addListener((observableValue, oldValue, newValue) -> Platform.runLater(InputTextField::hideErrorMessageDisplay));
// We want to get informed when a tab get closed
tabPane.getTabs().addListener((ListChangeListener) change -> {
@@ -165,7 +163,10 @@ public abstract class TradeView extends ActivatableView {
createOfferView.initWithData(direction, amount, price);
createOfferPane = ((CreateOfferView) view).getRoot();
final Tab tab = new Tab("Create offer");
- createOfferView.configCloseHandlers(tab.closableProperty());
+ createOfferView.setCloseHandler(() -> {
+ if (tabPane.getTabs().size() == 2)
+ tabPane.getTabs().remove(1);
+ });
tab.setContent(createOfferPane);
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);
@@ -178,13 +179,17 @@ public abstract class TradeView extends ActivatableView {
takeOfferView.initWithData(direction, amount, offer);
takeOfferPane = ((TakeOfferView) view).getRoot();
final Tab tab = new Tab("Take offer");
- takeOfferView.configCloseHandlers(tab.closableProperty());
+ takeOfferView.setCloseHandler(() -> {
+ if (tabPane.getTabs().size() == 2)
+ tabPane.getTabs().remove(1);
+ });
tab.setContent(takeOfferPane);
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);
}
}
+
private void onCreateOfferViewRemoved() {
createOfferView = null;
offerBookView.enableCreateOfferButton();
@@ -205,5 +210,9 @@ public abstract class TradeView extends ActivatableView {
void takeOffer(Coin amount, Fiat price, Offer offer);
}
+
+ public interface CloseHandler {
+ void close();
+ }
}
diff --git a/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java
index f79772a6ba..95d008c656 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferView.java
@@ -31,11 +31,12 @@ import io.bitsquare.gui.main.account.content.restrictions.RestrictionsView;
import io.bitsquare.gui.main.account.settings.AccountSettingsView;
import io.bitsquare.gui.main.help.Help;
import io.bitsquare.gui.main.help.HelpId;
-import io.bitsquare.gui.main.portfolio.PortfolioView;
-import io.bitsquare.gui.main.portfolio.offer.OffersView;
+import io.bitsquare.gui.main.trade.TradeView;
import io.bitsquare.gui.util.ImageUtil;
import io.bitsquare.locale.BSResources;
import io.bitsquare.offer.Direction;
+import io.bitsquare.viewfx.view.ActivatableViewAndModel;
+import io.bitsquare.viewfx.view.FxmlView;
import org.bitcoinj.core.Coin;
import org.bitcoinj.utils.Fiat;
@@ -45,10 +46,6 @@ import java.util.List;
import javax.inject.Inject;
-import io.bitsquare.viewfx.view.FxmlView;
-import io.bitsquare.viewfx.view.ActivatableViewAndModel;
-
-import javafx.beans.property.BooleanProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.geometry.HPos;
@@ -98,12 +95,12 @@ public class CreateOfferView extends ActivatableViewAndModel {
if (newValue) {
- Popups.openWarningPopup(BSResources.get("shared.warning"),
- BSResources.get("createOffer.amountPriceBox.warning.invalidBtcDecimalPlaces"));
+ Popups.openWarningPopup(BSResources.get("shared.warning"), BSResources.get("createOffer.amountPriceBox.warning.invalidBtcDecimalPlaces"));
model.showWarningInvalidBtcDecimalPlaces.set(false);
}
});
model.showWarningInvalidFiatDecimalPlaces.addListener((o, oldValue, newValue) -> {
if (newValue) {
- Popups.openWarningPopup(BSResources.get("shared.warning"),
- BSResources.get("createOffer.amountPriceBox.warning.invalidFiatDecimalPlaces"));
+ Popups.openWarningPopup(BSResources.get("shared.warning"), BSResources.get("createOffer.amountPriceBox.warning.invalidFiatDecimalPlaces"));
model.showWarningInvalidFiatDecimalPlaces.set(false);
}
});
model.showWarningAdjustedVolume.addListener((o, oldValue, newValue) -> {
if (newValue) {
- Popups.openWarningPopup(BSResources.get("shared.warning"),
- BSResources.get("createOffer.amountPriceBox.warning.adjustedVolume"));
+ Popups.openWarningPopup(BSResources.get("shared.warning"), BSResources.get("createOffer.amountPriceBox.warning.adjustedVolume"));
model.showWarningAdjustedVolume.set(false);
volumeTextField.setText(model.volume.get());
}
@@ -293,9 +282,8 @@ public class CreateOfferView extends ActivatableViewAndModel {
if (newValue != null) {
- Popups.openErrorPopup(BSResources.get("shared.error"),
- BSResources.get("createOffer.amountPriceBox.error.message",
- model.requestPlaceOfferErrorMessage.get()));
+ Popups.openErrorPopup(BSResources.get("shared.error"), BSResources.get("createOffer.amountPriceBox.error.message",
+ model.requestPlaceOfferErrorMessage.get()));
Popups.removeBlurContent();
}
});
diff --git a/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java
index 01d996d424..503253748c 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewModel.java
@@ -24,6 +24,8 @@ import io.bitsquare.gui.util.validation.FiatValidator;
import io.bitsquare.gui.util.validation.InputValidator;
import io.bitsquare.locale.BSResources;
import io.bitsquare.offer.Direction;
+import io.bitsquare.viewfx.model.ActivatableWithDataModel;
+import io.bitsquare.viewfx.model.ViewModel;
import org.bitcoinj.core.Address;
import org.bitcoinj.core.Coin;
@@ -31,9 +33,6 @@ import org.bitcoinj.utils.Fiat;
import javax.inject.Inject;
-import io.bitsquare.viewfx.model.ViewModel;
-import io.bitsquare.viewfx.model.ActivatableWithDataModel;
-
import javafx.beans.Observable;
import javafx.beans.binding.Bindings;
import javafx.beans.property.BooleanProperty;
@@ -80,7 +79,6 @@ class CreateOfferViewModel extends ActivatableWithDataModel amountValidationResult = new SimpleObjectProperty<>();
final ObjectProperty minAmountValidationResult = new
@@ -295,7 +293,6 @@ class CreateOfferViewModel extends ActivatableWithDataModel {
if (newValue) {
updateButtonDisableState();
- tabIsClosable.set(false);
}
});
diff --git a/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java
index c0a130d2cb..9d48bd8e9e 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBookView.java
@@ -33,15 +33,14 @@ import io.bitsquare.gui.util.validation.OptionalFiatValidator;
import io.bitsquare.locale.BSResources;
import io.bitsquare.offer.Direction;
import io.bitsquare.offer.Offer;
+import io.bitsquare.viewfx.view.ActivatableViewAndModel;
+import io.bitsquare.viewfx.view.FxmlView;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
-import io.bitsquare.viewfx.view.FxmlView;
-import io.bitsquare.viewfx.view.ActivatableViewAndModel;
-
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ChangeListener;
@@ -222,7 +221,7 @@ public class OfferBookView extends ActivatableViewAndModel offerIsAvailableChangeListener;
+ private TradeView.CloseHandler closeHandler;
@Inject
private TakeOfferView(TakeOfferViewModel model, Navigation navigation,
@@ -152,27 +153,39 @@ public class TakeOfferView extends ActivatableViewAndModel 1)
- tabPane.getTabs().remove(1);
+ if (closeHandler != null)
+ closeHandler.close();
}
private void setupListeners() {
diff --git a/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java
index aa7c2685e4..f5f8f48750 100644
--- a/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java
+++ b/gui/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewModel.java
@@ -24,15 +24,14 @@ import io.bitsquare.gui.util.validation.InputValidator;
import io.bitsquare.locale.BSResources;
import io.bitsquare.offer.Direction;
import io.bitsquare.offer.Offer;
+import io.bitsquare.viewfx.model.ActivatableWithDataModel;
+import io.bitsquare.viewfx.model.ViewModel;
import org.bitcoinj.core.Address;
import org.bitcoinj.core.Coin;
import javax.inject.Inject;
-import io.bitsquare.viewfx.model.ViewModel;
-import io.bitsquare.viewfx.model.ActivatableWithDataModel;
-
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
@@ -81,7 +80,6 @@ class TakeOfferViewModel extends ActivatableWithDataModel im
final BooleanProperty isTakeOfferSpinnerVisible = new SimpleBooleanProperty(false);
final BooleanProperty showWarningInvalidBtcDecimalPlaces = new SimpleBooleanProperty();
final BooleanProperty showTransactionPublishedScreen = new SimpleBooleanProperty();
- final BooleanProperty tabIsClosable = new SimpleBooleanProperty(true);
final ObjectProperty offerIsAvailable = new SimpleObjectProperty<>(Offer.State.UNKNOWN);
final ObjectProperty amountValidationResult = new SimpleObjectProperty<>();
@@ -272,7 +270,6 @@ class TakeOfferViewModel extends ActivatableWithDataModel im
dataModel.isWalletFunded.addListener((ov, oldValue, newValue) -> {
if (newValue) {
updateButtonDisableState();
- tabIsClosable.set(false);
}
});
diff --git a/gui/src/main/java/io/bitsquare/offer/Offer.java b/gui/src/main/java/io/bitsquare/offer/Offer.java
index b9c831c0c4..3fda0a3f83 100644
--- a/gui/src/main/java/io/bitsquare/offer/Offer.java
+++ b/gui/src/main/java/io/bitsquare/offer/Offer.java
@@ -48,9 +48,11 @@ public class Offer implements Serializable {
public enum State {
UNKNOWN,
- OFFER_AVAILABLE,
- OFFER_NOT_AVAILABLE,
- OFFER_REMOVED
+ AVAILABLE,
+ OFFERER_OFFLINE,
+ NOT_AVAILABLE,
+ AVAILABILITY_CHECK_FAILED,
+ REMOVED
}
// key attributes for lookup
diff --git a/gui/src/main/java/io/bitsquare/offer/OfferBook.java b/gui/src/main/java/io/bitsquare/offer/OfferBook.java
index b18ada823e..3a14d78902 100644
--- a/gui/src/main/java/io/bitsquare/offer/OfferBook.java
+++ b/gui/src/main/java/io/bitsquare/offer/OfferBook.java
@@ -91,7 +91,7 @@ public class OfferBook {
@Override
public void onOfferRemoved(Offer offer) {
// Update state in case that that offer is used in the take offer screen, so it gets updated correctly
- offer.setState(Offer.State.OFFER_REMOVED);
+ offer.setState(Offer.State.REMOVED);
// clean up possible references in tradeManager
tradeManager.onOfferRemovedFromRemoteOfferBook(offer);
diff --git a/gui/src/main/java/io/bitsquare/trade/TradeManager.java b/gui/src/main/java/io/bitsquare/trade/TradeManager.java
index 0f09d445bb..a8317a8656 100644
--- a/gui/src/main/java/io/bitsquare/trade/TradeManager.java
+++ b/gui/src/main/java/io/bitsquare/trade/TradeManager.java
@@ -29,8 +29,8 @@ import io.bitsquare.offer.Offer;
import io.bitsquare.offer.OfferBookService;
import io.bitsquare.offer.OpenOffer;
import io.bitsquare.persistence.Persistence;
+import io.bitsquare.trade.handlers.MessageHandler;
import io.bitsquare.trade.handlers.TransactionResultHandler;
-import io.bitsquare.trade.listeners.MessageHandler;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityModel;
import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityProtocol;
@@ -119,7 +119,7 @@ public class TradeManager {
closedTrades.putAll((Map) closedTradesObject);
}
messageHandler = this::handleMessage;
-
+
tradeMessageService.addMessageHandler(messageHandler);
}
@@ -183,7 +183,9 @@ public class TradeManager {
createOffererAsBuyerProtocol(openOffer);
resultHandler.handleResult(transaction);
},
- (message, throwable) -> errorMessageHandler.handleErrorMessage(message)
+ (message) -> {
+ errorMessageHandler.handleErrorMessage(message);
+ }
);
placeOfferProtocol.placeOffer();
@@ -278,6 +280,7 @@ public class TradeManager {
tradeMessageService.sendMessage(sender, reportOfferAvailabilityMessage, new SendMessageListener() {
@Override
public void handleResult() {
+ // Offerer does not do anything at that moment. Peer might only watch the offer and does nto start a trade.
log.trace("ReportOfferAvailabilityMessage successfully arrived at peer");
}
diff --git a/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java b/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java
index b632dd6896..2a1328361c 100644
--- a/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java
+++ b/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java
@@ -21,7 +21,7 @@ import io.bitsquare.network.Message;
import io.bitsquare.network.MessageBroker;
import io.bitsquare.network.Peer;
import io.bitsquare.trade.listeners.GetPeerAddressListener;
-import io.bitsquare.trade.listeners.MessageHandler;
+import io.bitsquare.trade.handlers.MessageHandler;
import io.bitsquare.trade.listeners.SendMessageListener;
import java.security.PublicKey;
diff --git a/gui/src/main/java/io/bitsquare/trade/listeners/MessageHandler.java b/gui/src/main/java/io/bitsquare/trade/handlers/MessageHandler.java
similarity index 95%
rename from gui/src/main/java/io/bitsquare/trade/listeners/MessageHandler.java
rename to gui/src/main/java/io/bitsquare/trade/handlers/MessageHandler.java
index d365c2ed9d..f42f7f98e2 100644
--- a/gui/src/main/java/io/bitsquare/trade/listeners/MessageHandler.java
+++ b/gui/src/main/java/io/bitsquare/trade/handlers/MessageHandler.java
@@ -15,7 +15,7 @@
* along with Bitsquare. If not, see .
*/
-package io.bitsquare.trade.listeners;
+package io.bitsquare.trade.handlers;
import io.bitsquare.network.Message;
import io.bitsquare.network.Peer;
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java b/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java
index 38001317f1..aeee43a6ab 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityModel.java
@@ -22,7 +22,7 @@ import io.bitsquare.offer.Offer;
import io.bitsquare.trade.TradeMessageService;
import io.bitsquare.trade.protocol.trade.OfferMessage;
import io.bitsquare.util.handlers.ResultHandler;
-import io.bitsquare.util.tasks.SharedModel;
+import io.bitsquare.util.taskrunner.SharedModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityProtocol.java b/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityProtocol.java
index 6f55e17cbd..3fa2baeef6 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityProtocol.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/availability/CheckOfferAvailabilityProtocol.java
@@ -20,19 +20,18 @@ package io.bitsquare.trade.protocol.availability;
import io.bitsquare.network.Message;
import io.bitsquare.network.Peer;
import io.bitsquare.offer.Offer;
-import io.bitsquare.trade.listeners.MessageHandler;
+import io.bitsquare.trade.handlers.MessageHandler;
import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage;
import io.bitsquare.trade.protocol.availability.tasks.GetPeerAddress;
+import io.bitsquare.trade.protocol.availability.tasks.ProcessReportOfferAvailabilityMessage;
import io.bitsquare.trade.protocol.availability.tasks.RequestIsOfferAvailable;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.TaskRunner;
import javafx.application.Platform;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static io.bitsquare.util.Validator.nonEmptyStringOf;
-
public class CheckOfferAvailabilityProtocol {
private static final Logger log = LoggerFactory.getLogger(CheckOfferAvailabilityProtocol.class);
@@ -53,7 +52,7 @@ public class CheckOfferAvailabilityProtocol {
}
public void cleanup() {
- // cannot remove listener in same execution cycle, so we delay it
+ // Cannot remove listener in same execution cycle, so we delay it
Platform.runLater(() -> model.getTradeMessageService().removeMessageHandler(messageHandler));
}
@@ -69,8 +68,8 @@ public class CheckOfferAvailabilityProtocol {
() -> {
log.debug("sequence at onCheckOfferAvailability completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -83,26 +82,34 @@ public class CheckOfferAvailabilityProtocol {
public void cancel() {
isCanceled = true;
sequence.cancel();
+ model.getOffer().setState(Offer.State.UNKNOWN);
}
+
///////////////////////////////////////////////////////////////////////////////////////////
// Incoming message handling
///////////////////////////////////////////////////////////////////////////////////////////
private void handleMessage(Message message, Peer sender) {
if (!isCanceled) {
- if (message instanceof ReportOfferAvailabilityMessage) {
- ReportOfferAvailabilityMessage reportOfferAvailabilityMessage = (ReportOfferAvailabilityMessage) message;
- nonEmptyStringOf(reportOfferAvailabilityMessage.getOfferId());
-
- if (model.getOffer().getState() != Offer.State.OFFER_REMOVED) {
- if (reportOfferAvailabilityMessage.isOfferOpen())
- model.getOffer().setState(Offer.State.OFFER_AVAILABLE);
- else
- model.getOffer().setState(Offer.State.OFFER_NOT_AVAILABLE);
- }
- }
- model.getResultHandler().handleResult();
+ if (message instanceof ReportOfferAvailabilityMessage)
+ handleReportOfferAvailabilityMessage((ReportOfferAvailabilityMessage) message);
}
}
+
+ private void handleReportOfferAvailabilityMessage(ReportOfferAvailabilityMessage message) {
+ model.setMessage(message);
+
+ sequence = new TaskRunner<>(model,
+ () -> {
+ log.debug("sequence at handleReportOfferAvailabilityMessage completed");
+ model.getResultHandler().handleResult();
+ },
+ (errorMessage) -> {
+ log.error(errorMessage);
+ }
+ );
+ sequence.addTasks(ProcessReportOfferAvailabilityMessage.class);
+ sequence.run();
+ }
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/GetPeerAddress.java b/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/GetPeerAddress.java
index d72f3aee36..283f59d79f 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/GetPeerAddress.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/GetPeerAddress.java
@@ -18,10 +18,11 @@
package io.bitsquare.trade.protocol.availability.tasks;
import io.bitsquare.network.Peer;
+import io.bitsquare.offer.Offer;
import io.bitsquare.trade.listeners.GetPeerAddressListener;
import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,25 +32,31 @@ public class GetPeerAddress extends Task {
public GetPeerAddress(TaskRunner taskHandler, CheckOfferAvailabilityModel model) {
super(taskHandler, model);
+
+ errorMessage = "DHT lookup for peer address failed. Maybe the offerer was offline for too long time.";
}
@Override
- protected void run() {
+ protected void doRun() {
model.getTradeMessageService().getPeerAddress(model.getOffer().getMessagePublicKey(), new GetPeerAddressListener() {
@Override
public void onResult(Peer peer) {
log.trace("Found peer: " + peer.toString());
-
+
model.setPeer(peer);
-
complete();
}
@Override
public void onFailed() {
- failed("DHT lookup for peer address failed.");
+ failed();
}
});
}
+
+ @Override
+ protected void applyErrorState() {
+ model.getOffer().setState(Offer.State.OFFERER_OFFLINE);
+ }
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/ProcessReportOfferAvailabilityMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/ProcessReportOfferAvailabilityMessage.java
new file mode 100644
index 0000000000..5fb857b52a
--- /dev/null
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/ProcessReportOfferAvailabilityMessage.java
@@ -0,0 +1,58 @@
+/*
+ * This file is part of Bitsquare.
+ *
+ * Bitsquare is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Bitsquare is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with Bitsquare. If not, see .
+ */
+
+package io.bitsquare.trade.protocol.availability.tasks;
+
+import io.bitsquare.offer.Offer;
+import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityModel;
+import io.bitsquare.trade.protocol.availability.messages.ReportOfferAvailabilityMessage;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static io.bitsquare.util.Validator.nonEmptyStringOf;
+
+public class ProcessReportOfferAvailabilityMessage extends Task {
+ private static final Logger log = LoggerFactory.getLogger(ProcessReportOfferAvailabilityMessage.class);
+
+ public ProcessReportOfferAvailabilityMessage(TaskRunner taskHandler, CheckOfferAvailabilityModel model) {
+ super(taskHandler, model);
+ }
+
+ @Override
+ protected void doRun() {
+ ReportOfferAvailabilityMessage reportOfferAvailabilityMessage = (ReportOfferAvailabilityMessage) model.getMessage();
+ nonEmptyStringOf(reportOfferAvailabilityMessage.getOfferId());
+
+ if (model.getOffer().getState() != Offer.State.REMOVED) {
+ if (reportOfferAvailabilityMessage.isOfferOpen())
+ model.getOffer().setState(Offer.State.AVAILABLE);
+ else
+ model.getOffer().setState(Offer.State.NOT_AVAILABLE);
+ }
+
+ complete();
+ }
+
+ @Override
+ protected void applyErrorState() {
+ model.getOffer().setState(Offer.State.AVAILABILITY_CHECK_FAILED);
+ }
+}
+
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/RequestIsOfferAvailable.java b/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/RequestIsOfferAvailable.java
index c34aa22bab..f9499d67e3 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/RequestIsOfferAvailable.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/availability/tasks/RequestIsOfferAvailable.java
@@ -17,11 +17,12 @@
package io.bitsquare.trade.protocol.availability.tasks;
+import io.bitsquare.offer.Offer;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityModel;
import io.bitsquare.trade.protocol.availability.messages.RequestIsOfferAvailableMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,20 +35,25 @@ public class RequestIsOfferAvailable extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
model.getTradeMessageService().sendMessage(model.getPeer(), new RequestIsOfferAvailableMessage(model.getOffer().getId()),
new SendMessageListener() {
@Override
public void handleResult() {
- log.trace("RequestIsOfferAvailableMessage successfully arrived at peer");
complete();
}
@Override
public void handleFault() {
- failed("Sending RequestIsOfferAvailableMessage failed.");
+ model.getOffer().setState(Offer.State.OFFERER_OFFLINE);
+ failed();
}
});
}
+
+ @Override
+ protected void applyErrorState() {
+ model.getOffer().setState(Offer.State.AVAILABILITY_CHECK_FAILED);
+ }
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java
index d530618dc1..1b9491947f 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferModel.java
@@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.placeoffer;
import io.bitsquare.btc.WalletService;
import io.bitsquare.offer.Offer;
import io.bitsquare.offer.OfferBookService;
-import io.bitsquare.util.tasks.SharedModel;
+import io.bitsquare.util.taskrunner.SharedModel;
import org.bitcoinj.core.Transaction;
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocol.java b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocol.java
index 4e20139767..b125e82192 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocol.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocol.java
@@ -22,8 +22,8 @@ import io.bitsquare.trade.protocol.placeoffer.tasks.AddOfferToRemoteOfferBook;
import io.bitsquare.trade.protocol.placeoffer.tasks.BroadcastCreateOfferFeeTx;
import io.bitsquare.trade.protocol.placeoffer.tasks.CreateOfferFeeTx;
import io.bitsquare.trade.protocol.placeoffer.tasks.ValidateOffer;
-import io.bitsquare.util.handlers.FaultHandler;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.handlers.ErrorMessageHandler;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,7 +33,7 @@ public class PlaceOfferProtocol {
private final PlaceOfferModel model;
private TransactionResultHandler resultHandler;
- private FaultHandler faultHandle;
+ private ErrorMessageHandler errorMessageHandler;
///////////////////////////////////////////////////////////////////////////////////////////
// Constructor
@@ -41,10 +41,10 @@ public class PlaceOfferProtocol {
public PlaceOfferProtocol(PlaceOfferModel model,
TransactionResultHandler resultHandler,
- FaultHandler faultHandle) {
+ ErrorMessageHandler errorMessageHandler) {
this.model = model;
this.resultHandler = resultHandler;
- this.faultHandle = faultHandle;
+ this.errorMessageHandler = errorMessageHandler;
}
@@ -58,16 +58,16 @@ public class PlaceOfferProtocol {
log.debug("sequence at handleRequestTakeOfferMessage completed");
resultHandler.handleResult(model.getTransaction());
},
- (message, throwable) -> {
- log.error(message);
- faultHandle.handleFault(message, throwable);
+ (errorMessage) -> {
+ log.error(errorMessage);
+ errorMessageHandler.handleErrorMessage(errorMessage);
}
);
sequence.addTasks(
ValidateOffer.class,
CreateOfferFeeTx.class,
- BroadcastCreateOfferFeeTx.class,
- AddOfferToRemoteOfferBook.class
+ AddOfferToRemoteOfferBook.class,
+ BroadcastCreateOfferFeeTx.class
);
sequence.run();
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/AddOfferToRemoteOfferBook.java b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/AddOfferToRemoteOfferBook.java
index 29c91c1599..00692b350e 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/AddOfferToRemoteOfferBook.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/AddOfferToRemoteOfferBook.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.placeoffer.tasks;
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,16 +29,17 @@ public class AddOfferToRemoteOfferBook extends Task {
public AddOfferToRemoteOfferBook(TaskRunner taskHandler, PlaceOfferModel model) {
super(taskHandler, model);
+ appendToErrorMessage("Could not add offer to offerbook. Maybe you have connection problems. Please try later again.");
}
@Override
- protected void run() {
+ protected void doRun() {
model.getOfferBookService().addOffer(model.getOffer(),
() -> {
complete();
},
(message, throwable) -> {
- failed(message, throwable);
+ failed(throwable);
});
}
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/BroadcastCreateOfferFeeTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/BroadcastCreateOfferFeeTx.java
index 6186ced9d3..9719797a7f 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/BroadcastCreateOfferFeeTx.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/BroadcastCreateOfferFeeTx.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.placeoffer.tasks;
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Transaction;
@@ -33,33 +33,55 @@ public class BroadcastCreateOfferFeeTx extends Task {
public BroadcastCreateOfferFeeTx(TaskRunner taskHandler, PlaceOfferModel model) {
super(taskHandler, model);
+
+ appendToErrorMessage("Broadcast of offer fee payment failed because transaction = null.");
+ appendToErrorMessage("Maybe you have connection problems. Please try later again.");
}
@Override
- protected void run() {
- try {
- model.getWalletService().broadcastCreateOfferFeeTx(model.getTransaction(), new FutureCallback() {
- @Override
- public void onSuccess(Transaction transaction) {
- log.info("Broadcast of offer fee payment succeeded: transaction = " + transaction.toString());
- if (transaction != null) {
- // need to write data before storage, otherwise hash is different when removing offer from DHT!
- model.getOffer().setOfferFeePaymentTxID(model.getTransaction().getHashAsString());
-
+ protected void doRun() {
+ model.getWalletService().broadcastCreateOfferFeeTx(model.getTransaction(), new FutureCallback() {
+ @Override
+ public void onSuccess(Transaction transaction) {
+ log.info("Broadcast of offer fee payment succeeded: transaction = " + transaction.toString());
+ if (transaction != null) {
+
+ if (model.getTransaction().getHashAsString() == transaction.getHashAsString()) {
+ // No tx malleability happened after broadcast (still not in blockchain)
complete();
}
else {
- failed("Broadcast of offer fee payment failed because transaction = null.");
+ log.warn("Tx malleability happened after broadcast. We publish the changed offer to the DHT again.");
+ // Tx malleability happened after broadcast. We publish the changed offer to the DHT again.
+ model.getOfferBookService().removeOffer(model.getOffer(),
+ () -> {
+ log.info("We store now the changed txID to the offer and add that again.");
+ // We store now the changed txID to the offer and add that again.
+ model.getOffer().setOfferFeePaymentTxID(transaction.getHashAsString());
+ model.getOfferBookService().addOffer(model.getOffer(),
+ () -> {
+ complete();
+ },
+ (message, throwable) -> {
+ log.error("addOffer failed");
+ failed(throwable);
+ });
+ },
+ (message, throwable) -> {
+ log.error("removeOffer failed");
+ failed(throwable);
+ });
}
}
-
- @Override
- public void onFailure(Throwable t) {
- failed(t);
+ else {
+ failed("Fault reason: Transaction = null.");
}
- });
- } catch (Throwable t) {
- failed(t);
- }
+ }
+
+ @Override
+ public void onFailure(Throwable t) {
+ failed(t);
+ }
+ });
}
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/CreateOfferFeeTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/CreateOfferFeeTx.java
index fc31ceaabd..bb6f9754f6 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/CreateOfferFeeTx.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/CreateOfferFeeTx.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.placeoffer.tasks;
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Transaction;
@@ -34,10 +34,12 @@ public class CreateOfferFeeTx extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
Transaction transaction = model.getWalletService().createOfferFeeTx(model.getOffer().getId());
-
+
+ // We assume there will be no tx malleability. We add a check later in case the published offer has a different hash.
+ model.getOffer().setOfferFeePaymentTxID(transaction.getHashAsString());
model.setTransaction(transaction);
complete();
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/ValidateOffer.java b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/ValidateOffer.java
index 5e4fd44918..2adc48753e 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/ValidateOffer.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/placeoffer/tasks/ValidateOffer.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.placeoffer.tasks;
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ public class ValidateOffer extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
model.getOffer().validate();
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/TradeSharedModel.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/TradeSharedModel.java
index df570efb07..2f868c60bc 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/TradeSharedModel.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/TradeSharedModel.java
@@ -24,7 +24,7 @@ import io.bitsquare.crypto.SignatureService;
import io.bitsquare.offer.Offer;
import io.bitsquare.trade.TradeMessageService;
import io.bitsquare.user.User;
-import io.bitsquare.util.tasks.SharedModel;
+import io.bitsquare.util.taskrunner.SharedModel;
import org.bitcoinj.core.ECKey;
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererProtocol.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererProtocol.java
index e494c78fdf..1eb30e9638 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererProtocol.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererProtocol.java
@@ -19,7 +19,7 @@ package io.bitsquare.trade.protocol.trade.offerer;
import io.bitsquare.network.Message;
import io.bitsquare.network.Peer;
-import io.bitsquare.trade.listeners.MessageHandler;
+import io.bitsquare.trade.handlers.MessageHandler;
import io.bitsquare.trade.protocol.trade.TradeMessage;
import io.bitsquare.trade.protocol.trade.offerer.tasks.CreateDepositTx;
import io.bitsquare.trade.protocol.trade.offerer.tasks.ProcessPayoutTxPublishedMessage;
@@ -71,8 +71,6 @@ public class BuyerAsOffererProtocol {
public void cleanup() {
model.getTradeMessageService().removeMessageHandler(messageHandler);
- // cannot remove listener in same execution cycle, so we delay it
- //Platform.runLater(() -> model.getTradeMessageService().removeMessageHandler(messageHandler));
}
@@ -113,8 +111,8 @@ public class BuyerAsOffererProtocol {
() -> {
log.debug("sequence at handleRequestTakeOfferMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -131,8 +129,8 @@ public class BuyerAsOffererProtocol {
() -> {
log.debug("sequence at handleTakeOfferFeePayedMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -150,8 +148,8 @@ public class BuyerAsOffererProtocol {
() -> {
log.debug("sequence at handleRequestOffererPublishDepositTxMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -176,8 +174,8 @@ public class BuyerAsOffererProtocol {
() -> {
log.debug("sequence at handleBankTransferStartedUIEvent completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -200,8 +198,8 @@ public class BuyerAsOffererProtocol {
() -> {
log.debug("sequence at handlePayoutTxPublishedMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(ProcessPayoutTxPublishedMessage.class);
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererTaskRunner.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererTaskRunner.java
index ed67947958..694c322cde 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererTaskRunner.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAsOffererTaskRunner.java
@@ -17,12 +17,9 @@
package io.bitsquare.trade.protocol.trade.offerer;
-import io.bitsquare.trade.Trade;
-import io.bitsquare.util.handlers.FaultHandler;
+import io.bitsquare.util.handlers.ErrorMessageHandler;
import io.bitsquare.util.handlers.ResultHandler;
-import io.bitsquare.util.tasks.TaskRunner;
-
-import org.jetbrains.annotations.NotNull;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,13 +27,13 @@ import org.slf4j.LoggerFactory;
public class BuyerAsOffererTaskRunner extends TaskRunner {
private static final Logger log = LoggerFactory.getLogger(BuyerAsOffererTaskRunner.class);
- public BuyerAsOffererTaskRunner(T sharedModel, ResultHandler resultHandler, FaultHandler faultHandler) {
- super(sharedModel, resultHandler, faultHandler);
+ public BuyerAsOffererTaskRunner(T sharedModel, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
+ super(sharedModel, resultHandler, errorMessageHandler);
}
- @Override
+ /* @Override
public void handleFault(String message, @NotNull Throwable throwable) {
sharedModel.getTrade().setState(Trade.State.FAILED);
super.handleFault(message, throwable);
- }
+ }*/
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java
index 292aa6219a..6cedc9352f 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/CreateDepositTx.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.btc.FeePolicy;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.InsufficientMoneyException;
@@ -38,7 +38,7 @@ public class CreateDepositTx extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
String offererPubKey = model.getWalletService().getAddressInfoByTradeID(model.getTrade().getId()).getPubKeyAsHexString();
Coin offererInputAmount = model.getTrade().getSecurityDeposit().add(FeePolicy.TX_FEE);
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessPayoutTxPublishedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessPayoutTxPublishedMessage.java
index d615758b70..dca1736fed 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessPayoutTxPublishedMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessPayoutTxPublishedMessage.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.taker.messages.PayoutTxPublishedMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.core.Utils;
@@ -39,7 +39,7 @@ public class ProcessPayoutTxPublishedMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
checkTradeId(model.getTrade().getId(), model.getTradeMessage());
String payoutTxAsHex = nonEmptyStringOf(((PayoutTxPublishedMessage) model.getTradeMessage()).getPayoutTxAsHex());
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessRequestOffererPublishDepositTxMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessRequestOffererPublishDepositTxMessage.java
index 8873afe891..5c6783f329 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessRequestOffererPublishDepositTxMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessRequestOffererPublishDepositTxMessage.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.taker.messages.RequestOffererPublishDepositTxMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ public class ProcessRequestOffererPublishDepositTxMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
checkTradeId(model.getOffer().getId(), model.getTradeMessage());
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessTakeOfferFeePayedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessTakeOfferFeePayedMessage.java
index d423fb846d..5ca464c255 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessTakeOfferFeePayedMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/ProcessTakeOfferFeePayedMessage.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.taker.messages.TakeOfferFeePayedMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ public class ProcessTakeOfferFeePayedMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
checkTradeId(model.getTrade().getId(), model.getTradeMessage());
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RespondToTakeOfferRequest.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RespondToTakeOfferRequest.java
index f637225740..f124f4167e 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RespondToTakeOfferRequest.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/RespondToTakeOfferRequest.java
@@ -22,8 +22,8 @@ import io.bitsquare.trade.Trade;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.messages.RespondToTakeOfferRequestMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ public class RespondToTakeOfferRequest extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
boolean takeOfferRequestAccepted = model.getOpenOffer().getState() == OpenOffer.State.OPEN;
if (!takeOfferRequestAccepted)
log.info("Received take offer request but the offer not marked as open anymore.");
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendBankTransferInitedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendBankTransferInitedMessage.java
index e0ad201e06..3821c0c794 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendBankTransferInitedMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendBankTransferInitedMessage.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.messages.BankTransferStartedMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class SendBankTransferInitedMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
BankTransferStartedMessage tradeMessage = new BankTransferStartedMessage(
model.getTrade().getId(),
model.getDepositTxAsHex(),
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java
index 8c496f59a6..ca0ea826c6 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendDepositTxIdToTaker.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.messages.DepositTxPublishedMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Utils;
@@ -36,7 +36,7 @@ public class SendDepositTxIdToTaker extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
DepositTxPublishedMessage tradeMessage = new DepositTxPublishedMessage(model.getTrade().getId(),
Utils.HEX.encode(model.getTrade().getDepositTx().bitcoinSerialize()));
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendTakerDepositPaymentRequest.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendTakerDepositPaymentRequest.java
index 57cedb3a11..2edae65d85 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendTakerDepositPaymentRequest.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendTakerDepositPaymentRequest.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.trade.protocol.trade.offerer.messages.TakerDepositPaymentRequestMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class SendTakerDepositPaymentRequest extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
TakerDepositPaymentRequestMessage tradeMessage = new TakerDepositPaymentRequestMessage(
model.getTrade().getId(),
model.getBankAccount(),
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java
index ac27df467f..84c7acab5b 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.core.TransactionConfidence;
@@ -37,7 +37,7 @@ public class SetupListenerForBlockChainConfirmation extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
model.getWalletService().offererSignAndPublishTx(model.getPreparedOffererDepositTxAsHex(),
model.getSignedTakerDepositTxAsHex(),
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignPayoutTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignPayoutTx.java
index 9227db5b36..65333e81f8 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignPayoutTx.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignPayoutTx.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.ECKey;
@@ -38,7 +38,7 @@ public class SignPayoutTx extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
Trade trade = model.getTrade();
Coin securityDeposit = trade.getSecurityDeposit();
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java
index 8a7f947547..8d8a9bf6ec 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyAndSignContract.java
@@ -21,8 +21,8 @@ import io.bitsquare.trade.Contract;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
import io.bitsquare.util.Utilities;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ public class VerifyAndSignContract extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
Trade trade = model.getTrade();
Contract contract = new Contract(
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java
index 8ca76a57d5..a45bf33944 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakeOfferFeePayment.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ public class VerifyTakeOfferFeePayment extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
//TODO mocked yet, need a confidence listeners
int numOfPeersSeenTx = model.getWalletService().getNumOfPeersSeenTx(model.getTakeOfferFeeTxId());
/* if (numOfPeersSeenTx > 2) {
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java
index 2eb9c00a90..d22eed65a0 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/VerifyTakerAccount.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.trade.offerer.tasks;
import io.bitsquare.trade.protocol.trade.offerer.BuyerAsOffererModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ public class VerifyTakerAccount extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
//TODO mocked yet
if (model.getBlockChainService().verifyAccountRegistration()) {
if (model.getBlockChainService().isAccountBlackListed(model.getPeersAccountId(), model.getPeersBankAccount())) {
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerProtocol.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerProtocol.java
index ab479959a3..46edf23c95 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerProtocol.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerProtocol.java
@@ -20,7 +20,7 @@ package io.bitsquare.trade.protocol.trade.taker;
import io.bitsquare.network.Message;
import io.bitsquare.network.Peer;
import io.bitsquare.trade.Trade;
-import io.bitsquare.trade.listeners.MessageHandler;
+import io.bitsquare.trade.handlers.MessageHandler;
import io.bitsquare.trade.protocol.trade.TradeMessage;
import io.bitsquare.trade.protocol.trade.offerer.messages.BankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.offerer.messages.DepositTxPublishedMessage;
@@ -75,8 +75,8 @@ public class SellerAsTakerProtocol {
() -> {
log.debug("sequence at handleRequestTakeOfferUIEvent completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -88,8 +88,6 @@ public class SellerAsTakerProtocol {
public void cleanup() {
model.getTradeMessageService().removeMessageHandler(messageHandler);
- // cannot remove listener in same execution cycle, so we delay it
- // Platform.runLater(() -> model.getTradeMessageService().removeMessageHandler(messageHandler));
}
@@ -128,8 +126,8 @@ public class SellerAsTakerProtocol {
() -> {
log.debug("sequence at handleRespondToTakeOfferRequestMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -147,8 +145,8 @@ public class SellerAsTakerProtocol {
() -> {
log.debug("sequence at handleTakerDepositPaymentRequestMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -168,8 +166,8 @@ public class SellerAsTakerProtocol {
() -> {
log.debug("sequence at handleDepositTxPublishedMessage completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
@@ -187,8 +185,8 @@ public class SellerAsTakerProtocol {
log.debug("sequence at handleBankTransferInitedMessage completed");
model.getTrade().setState(Trade.State.FIAT_PAYMENT_STARTED);
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(ProcessBankTransferInitedMessage.class);
@@ -205,8 +203,8 @@ public class SellerAsTakerProtocol {
() -> {
log.debug("sequence at handleFiatReceivedUIEvent completed");
},
- (message, throwable) -> {
- log.error(message);
+ (errorMessage) -> {
+ log.error(errorMessage);
}
);
sequence.addTasks(
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerTaskRunner.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerTaskRunner.java
index 8757e119ef..dc0cf3b6f4 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerTaskRunner.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/SellerAsTakerTaskRunner.java
@@ -17,12 +17,9 @@
package io.bitsquare.trade.protocol.trade.taker;
-import io.bitsquare.trade.Trade;
-import io.bitsquare.util.handlers.FaultHandler;
+import io.bitsquare.util.handlers.ErrorMessageHandler;
import io.bitsquare.util.handlers.ResultHandler;
-import io.bitsquare.util.tasks.TaskRunner;
-
-import org.jetbrains.annotations.NotNull;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,13 +27,13 @@ import org.slf4j.LoggerFactory;
public class SellerAsTakerTaskRunner extends TaskRunner {
private static final Logger log = LoggerFactory.getLogger(SellerAsTakerTaskRunner.class);
- public SellerAsTakerTaskRunner(T sharedModel, ResultHandler resultHandler, FaultHandler faultHandler) {
- super(sharedModel, resultHandler, faultHandler);
+ public SellerAsTakerTaskRunner(T sharedModel, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
+ super(sharedModel, resultHandler, errorMessageHandler);
}
- @Override
- public void handleFault(String message, @NotNull Throwable throwable) {
+ /* @Override
+ public void handleErrorMessage(String errorMessage) {
sharedModel.getTrade().setState(Trade.State.FAILED);
- super.handleFault(message, throwable);
- }
+ super.handleErrorMessage(errorMessage);
+ }*/
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java
index 59521f56de..c94d1f35ce 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/CreateAndSignContract.java
@@ -21,8 +21,8 @@ import io.bitsquare.trade.Contract;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
import io.bitsquare.util.Utilities;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ public class CreateAndSignContract extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
Trade trade = model.getTrade();
Contract contract = new Contract(
model.getOffer(),
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java
index f1ae72c553..34e1adc453 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/GetPeerAddress.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.network.Peer;
import io.bitsquare.trade.listeners.GetPeerAddressListener;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class GetPeerAddress extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
model.getTradeMessageService().getPeerAddress(model.getOffererMessagePublicKey(), new GetPeerAddressListener() {
@Override
public void onResult(Peer peer) {
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java
index 3f2ec5d2f7..c849d3ad49 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayDeposit.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.InsufficientMoneyException;
@@ -36,7 +36,7 @@ public class PayDeposit extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
Coin amountToPay = model.getTradeAmount().add(model.getSecurityDeposit());
Coin msOutputAmount = amountToPay.add(model.getSecurityDeposit());
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java
index bc4e00a3c9..2ba476278a 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.InsufficientMoneyException;
import org.bitcoinj.core.Transaction;
@@ -39,7 +39,7 @@ public class PayTakeOfferFee extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
model.getWalletService().payTakeOfferFee(model.getTrade().getId(), new FutureCallback() {
@Override
@@ -51,11 +51,11 @@ public class PayTakeOfferFee extends Task {
@Override
public void onFailure(@NotNull Throwable t) {
- failed("Pay take offer fee caused an exception: ", t);
+ failed(t);
}
});
} catch (InsufficientMoneyException e) {
- failed("Pay take offer fee caused an exception: ", e);
+ failed(e);
}
}
}
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessBankTransferInitedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessBankTransferInitedMessage.java
index de9a40fe29..89b2f2d974 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessBankTransferInitedMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessBankTransferInitedMessage.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.protocol.trade.offerer.messages.BankTransferStartedMessage;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ public class ProcessBankTransferInitedMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
checkTradeId(model.getTrade().getId(), model.getTradeMessage());
BankTransferStartedMessage message = (BankTransferStartedMessage) model.getTradeMessage();
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessDepositTxPublishedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessDepositTxPublishedMessage.java
index 76aa1097df..2a029dd75f 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessDepositTxPublishedMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessDepositTxPublishedMessage.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.protocol.trade.offerer.messages.DepositTxPublishedMessage;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,7 +35,7 @@ public class ProcessDepositTxPublishedMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
checkTradeId(model.getTrade().getId(), model.getTradeMessage());
@@ -44,7 +44,7 @@ public class ProcessDepositTxPublishedMessage extends Task {
complete();
} catch (Throwable t) {
- failed("Validation for DepositTxPublishedMessage failed.", t);
+ failed(t);
}
}
}
\ No newline at end of file
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessRespondToTakeOfferRequestMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessRespondToTakeOfferRequestMessage.java
index 56c50eee72..df3e9fcfc6 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessRespondToTakeOfferRequestMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/ProcessRespondToTakeOfferRequestMessage.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.offerer.messages.RespondToTakeOfferRequestMessage;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ public class ProcessRespondToTakeOfferRequestMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
model.getTradeMessageService().sendMessage(model.getPeer(), new RequestTakeOfferMessage(model.getTrade().getId()),
new SendMessageListener() {
@Override
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java
index 395919d0eb..a8e39bcf3b 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendPayoutTxToOfferer.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.messages.PayoutTxPublishedMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class SendPayoutTxToOfferer extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
PayoutTxPublishedMessage tradeMessage = new PayoutTxPublishedMessage(model.getTrade().getId(), model.getPayoutTxAsHex());
model.getTradeMessageService().sendMessage(model.getPeer(), tradeMessage, new SendMessageListener() {
@Override
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java
index 2d7354db2e..6c13407fd3 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendSignedTakerDepositTxAsHex.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.messages.RequestOffererPublishDepositTxMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.core.Utils;
@@ -37,7 +37,7 @@ public class SendSignedTakerDepositTxAsHex extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
Transaction signedTakerDepositTx = model.getSignedTakerDepositTx();
long takerTxOutIndex = model.getSignedTakerDepositTx().getInput(1).getOutpoint().getIndex();
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedMessage.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedMessage.java
index c5445937f2..2a7ea42060 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedMessage.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SendTakeOfferFeePayedMessage.java
@@ -20,8 +20,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
import io.bitsquare.trade.protocol.trade.taker.messages.TakeOfferFeePayedMessage;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class SendTakeOfferFeePayedMessage extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
TakeOfferFeePayedMessage msg = new TakeOfferFeePayedMessage(
model.getTrade().getId(),
model.getTrade().getTakeOfferFeeTxId(),
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java
index b3119a1e59..0b21119cf5 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.AddressFormatException;
import org.bitcoinj.core.Transaction;
@@ -41,7 +41,7 @@ public class SignAndPublishPayoutTx extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
try {
model.getWalletService().takerSignsAndSendsTx(model.getDepositTxAsHex(),
model.getOffererSignatureR(),
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/TakerCommitDepositTx.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/TakerCommitDepositTx.java
index e16d88829a..b630dd170a 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/TakerCommitDepositTx.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/TakerCommitDepositTx.java
@@ -19,8 +19,8 @@ package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.Trade;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.bitcoinj.core.Transaction;
@@ -35,7 +35,7 @@ public class TakerCommitDepositTx extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
Transaction transaction = model.getWalletService().takerCommitDepositTx(model.getDepositTxAsHex());
model.getTrade().setDepositTx(transaction);
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOfferFeePayment.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOfferFeePayment.java
index 0bed9ed214..5b559480b1 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOfferFeePayment.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOfferFeePayment.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ public class VerifyOfferFeePayment extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
//TODO impl. missing
int numOfPeersSeenTx = model.getWalletService().getNumOfPeersSeenTx(model.getTrade().getTakeOfferFeeTxId());
/* if (numOfPeersSeenTx > 2) {
diff --git a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java
index 531e34a29d..74485c3786 100644
--- a/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java
+++ b/gui/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/VerifyOffererAccount.java
@@ -18,8 +18,8 @@
package io.bitsquare.trade.protocol.trade.taker.tasks;
import io.bitsquare.trade.protocol.trade.taker.SellerAsTakerModel;
-import io.bitsquare.util.tasks.Task;
-import io.bitsquare.util.tasks.TaskRunner;
+import io.bitsquare.util.taskrunner.Task;
+import io.bitsquare.util.taskrunner.TaskRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +32,7 @@ public class VerifyOffererAccount extends Task {
}
@Override
- protected void run() {
+ protected void doRun() {
if (model.getBlockChainService().verifyAccountRegistration()) {
if (model.getBlockChainService().isAccountBlackListed(model.getPeersAccountId(), model.getPeersBankAccount())) {
failed("Taker is blacklisted.");
diff --git a/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageService.java b/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageService.java
index 0f03ff1f9e..96d4d9069f 100644
--- a/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageService.java
+++ b/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageService.java
@@ -23,7 +23,7 @@ import io.bitsquare.network.tomp2p.TomP2PNode;
import io.bitsquare.network.tomp2p.TomP2PPeer;
import io.bitsquare.trade.TradeMessageService;
import io.bitsquare.trade.listeners.GetPeerAddressListener;
-import io.bitsquare.trade.listeners.MessageHandler;
+import io.bitsquare.trade.handlers.MessageHandler;
import io.bitsquare.trade.listeners.SendMessageListener;
import io.bitsquare.user.User;
diff --git a/gui/src/main/java/io/bitsquare/trade/listeners/TakeOfferRequestListener.java b/gui/src/main/java/io/bitsquare/util/taskrunner/InterceptTaskException.java
similarity index 67%
rename from gui/src/main/java/io/bitsquare/trade/listeners/TakeOfferRequestListener.java
rename to gui/src/main/java/io/bitsquare/util/taskrunner/InterceptTaskException.java
index 1b8b59bea7..d27a067ec2 100644
--- a/gui/src/main/java/io/bitsquare/trade/listeners/TakeOfferRequestListener.java
+++ b/gui/src/main/java/io/bitsquare/util/taskrunner/InterceptTaskException.java
@@ -15,10 +15,15 @@
* along with Bitsquare. If not, see .
*/
-package io.bitsquare.trade.listeners;
+package io.bitsquare.util.taskrunner;
-import net.tomp2p.peers.PeerAddress;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-public interface TakeOfferRequestListener {
- void onTakeOfferRequested(String offerId, PeerAddress sender);
+public class InterceptTaskException extends RuntimeException{
+ private static final Logger log = LoggerFactory.getLogger(InterceptTaskException.class);
+
+ public InterceptTaskException(String message) {
+ super(message);
+ }
}
diff --git a/gui/src/main/java/io/bitsquare/util/tasks/SharedModel.java b/gui/src/main/java/io/bitsquare/util/taskrunner/SharedModel.java
similarity index 95%
rename from gui/src/main/java/io/bitsquare/util/tasks/SharedModel.java
rename to gui/src/main/java/io/bitsquare/util/taskrunner/SharedModel.java
index 10ecc1fbdd..fa946cbbdd 100644
--- a/gui/src/main/java/io/bitsquare/util/tasks/SharedModel.java
+++ b/gui/src/main/java/io/bitsquare/util/taskrunner/SharedModel.java
@@ -15,7 +15,7 @@
* along with Bitsquare. If not, see .
*/
-package io.bitsquare.util.tasks;
+package io.bitsquare.util.taskrunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/gui/src/main/java/io/bitsquare/util/taskrunner/Task.java b/gui/src/main/java/io/bitsquare/util/taskrunner/Task.java
new file mode 100644
index 0000000000..ffa13d3cd2
--- /dev/null
+++ b/gui/src/main/java/io/bitsquare/util/taskrunner/Task.java
@@ -0,0 +1,91 @@
+/*
+ * This file is part of Bitsquare.
+ *
+ * Bitsquare is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Bitsquare is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with Bitsquare. If not, see .
+ */
+
+package io.bitsquare.util.taskrunner;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class Task {
+ private static final Logger log = LoggerFactory.getLogger(Task.class);
+ public static Class extends Task> taskToInterceptBeforeRun;
+ public static Class extends Task> taskToInterceptAfterRun;
+
+ private final TaskRunner taskHandler;
+ protected final T model;
+ protected String errorMessage = "An error occurred at: " + getClass().getSimpleName();
+
+ public Task(TaskRunner taskHandler, T model) {
+ this.taskHandler = taskHandler;
+ this.model = model;
+ }
+
+ protected void run() {
+ interceptBeforeRun();
+ try {
+ doRun();
+ } catch (Throwable t) {
+ appendExceptionToErrorMessage(t);
+ failed();
+ }
+ }
+
+
+ abstract protected void doRun();
+
+ protected void applyErrorState() {
+ }
+
+ private void interceptBeforeRun() {
+ if (getClass() == taskToInterceptBeforeRun)
+ throw new InterceptTaskException("Task intercepted before run executed: task = " + getClass().getSimpleName());
+ }
+
+ private void interceptBeforeComplete() {
+ if (getClass() == taskToInterceptAfterRun)
+ throw new InterceptTaskException("Task intercepted before complete called: task = " + getClass().getSimpleName());
+ }
+
+ protected void appendToErrorMessage(String message) {
+ errorMessage += "\n" + message;
+ }
+
+ protected void appendExceptionToErrorMessage(Throwable t) {
+ errorMessage += "\n Exception message: " + t.getMessage();
+ }
+
+ protected void complete() {
+ interceptBeforeComplete();
+ taskHandler.handleComplete();
+ }
+
+ protected void failed(String message) {
+ appendToErrorMessage(message);
+ failed();
+ }
+
+ protected void failed(Throwable t) {
+ appendExceptionToErrorMessage(t);
+ failed();
+ }
+
+ protected void failed() {
+ applyErrorState();
+ taskHandler.handleErrorMessage(errorMessage);
+ }
+
+}
diff --git a/gui/src/main/java/io/bitsquare/util/tasks/TaskRunner.java b/gui/src/main/java/io/bitsquare/util/taskrunner/TaskRunner.java
similarity index 63%
rename from gui/src/main/java/io/bitsquare/util/tasks/TaskRunner.java
rename to gui/src/main/java/io/bitsquare/util/taskrunner/TaskRunner.java
index b7b691dd93..1118acf58b 100644
--- a/gui/src/main/java/io/bitsquare/util/tasks/TaskRunner.java
+++ b/gui/src/main/java/io/bitsquare/util/taskrunner/TaskRunner.java
@@ -15,17 +15,15 @@
* along with Bitsquare. If not, see .
*/
-package io.bitsquare.util.tasks;
+package io.bitsquare.util.taskrunner;
-import io.bitsquare.util.handlers.FaultHandler;
+import io.bitsquare.util.handlers.ErrorMessageHandler;
import io.bitsquare.util.handlers.ResultHandler;
import java.util.Arrays;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
-import org.jetbrains.annotations.NotNull;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,37 +33,36 @@ public class TaskRunner {
private final Queue tasks = new LinkedBlockingQueue<>();
protected final T sharedModel;
private final ResultHandler resultHandler;
- private final FaultHandler faultHandler;
-
+ private final ErrorMessageHandler errorMessageHandler;
private boolean failed = false;
-
-
private boolean isCanceled;
+
private Class extends Task> currentTask;
- public TaskRunner(T sharedModel, ResultHandler resultHandler, FaultHandler faultHandler) {
+ public TaskRunner(T sharedModel, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
this.sharedModel = sharedModel;
this.resultHandler = resultHandler;
- this.faultHandler = faultHandler;
+ this.errorMessageHandler = errorMessageHandler;
+ }
+
+ public void addTasks(Class extends Task>... items) {
+ tasks.addAll(Arrays.asList(items));
}
public void run() {
next();
}
-
protected void next() {
if (!failed && !isCanceled) {
if (tasks.size() > 0) {
try {
currentTask = tasks.poll();
- interceptBeforeRun(currentTask);
log.trace("Run task: " + currentTask.getSimpleName());
currentTask.getDeclaredConstructor(TaskRunner.class, sharedModel.getClass()).newInstance(this, sharedModel).run();
- interceptAfterRun(currentTask);
- } catch (Throwable t) {
- t.printStackTrace();
- faultHandler.handleFault(t.getMessage(), t);
+ } catch (Throwable throwable) {
+ throwable.printStackTrace();
+ handleErrorMessage("Error at taskRunner: " + throwable.getMessage());
}
}
else {
@@ -74,44 +71,19 @@ public class TaskRunner {
}
}
- protected void interceptBeforeRun(Class extends Task> task) {
- if (task == TaskInterception.taskToInterceptBeforeRun)
- throw new RuntimeException("Task intercepted before run executed: task = " + task.getSimpleName());
- }
-
- protected void interceptAfterRun(Class extends Task> task) {
- if (task == TaskInterception.taskToInterceptAfterRun)
- throw new RuntimeException("Task intercepted after run executed: task = " + task.getSimpleName());
- }
-
-
public void cancel() {
isCanceled = true;
}
- public void addTask(Class extends Task> task) {
- tasks.add(task);
- }
-
- public void addTasks(Class extends Task>... items) {
- tasks.addAll(Arrays.asList(items));
- }
-
- public void complete() {
+ void handleComplete() {
log.trace("Task completed: " + currentTask.getSimpleName());
next();
}
- public void handleFault(String message) {
- handleFault(message, new Exception(message));
- }
-
- public void handleFault(String message, @NotNull Throwable throwable) {
+ void handleErrorMessage(String errorMessage) {
log.error("Task failed: " + currentTask.getSimpleName());
- log.debug(throwable.getMessage());
+ log.error("errorMessage: " + errorMessage);
failed = true;
- faultHandler.handleFault(message, throwable);
+ errorMessageHandler.handleErrorMessage(errorMessage);
}
-
-
}
diff --git a/gui/src/main/java/io/bitsquare/util/tasks/Task.java b/gui/src/main/java/io/bitsquare/util/tasks/Task.java
deleted file mode 100644
index 950d5bf099..0000000000
--- a/gui/src/main/java/io/bitsquare/util/tasks/Task.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * This file is part of Bitsquare.
- *
- * Bitsquare is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or (at
- * your option) any later version.
- *
- * Bitsquare is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with Bitsquare. If not, see .
- */
-
-package io.bitsquare.util.tasks;
-
-import org.jetbrains.annotations.NotNull;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Task {
- private static final Logger log = LoggerFactory.getLogger(Task.class);
-
- private final TaskRunner taskHandler;
- protected final T model;
-
- public Task(TaskRunner taskHandler, T model) {
- this.taskHandler = taskHandler;
- this.model = model;
- }
-
- protected void run() {
- }
-
- protected void complete() {
- taskHandler.complete();
- }
-
- protected void failed(String message) {
- taskHandler.handleFault(message);
- }
-
- protected void failed(String message, @NotNull Throwable throwable) {
- log.error(message);
- log.error(throwable.getMessage());
- taskHandler.handleFault(message, throwable);
- }
-
- protected void failed(@NotNull Throwable throwable) {
- taskHandler.handleFault(throwable.getMessage(), throwable);
- }
-}