From b70868f793c9b5491ea628d39887c99e2ad62b83 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 8 Mar 2015 23:16:58 +0100 Subject: [PATCH] Use Executor instead of Platform::runLater --- .../arbitrator/ArbitratorMessageService.java | 2 ++ .../tomp2p/TomP2PArbitratorMessageModule.java | 22 ++++++++++++++- .../TomP2PArbitratorMessageService.java | 17 ++++++------ .../gui/main/trade/offerbook/OfferBook.java | 26 +++++++++--------- ...teOfferBook.java => OfferBookService.java} | 2 +- ...rBook.java => TomP2POfferBookService.java} | 8 +++--- .../offer/tomp2p/TomP2POfferModule.java | 18 ++++++------- .../java/io/bitsquare/trade/TradeManager.java | 12 ++++----- .../bitsquare/trade/TradeMessageService.java | 6 ++++- .../placeoffer/PlaceOfferProtocol.java | 10 +++---- .../tomp2p/TomP2PTradeMessageModule.java | 23 +++++++++++++++- .../tomp2p/TomP2PTradeMessageService.java | 27 ++++++++++--------- .../placeoffer/PlaceOfferProtocolTest.java | 14 +++++----- 13 files changed, 118 insertions(+), 69 deletions(-) rename gui/src/main/java/io/bitsquare/offer/{RemoteOfferBook.java => OfferBookService.java} (97%) rename gui/src/main/java/io/bitsquare/offer/tomp2p/{TomP2POfferBook.java => TomP2POfferBookService.java} (98%) diff --git a/gui/src/main/java/io/bitsquare/arbitrator/ArbitratorMessageService.java b/gui/src/main/java/io/bitsquare/arbitrator/ArbitratorMessageService.java index ed2dad8cc6..e85d03829f 100644 --- a/gui/src/main/java/io/bitsquare/arbitrator/ArbitratorMessageService.java +++ b/gui/src/main/java/io/bitsquare/arbitrator/ArbitratorMessageService.java @@ -21,8 +21,10 @@ package io.bitsquare.arbitrator; import io.bitsquare.arbitrator.listeners.ArbitratorListener; import java.util.Locale; +import java.util.concurrent.Executor; public interface ArbitratorMessageService { + void setExecutor(Executor executor); void addArbitrator(Arbitrator arbitrator); diff --git a/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageModule.java b/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageModule.java index 5a52397085..2982cc7387 100644 --- a/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageModule.java +++ b/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageModule.java @@ -19,10 +19,16 @@ package io.bitsquare.arbitrator.tomp2p; import io.bitsquare.arbitrator.ArbitratorMessageModule; import io.bitsquare.arbitrator.ArbitratorMessageService; +import io.bitsquare.network.tomp2p.TomP2PNode; import com.google.inject.Injector; +import com.google.inject.Provider; import com.google.inject.Singleton; +import javax.inject.Inject; + +import javafx.application.Platform; + import org.springframework.core.env.Environment; public class TomP2PArbitratorMessageModule extends ArbitratorMessageModule { @@ -33,7 +39,7 @@ public class TomP2PArbitratorMessageModule extends ArbitratorMessageModule { @Override protected void doConfigure() { - bind(ArbitratorMessageService.class).to(TomP2PArbitratorMessageService.class).in(Singleton.class); + bind(ArbitratorMessageService.class).toProvider(ArbitratorMessageServiceProvider.class).in(Singleton.class); } @Override @@ -41,3 +47,17 @@ public class TomP2PArbitratorMessageModule extends ArbitratorMessageModule { super.doClose(injector); } } + +class ArbitratorMessageServiceProvider implements Provider { + private final ArbitratorMessageService arbitratorMessageService; + + @Inject + public ArbitratorMessageServiceProvider(TomP2PNode tomP2PNode) { + arbitratorMessageService = new TomP2PArbitratorMessageService(tomP2PNode); + arbitratorMessageService.setExecutor(Platform::runLater); + } + + public ArbitratorMessageService get() { + return arbitratorMessageService; + } +} \ No newline at end of file diff --git a/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageService.java b/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageService.java index a7eb8c7903..e36afd4c89 100644 --- a/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageService.java +++ b/gui/src/main/java/io/bitsquare/arbitrator/tomp2p/TomP2PArbitratorMessageService.java @@ -27,10 +27,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Locale; - -import javax.inject.Inject; - -import javafx.application.Platform; +import java.util.concurrent.Executor; import net.tomp2p.dht.FutureGet; import net.tomp2p.dht.FuturePut; @@ -51,17 +48,21 @@ public class TomP2PArbitratorMessageService implements ArbitratorMessageService private final TomP2PNode tomP2PNode; private final List arbitratorListeners = new ArrayList<>(); + private Executor executor; /////////////////////////////////////////////////////////////////////////////////////////// // Constructor /////////////////////////////////////////////////////////////////////////////////////////// - @Inject public TomP2PArbitratorMessageService(TomP2PNode tomP2PNode) { this.tomP2PNode = tomP2PNode; } + + public void setExecutor(Executor executor) { + this.executor = executor; + } /////////////////////////////////////////////////////////////////////////////////////////// // Arbitrators @@ -76,7 +77,7 @@ public class TomP2PArbitratorMessageService implements ArbitratorMessageService addFuture.addListener(new BaseFutureAdapter() { @Override public void operationComplete(BaseFuture future) throws Exception { - Platform.runLater(() -> arbitratorListeners.stream().forEach(listener -> + executor.execute(() -> arbitratorListeners.stream().forEach(listener -> { try { Object arbitratorDataObject = arbitratorData.object(); @@ -110,7 +111,7 @@ public class TomP2PArbitratorMessageService implements ArbitratorMessageService removeFuture.addListener(new BaseFutureAdapter() { @Override public void operationComplete(BaseFuture future) throws Exception { - Platform.runLater(() -> arbitratorListeners.stream().forEach(listener -> + executor.execute(() -> arbitratorListeners.stream().forEach(listener -> { for (Data arbitratorData : removeFuture.dataMap().values()) { try { @@ -141,7 +142,7 @@ public class TomP2PArbitratorMessageService implements ArbitratorMessageService futureGet.addListener(new BaseFutureAdapter() { @Override public void operationComplete(BaseFuture future) throws Exception { - Platform.runLater(() -> arbitratorListeners.stream().forEach(listener -> + executor.execute(() -> arbitratorListeners.stream().forEach(listener -> { List arbitrators = new ArrayList<>(); for (Data arbitratorData : futureGet.dataMap().values()) { diff --git a/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java index ede8d01773..1db70fc1c0 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java +++ b/gui/src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java @@ -21,7 +21,7 @@ import io.bitsquare.bank.BankAccount; import io.bitsquare.locale.Country; import io.bitsquare.locale.CurrencyUtil; import io.bitsquare.offer.Offer; -import io.bitsquare.offer.RemoteOfferBook; +import io.bitsquare.offer.OfferBookService; import io.bitsquare.user.User; import io.bitsquare.util.Utilities; @@ -50,11 +50,11 @@ public class OfferBook { private static final Logger log = LoggerFactory.getLogger(OfferBook.class); - private final RemoteOfferBook remoteOfferBook; + private final OfferBookService offerBookService; private final User user; private final ObservableList offerBookListItems = FXCollections.observableArrayList(); - private final RemoteOfferBook.Listener remoteOfferBookListener; + private final OfferBookService.Listener remoteOfferBookListener; private final ChangeListener bankAccountChangeListener; private final ChangeListener invalidationListener; private String fiatCode; @@ -68,14 +68,14 @@ public class OfferBook { /////////////////////////////////////////////////////////////////////////////////////////// @Inject - OfferBook(RemoteOfferBook remoteOfferBook, User user) { - this.remoteOfferBook = remoteOfferBook; + OfferBook(OfferBookService offerBookService, User user) { + this.offerBookService = offerBookService; this.user = user; bankAccountChangeListener = (observableValue, oldValue, newValue) -> setBankAccount(newValue); invalidationListener = (ov, oldValue, newValue) -> requestOffers(); - remoteOfferBookListener = new RemoteOfferBook.Listener() { + remoteOfferBookListener = new OfferBookService.Listener() { @Override public void onOfferAdded(Offer offer) { addOfferToOfferBookListItems(offer); @@ -142,15 +142,15 @@ public class OfferBook { private void addListeners() { log.debug("addListeners "); user.currentBankAccountProperty().addListener(bankAccountChangeListener); - remoteOfferBook.addListener(remoteOfferBookListener); - remoteOfferBook.invalidationTimestampProperty().addListener(invalidationListener); + offerBookService.addListener(remoteOfferBookListener); + offerBookService.invalidationTimestampProperty().addListener(invalidationListener); } private void removeListeners() { log.debug("removeListeners "); user.currentBankAccountProperty().removeListener(bankAccountChangeListener); - remoteOfferBook.removeListener(remoteOfferBookListener); - remoteOfferBook.invalidationTimestampProperty().removeListener(invalidationListener); + offerBookService.removeListener(remoteOfferBookListener); + offerBookService.invalidationTimestampProperty().removeListener(invalidationListener); } private void addOfferToOfferBookListItems(Offer offer) { @@ -160,7 +160,7 @@ public class OfferBook { } private void requestOffers() { - remoteOfferBook.getOffers(fiatCode); + offerBookService.getOffers(fiatCode); } @@ -173,11 +173,11 @@ public class OfferBook { addListeners(); setBankAccount(user.getCurrentBankAccount().get()); pollingTimer = Utilities.setInterval(3000, (animationTimer) -> { - remoteOfferBook.requestInvalidationTimeStampFromDHT(fiatCode); + offerBookService.requestInvalidationTimeStampFromDHT(fiatCode); return null; }); - remoteOfferBook.getOffers(fiatCode); + offerBookService.getOffers(fiatCode); } private void stopPolling() { diff --git a/gui/src/main/java/io/bitsquare/offer/RemoteOfferBook.java b/gui/src/main/java/io/bitsquare/offer/OfferBookService.java similarity index 97% rename from gui/src/main/java/io/bitsquare/offer/RemoteOfferBook.java rename to gui/src/main/java/io/bitsquare/offer/OfferBookService.java index 6e0ae1d0f3..8bd6cd310b 100644 --- a/gui/src/main/java/io/bitsquare/offer/RemoteOfferBook.java +++ b/gui/src/main/java/io/bitsquare/offer/OfferBookService.java @@ -25,7 +25,7 @@ import java.util.concurrent.Executor; import javafx.beans.property.LongProperty; -public interface RemoteOfferBook { +public interface OfferBookService { void setExecutor(Executor executor); diff --git a/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferBook.java b/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferBookService.java similarity index 98% rename from gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferBook.java rename to gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferBookService.java index 07342c8b00..ce2104493c 100644 --- a/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferBook.java +++ b/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferBookService.java @@ -19,7 +19,7 @@ package io.bitsquare.offer.tomp2p; import io.bitsquare.network.tomp2p.TomP2PNode; import io.bitsquare.offer.Offer; -import io.bitsquare.offer.RemoteOfferBook; +import io.bitsquare.offer.OfferBookService; import io.bitsquare.util.handlers.FaultHandler; import io.bitsquare.util.handlers.ResultHandler; @@ -46,9 +46,9 @@ import net.tomp2p.storage.Data; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TomP2POfferBook implements RemoteOfferBook { +public class TomP2POfferBookService implements OfferBookService { - private static final Logger log = LoggerFactory.getLogger(TomP2POfferBook.class); + private static final Logger log = LoggerFactory.getLogger(TomP2POfferBookService.class); private final List offerRepositoryListeners = new ArrayList<>(); private final LongProperty invalidationTimestamp = new SimpleLongProperty(0); @@ -56,7 +56,7 @@ public class TomP2POfferBook implements RemoteOfferBook { private final TomP2PNode tomP2PNode; private Executor executor; - public TomP2POfferBook(TomP2PNode tomP2PNode) { + public TomP2POfferBookService(TomP2PNode tomP2PNode) { this.tomP2PNode = tomP2PNode; } diff --git a/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java b/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java index 9bf44a1171..d3b0b45dba 100644 --- a/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java +++ b/gui/src/main/java/io/bitsquare/offer/tomp2p/TomP2POfferModule.java @@ -19,7 +19,7 @@ package io.bitsquare.offer.tomp2p; import io.bitsquare.network.tomp2p.TomP2PNode; import io.bitsquare.offer.OfferModule; -import io.bitsquare.offer.RemoteOfferBook; +import io.bitsquare.offer.OfferBookService; import com.google.inject.Provider; @@ -37,20 +37,20 @@ public class TomP2POfferModule extends OfferModule { @Override protected void configure() { - bind(RemoteOfferBook.class).toProvider(RemoteOfferBookProvider.class).asEagerSingleton(); + bind(OfferBookService.class).toProvider(OfferBookServiceProvider.class).asEagerSingleton(); } } -class RemoteOfferBookProvider implements Provider { - private final TomP2POfferBook remoteOfferBook; +class OfferBookServiceProvider implements Provider { + private final OfferBookService offerBookService; @Inject - public RemoteOfferBookProvider(TomP2PNode tomP2PNode) { - remoteOfferBook = new TomP2POfferBook(tomP2PNode); - remoteOfferBook.setExecutor(Platform::runLater); + public OfferBookServiceProvider(TomP2PNode tomP2PNode) { + offerBookService = new TomP2POfferBookService(tomP2PNode); + offerBookService.setExecutor(Platform::runLater); } - public RemoteOfferBook get() { - return remoteOfferBook; + public OfferBookService get() { + return offerBookService; } } \ No newline at end of file diff --git a/gui/src/main/java/io/bitsquare/trade/TradeManager.java b/gui/src/main/java/io/bitsquare/trade/TradeManager.java index 49854a50e4..c094e516a3 100644 --- a/gui/src/main/java/io/bitsquare/trade/TradeManager.java +++ b/gui/src/main/java/io/bitsquare/trade/TradeManager.java @@ -26,7 +26,7 @@ import io.bitsquare.network.Message; import io.bitsquare.network.Peer; import io.bitsquare.offer.Direction; import io.bitsquare.offer.Offer; -import io.bitsquare.offer.RemoteOfferBook; +import io.bitsquare.offer.OfferBookService; import io.bitsquare.persistence.Persistence; import io.bitsquare.trade.handlers.TransactionResultHandler; import io.bitsquare.trade.listeners.OutgoingMessageListener; @@ -83,7 +83,7 @@ public class TradeManager { private final BlockChainService blockChainService; private final WalletService walletService; private final SignatureService signatureService; - private final RemoteOfferBook remoteOfferBook; + private final OfferBookService offerBookService; //TODO store TakerAsSellerProtocol in trade private final Map takerAsSellerProtocolMap = new HashMap<>(); @@ -106,7 +106,7 @@ public class TradeManager { public TradeManager(User user, AccountSettings accountSettings, Persistence persistence, TradeMessageService tradeMessageService, BlockChainService blockChainService, WalletService walletService, SignatureService signatureService, - RemoteOfferBook remoteOfferBook) { + OfferBookService offerBookService) { this.user = user; this.accountSettings = accountSettings; this.persistence = persistence; @@ -114,7 +114,7 @@ public class TradeManager { this.blockChainService = blockChainService; this.walletService = walletService; this.signatureService = signatureService; - this.remoteOfferBook = remoteOfferBook; + this.offerBookService = offerBookService; Object offersObject = persistence.read(this, "offers"); if (offersObject instanceof Map) { @@ -175,7 +175,7 @@ public class TradeManager { PlaceOfferProtocol placeOfferProtocol = new PlaceOfferProtocol( offer, walletService, - remoteOfferBook, + offerBookService, (transaction) -> { saveOffer(offer); resultHandler.handleResult(transaction); @@ -192,7 +192,7 @@ public class TradeManager { } public void requestRemoveOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { - remoteOfferBook.removeOffer(offer, + offerBookService.removeOffer(offer, () -> { if (offers.containsKey(offer.getId())) { offers.remove(offer.getId()); diff --git a/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java b/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java index 5668472d35..218103b4b2 100644 --- a/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java +++ b/gui/src/main/java/io/bitsquare/trade/TradeMessageService.java @@ -19,14 +19,18 @@ package io.bitsquare.trade; 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.IncomingMessageListener; import io.bitsquare.trade.listeners.OutgoingMessageListener; -import io.bitsquare.network.Peer; import java.security.PublicKey; +import java.util.concurrent.Executor; + public interface TradeMessageService extends MessageBroker { + + void setExecutor(Executor executor); void sendMessage(Peer peer, Message message, OutgoingMessageListener listener); 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 fc10bd5204..270ace95a5 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 @@ -19,7 +19,7 @@ package io.bitsquare.trade.protocol.placeoffer; import io.bitsquare.btc.WalletService; import io.bitsquare.offer.Offer; -import io.bitsquare.offer.RemoteOfferBook; +import io.bitsquare.offer.OfferBookService; import io.bitsquare.trade.handlers.TransactionResultHandler; import io.bitsquare.util.handlers.FaultHandler; @@ -43,16 +43,16 @@ public class PlaceOfferProtocol { private final WalletService walletService; private final TransactionResultHandler resultHandler; private final FaultHandler faultHandler; - private final RemoteOfferBook remoteOfferBook; + private final OfferBookService offerBookService; private int repeatAddOfferCallCounter = 0; - public PlaceOfferProtocol(Offer offer, WalletService walletService, RemoteOfferBook remoteOfferBook, TransactionResultHandler resultHandler, + public PlaceOfferProtocol(Offer offer, WalletService walletService, OfferBookService offerBookService, TransactionResultHandler resultHandler, FaultHandler faultHandler) { this.offer = offer; this.walletService = walletService; this.resultHandler = resultHandler; this.faultHandler = faultHandler; - this.remoteOfferBook = remoteOfferBook; + this.offerBookService = offerBookService; } public void placeOffer() { @@ -129,7 +129,7 @@ public class PlaceOfferProtocol { // need to write data before storage, otherwise hash is different when removing offer! offer.setOfferFeePaymentTxID(transaction.getHashAsString()); - remoteOfferBook.addOffer(offer, + offerBookService.addOffer(offer, () -> { resultHandler.handleResult(transaction); }, diff --git a/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageModule.java b/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageModule.java index dd044c4d4f..4e3cd1a231 100644 --- a/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageModule.java +++ b/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageModule.java @@ -17,12 +17,19 @@ package io.bitsquare.trade.tomp2p; +import io.bitsquare.network.tomp2p.TomP2PNode; import io.bitsquare.trade.TradeMessageModule; import io.bitsquare.trade.TradeMessageService; +import io.bitsquare.user.User; import com.google.inject.Injector; +import com.google.inject.Provider; import com.google.inject.Singleton; +import javax.inject.Inject; + +import javafx.application.Platform; + import org.springframework.core.env.Environment; public class TomP2PTradeMessageModule extends TradeMessageModule { @@ -33,7 +40,7 @@ public class TomP2PTradeMessageModule extends TradeMessageModule { @Override protected void doConfigure() { - bind(TradeMessageService.class).to(TomP2PTradeMessageService.class).in(Singleton.class); + bind(TradeMessageService.class).toProvider(TomP2PTradeMessageServiceProvider.class).in(Singleton.class); } @Override @@ -41,3 +48,17 @@ public class TomP2PTradeMessageModule extends TradeMessageModule { super.doClose(injector); } } + +class TomP2PTradeMessageServiceProvider implements Provider { + private final TradeMessageService tradeMessageService; + + @Inject + public TomP2PTradeMessageServiceProvider(User user, TomP2PNode tomP2PNode) { + tradeMessageService = new TomP2PTradeMessageService(user, tomP2PNode); + tradeMessageService.setExecutor(Platform::runLater); + } + + public TradeMessageService get() { + return tradeMessageService; + } +} \ No newline at end of file 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 abefb1250e..3937886c76 100644 --- a/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageService.java +++ b/gui/src/main/java/io/bitsquare/trade/tomp2p/TomP2PTradeMessageService.java @@ -31,10 +31,7 @@ import java.security.PublicKey; import java.util.ArrayList; import java.util.List; - -import javax.inject.Inject; - -import javafx.application.Platform; +import java.util.concurrent.Executor; import net.tomp2p.dht.FutureGet; import net.tomp2p.futures.BaseFuture; @@ -54,26 +51,30 @@ import org.slf4j.LoggerFactory; * The TomP2P library codebase shall not be used outside that service. * That way we limit the dependency of the TomP2P library only to that class (and it's sub components). *

- * TODO: improve callbacks that Platform.runLater is not necessary. We call usually that methods form teh UI thread. + * TODO: improve callbacks that executor.execute is not necessary. We call usually that methods form teh UI thread. */ public class TomP2PTradeMessageService implements TradeMessageService { private static final Logger log = LoggerFactory.getLogger(TomP2PTradeMessageService.class); private final TomP2PNode tomP2PNode; private final User user; - private final List incomingMessageListeners = new ArrayList<>(); + private Executor executor; /////////////////////////////////////////////////////////////////////////////////////////// // Constructor /////////////////////////////////////////////////////////////////////////////////////////// - @Inject public TomP2PTradeMessageService(User user, TomP2PNode tomP2PNode) { this.user = user; this.tomP2PNode = tomP2PNode; } + + + public void setExecutor(Executor executor) { + this.executor = executor; + } /////////////////////////////////////////////////////////////////////////////////////////// @@ -89,11 +90,11 @@ public class TomP2PTradeMessageService implements TradeMessageService { public void operationComplete(BaseFuture baseFuture) throws Exception { if (baseFuture.isSuccess() && futureGet.data() != null) { final Peer peer = (Peer) futureGet.data().object(); - Platform.runLater(() -> listener.onResult(peer)); + executor.execute(() -> listener.onResult(peer)); } else { log.error("getPeerAddress failed. failedReason = " + baseFuture.failedReason()); - Platform.runLater(listener::onFailed); + executor.execute(listener::onFailed); } } }); @@ -113,17 +114,17 @@ public class TomP2PTradeMessageService implements TradeMessageService { @Override public void operationComplete(BaseFuture future) throws Exception { if (future.isSuccess()) { - Platform.runLater(listener::onResult); + executor.execute(listener::onResult); } else { log.error("sendMessage failed with reason " + futureDirect.failedReason()); - Platform.runLater(listener::onFailed); + executor.execute(listener::onFailed); } } @Override public void exceptionCaught(Throwable t) throws Exception { - Platform.runLater(listener::onFailed); + executor.execute(listener::onFailed); } }); } @@ -149,7 +150,7 @@ public class TomP2PTradeMessageService implements TradeMessageService { @Override public void handleMessage(Object message, Peer sender) { if (message instanceof Message) { - Platform.runLater(() -> incomingMessageListeners.stream().forEach(e -> + executor.execute(() -> incomingMessageListeners.stream().forEach(e -> e.onMessage((Message) message, sender))); } } diff --git a/gui/src/test/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocolTest.java b/gui/src/test/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocolTest.java index 36b028bc65..d735f9d996 100644 --- a/gui/src/test/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocolTest.java +++ b/gui/src/test/java/io/bitsquare/trade/protocol/placeoffer/PlaceOfferProtocolTest.java @@ -31,8 +31,8 @@ import io.bitsquare.network.tomp2p.BootstrappedPeerBuilder; import io.bitsquare.network.tomp2p.TomP2PNode; import io.bitsquare.offer.Direction; import io.bitsquare.offer.Offer; -import io.bitsquare.offer.RemoteOfferBook; -import io.bitsquare.offer.tomp2p.TomP2POfferBook; +import io.bitsquare.offer.OfferBookService; +import io.bitsquare.offer.tomp2p.TomP2POfferBookService; import io.bitsquare.persistence.Persistence; import io.bitsquare.trade.TradeMessageService; import io.bitsquare.trade.handlers.TransactionResultHandler; @@ -82,7 +82,7 @@ public class PlaceOfferProtocolTest { private WalletService walletService; private TradeMessageService tradeMessageService; - private RemoteOfferBook remoteOfferBook; + private OfferBookService offerBookService; private final File dir = new File("./temp"); private final static String OFFER_ID = "offerID"; private Address address; @@ -115,8 +115,8 @@ public class PlaceOfferProtocolTest { () -> { log.trace("message completed"); - remoteOfferBook = new TomP2POfferBook(tomP2PNode); - remoteOfferBook.setExecutor(Threading.SAME_THREAD); + offerBookService = new TomP2POfferBookService(tomP2PNode); + offerBookService.setExecutor(Threading.SAME_THREAD); } ); bootstrappedPeerBuilder.start(); @@ -222,7 +222,7 @@ public class PlaceOfferProtocolTest { CountDownLatch countDownLatch = new CountDownLatch(2); try { Offer offer = getOffer(); - remoteOfferBook.addListener(new RemoteOfferBook.Listener() { + offerBookService.addListener(new OfferBookService.Listener() { @Override public void onOfferAdded(Offer offer1) { assertEquals("Offer matching", offer.getId(), offer1.getId()); @@ -296,7 +296,7 @@ public class PlaceOfferProtocolTest { InterruptedException { return new PlaceOfferProtocol(offer, walletService, - remoteOfferBook, + offerBookService, resultHandler, faultHandler); }