diff --git a/src/main/java/io/bitsquare/NotificationTest.java b/src/main/java/io/bitsquare/NotificationTest.java deleted file mode 100644 index a18374c993..0000000000 --- a/src/main/java/io/bitsquare/NotificationTest.java +++ /dev/null @@ -1,143 +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; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import javafx.animation.KeyFrame; -import javafx.animation.KeyValue; -import javafx.animation.Timeline; -import javafx.application.Application; -import javafx.application.Platform; -import javafx.geometry.Insets; -import javafx.scene.*; -import javafx.scene.control.*; -import javafx.scene.image.*; -import javafx.scene.layout.*; -import javafx.scene.paint.*; -import javafx.stage.Screen; -import javafx.stage.Stage; -import javafx.stage.StageStyle; -import javafx.util.Duration; - -import org.controlsfx.control.PopOver; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class NotificationTest extends Application { - private static final Logger log = LoggerFactory.getLogger(NotificationTest.class); - private Scene notificationScene; - private Stage notificationStage; - - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) { - Pane view = new StackPane(); - Button b = new Button("open"); - b.setOnAction(e -> addItem()); - view.getChildren().addAll(b); - Scene scene = new Scene(view, 1000, 750); - scene.getStylesheets().setAll(getClass().getResource("/io/bitsquare/gui/bitsquare.css").toExternalForm(), - getClass().getResource("/io/bitsquare/gui/images.css").toExternalForm()); - - primaryStage.setScene(scene); - primaryStage.setMinWidth(750); - primaryStage.setMinHeight(500); - primaryStage.show(); - initNotification(); - } - - private List popOvers = new ArrayList<>(); - - private HBox getNotificationItem(String headline, String info) { - Label headlineLabel = new Label(headline); - Label infoLabel = new Label(info); - ImageView icon = new ImageView(); - icon.setId("image-info"); - - VBox vBox = new VBox(); - vBox.setPadding(new Insets(10, 10, 10, 10)); - vBox.setSpacing(10); - vBox.getChildren().addAll(headlineLabel, infoLabel); - HBox hBox = new HBox(); - hBox.setPadding(new Insets(10, 10, 10, 10)); - hBox.setSpacing(10); - hBox.getChildren().addAll(icon, vBox); - return hBox; - } - - private void addItem() { - HBox hBox = getNotificationItem("Headline " + new Random().nextInt(), "test " + new Random().nextInt()); - PopOver popOver = new PopOver(hBox); - popOver.setDetachable(false); - popOver.setArrowSize(0); - popOver.setPrefSize(200, 100); - popOver.show(notificationScene.getWindow(), Screen.getPrimary().getBounds().getWidth() - 200, 0); - popOvers.add(popOver); - - // Add a timeline for popup fade out - KeyValue fadeOutBegin = new KeyValue(popOver.opacityProperty(), 1.0); - KeyValue fadeOutEnd = new KeyValue(popOver.opacityProperty(), 0.0); - - KeyFrame kfBegin = new KeyFrame(Duration.ZERO, fadeOutBegin); - KeyFrame kfEnd = new KeyFrame(Duration.millis(5000), fadeOutEnd); - - Timeline timeline = new Timeline(kfBegin, kfEnd); - timeline.setDelay(Duration.millis(500)); - timeline.setOnFinished(actionEvent -> Platform.runLater(() -> { - popOvers.remove(popOver); - })); - - if (notificationStage.isShowing()) { - notificationStage.toFront(); - } - else { - notificationStage.show(); - } - - popOver.show(notificationStage); - timeline.play(); - } - - private void initNotification() { - Region region = new Region(); - region.setMouseTransparent(true); - region.setStyle("-fx-background-color:transparent;"); - region.setPrefSize(1, 1); - - notificationScene = new Scene(region); - notificationScene.setFill(Color.TRANSPARENT); - notificationScene.getStylesheets().setAll(getClass().getResource("/io/bitsquare/gui/bitsquare.css") - .toExternalForm(), - getClass().getResource("/io/bitsquare/gui/images.css").toExternalForm()); - - notificationStage = new Stage(); - notificationStage.initStyle(StageStyle.TRANSPARENT); - notificationStage.setScene(notificationScene); - } - - @Override - public void stop() throws Exception { - } -} diff --git a/src/main/java/io/bitsquare/SeedNode.java b/src/main/java/io/bitsquare/SeedNode.java index 3d4b67ca24..ce5ec76ba3 100644 --- a/src/main/java/io/bitsquare/SeedNode.java +++ b/src/main/java/io/bitsquare/SeedNode.java @@ -105,8 +105,8 @@ public class SeedNode extends Thread { } } - public Peer startupPeer() { - Peer peer = null; + public void startupPeer() { + Peer peer; try { peer = new PeerBuilder( Number160.createHash(seedNodeAddress.getId())).ports(seedNodeAddress.getPort()).start(); @@ -139,7 +139,6 @@ public class SeedNode extends Thread { } catch (IOException e) { e.printStackTrace(); } - return peer; } private void ping(Peer peer) { diff --git a/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java b/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java index 1687d9445c..ca4ef6b10c 100644 --- a/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java +++ b/src/main/java/io/bitsquare/btc/AddressBasedCoinSelector.java @@ -33,7 +33,6 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.HashSet; import java.util.List; @@ -45,7 +44,7 @@ import org.slf4j.LoggerFactory; * possible. This means that the transaction is the most likely to get confirmed. Note that this means we may end up * "spending" more priority than would be required to get the transaction we are creating confirmed. */ -public class AddressBasedCoinSelector extends DefaultCoinSelector { +class AddressBasedCoinSelector extends DefaultCoinSelector { private static final Logger log = LoggerFactory.getLogger(AddressBasedCoinSelector.class); private final NetworkParameters params; private final AddressEntry addressEntry; @@ -63,31 +62,28 @@ public class AddressBasedCoinSelector extends DefaultCoinSelector { @VisibleForTesting static void sortOutputs(ArrayList outputs) { - Collections.sort(outputs, new Comparator() { - @Override - public int compare(TransactionOutput a, TransactionOutput b) { - int depth1 = 0; - int depth2 = 0; - TransactionConfidence conf1 = a.getParentTransaction().getConfidence(); - TransactionConfidence conf2 = b.getParentTransaction().getConfidence(); - if (conf1.getConfidenceType() == TransactionConfidence.ConfidenceType.BUILDING) - depth1 = conf1.getDepthInBlocks(); - if (conf2.getConfidenceType() == TransactionConfidence.ConfidenceType.BUILDING) - depth2 = conf2.getDepthInBlocks(); - Coin aValue = a.getValue(); - Coin bValue = b.getValue(); - BigInteger aCoinDepth = BigInteger.valueOf(aValue.value).multiply(BigInteger.valueOf(depth1)); - BigInteger bCoinDepth = BigInteger.valueOf(bValue.value).multiply(BigInteger.valueOf(depth2)); - int c1 = bCoinDepth.compareTo(aCoinDepth); - if (c1 != 0) return c1; - // The "coin*days" destroyed are equal, sort by value alone to get the lowest transaction size. - int c2 = bValue.compareTo(aValue); - if (c2 != 0) return c2; - // They are entirely equivalent (possibly pending) so sort by hash to ensure a total ordering. - BigInteger aHash = a.getParentTransaction().getHash().toBigInteger(); - BigInteger bHash = b.getParentTransaction().getHash().toBigInteger(); - return aHash.compareTo(bHash); - } + Collections.sort(outputs, (a, b) -> { + int depth1 = 0; + int depth2 = 0; + TransactionConfidence conf1 = a.getParentTransaction().getConfidence(); + TransactionConfidence conf2 = b.getParentTransaction().getConfidence(); + if (conf1.getConfidenceType() == TransactionConfidence.ConfidenceType.BUILDING) + depth1 = conf1.getDepthInBlocks(); + if (conf2.getConfidenceType() == TransactionConfidence.ConfidenceType.BUILDING) + depth2 = conf2.getDepthInBlocks(); + Coin aValue = a.getValue(); + Coin bValue = b.getValue(); + BigInteger aCoinDepth = BigInteger.valueOf(aValue.value).multiply(BigInteger.valueOf(depth1)); + BigInteger bCoinDepth = BigInteger.valueOf(bValue.value).multiply(BigInteger.valueOf(depth2)); + int c1 = bCoinDepth.compareTo(aCoinDepth); + if (c1 != 0) return c1; + // The "coin*days" destroyed are equal, sort by value alone to get the lowest transaction size. + int c2 = bValue.compareTo(aValue); + if (c2 != 0) return c2; + // They are entirely equivalent (possibly pending) so sort by hash to ensure a total ordering. + BigInteger aHash = a.getParentTransaction().getHash().toBigInteger(); + BigInteger bHash = b.getParentTransaction().getHash().toBigInteger(); + return aHash.compareTo(bHash); }); } @@ -121,7 +117,7 @@ public class AddressBasedCoinSelector extends DefaultCoinSelector { } } - protected boolean matchesRequiredAddress(TransactionOutput transactionOutput) { + private boolean matchesRequiredAddress(TransactionOutput transactionOutput) { if (transactionOutput.getScriptPubKey().isSentToAddress() || transactionOutput.getScriptPubKey().isSentToP2SH ()) { Address addressOutput = transactionOutput.getScriptPubKey().getToAddress(params); diff --git a/src/main/java/io/bitsquare/btc/WalletFacade.java b/src/main/java/io/bitsquare/btc/WalletFacade.java index 0c48c965a0..04b3d2aa0d 100644 --- a/src/main/java/io/bitsquare/btc/WalletFacade.java +++ b/src/main/java/io/bitsquare/btc/WalletFacade.java @@ -383,10 +383,9 @@ public class WalletFacade { addressConfidenceListener.onTransactionConfidenceChanged(transactionConfidence); } - for (TxConfidenceListener txConfidenceListener : txConfidenceListeners) { - if (tx.getHashAsString().equals(txConfidenceListener.getTxID())) - txConfidenceListener.onTransactionConfidenceChanged(tx.getConfidence()); - } + txConfidenceListeners.stream().filter(txConfidenceListener -> tx.getHashAsString().equals + (txConfidenceListener.getTxID())).forEach(txConfidenceListener -> txConfidenceListener + .onTransactionConfidenceChanged(tx.getConfidence())); } private TransactionConfidence getTransactionConfidence(Transaction tx, Address address) { @@ -571,8 +570,7 @@ public class WalletFacade { return tx; } - public void broadcastCreateOfferFeeTx(Transaction tx, FutureCallback callback) throws - InsufficientMoneyException { + public void broadcastCreateOfferFeeTx(Transaction tx, FutureCallback callback) { log.trace("broadcast tx"); ListenableFuture future = walletAppKit.peerGroup().broadcastTransaction(tx); Futures.addCallback(future, callback); diff --git a/src/main/java/io/bitsquare/di/BitSquareModule.java b/src/main/java/io/bitsquare/di/BitSquareModule.java index c6649e11ca..dd46df3d02 100644 --- a/src/main/java/io/bitsquare/di/BitSquareModule.java +++ b/src/main/java/io/bitsquare/di/BitSquareModule.java @@ -88,8 +88,8 @@ public class BitSquareModule extends AbstractModule { bind(NetworkParameters.class).toProvider(NetworkParametersProvider.class).asEagerSingleton(); // we will probably later disc storage instead of memory storage for TomP2P - // bind(Boolean.class).annotatedWith(Names.named("useDiskStorage")).toInstance(new Boolean(true)); - bind(Boolean.class).annotatedWith(Names.named("useDiskStorage")).toInstance(new Boolean(false)); + // bind(Boolean.class).annotatedWith(Names.named("useDiskStorage")).toInstance(true); + bind(Boolean.class).annotatedWith(Names.named("useDiskStorage")).toInstance(false); // might be better in a config file? bind(SeedNodeAddress.StaticSeedNodeAddresses.class).annotatedWith( diff --git a/src/main/java/io/bitsquare/gui/Navigation.java b/src/main/java/io/bitsquare/gui/Navigation.java index 2e5592fb5d..57fe029f38 100644 --- a/src/main/java/io/bitsquare/gui/Navigation.java +++ b/src/main/java/io/bitsquare/gui/Navigation.java @@ -34,8 +34,8 @@ public class Navigation { // New listeners can be added during iteration so we use CopyOnWriteArrayList to prevent invalid array // modification - private List listeners = new CopyOnWriteArrayList<>(); - private Persistence persistence; + private final List listeners = new CopyOnWriteArrayList<>(); + private final Persistence persistence; private Item[] currentItems; // Used for returning to the last important view diff --git a/src/main/java/io/bitsquare/gui/OverlayManager.java b/src/main/java/io/bitsquare/gui/OverlayManager.java index 36037b44c7..3a3424d5b1 100644 --- a/src/main/java/io/bitsquare/gui/OverlayManager.java +++ b/src/main/java/io/bitsquare/gui/OverlayManager.java @@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory; public class OverlayManager { private static final Logger log = LoggerFactory.getLogger(OverlayManager.class); - private List listeners = new ArrayList<>(); + private final List listeners = new ArrayList<>(); /////////////////////////////////////////////////////////////////////////////////////////// @@ -40,11 +40,11 @@ public class OverlayManager { } public void blurContent() { - listeners.stream().forEach((e) -> e.onBlurContentRequested()); + listeners.stream().forEach(OverlayListener::onBlurContentRequested); } public void removeBlurContent() { - listeners.stream().forEach((e) -> e.onRemoveBlurContentRequested()); + listeners.stream().forEach(OverlayListener::onRemoveBlurContentRequested); } public void addListener(OverlayListener listener) { diff --git a/src/main/java/io/bitsquare/gui/ViewCB.java b/src/main/java/io/bitsquare/gui/ViewCB.java index 050b417027..2e34368065 100644 --- a/src/main/java/io/bitsquare/gui/ViewCB.java +++ b/src/main/java/io/bitsquare/gui/ViewCB.java @@ -27,11 +27,11 @@ public class ViewCB implements Initializable { @FXML protected Parent root; - public ViewCB(T presentationModel) { + protected ViewCB(T presentationModel) { this.presentationModel = presentationModel; } - public ViewCB() { + protected ViewCB() { } /** diff --git a/src/main/java/io/bitsquare/gui/components/AddressTextField.java b/src/main/java/io/bitsquare/gui/components/AddressTextField.java index 87dfb9b0d9..c3c624edc9 100644 --- a/src/main/java/io/bitsquare/gui/components/AddressTextField.java +++ b/src/main/java/io/bitsquare/gui/components/AddressTextField.java @@ -58,7 +58,7 @@ public class AddressTextField extends AnchorPane { private final StringProperty address = new SimpleStringProperty(); private final StringProperty paymentLabel = new SimpleStringProperty(); - public final ObjectProperty amountAsCoin = new SimpleObjectProperty<>(); + private final ObjectProperty amountAsCoin = new SimpleObjectProperty<>(); private OverlayManager overlayManager; @@ -81,9 +81,7 @@ public class AddressTextField extends AnchorPane { } }); addressLabel.focusTraversableProperty().set(focusTraversableProperty().get()); - focusedProperty().addListener((ov, oldValue, newValue) -> { - addressLabel.requestFocus(); - }); + focusedProperty().addListener((ov, oldValue, newValue) -> addressLabel.requestFocus()); Label copyIcon = new Label(); copyIcon.setLayoutY(3); diff --git a/src/main/java/io/bitsquare/gui/components/HSpacer.java b/src/main/java/io/bitsquare/gui/components/HSpacer.java deleted file mode 100644 index 61ff46e44a..0000000000 --- a/src/main/java/io/bitsquare/gui/components/HSpacer.java +++ /dev/null @@ -1,38 +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.gui.components; - - -import javafx.scene.layout.*; - -// TODO remove and use margin or padding instead -@Deprecated -public class HSpacer extends Pane { - public HSpacer() { - } - - public HSpacer(double width) { - setPrefWidth(width); - } - - @Override - protected double computePrefWidth(double width) { - return getPrefWidth(); - } -} - diff --git a/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java b/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java index e8dbdf5de7..e2f2f732a3 100644 --- a/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java +++ b/src/main/java/io/bitsquare/gui/components/NetworkSyncPane.java @@ -58,3 +58,15 @@ public class NetworkSyncPane extends HBox { fade.setOnFinished(e -> getChildren().clear()); } } + +class HSpacer extends Pane { + public HSpacer(double width) { + setPrefWidth(width); + } + + @Override + protected double computePrefWidth(double width) { + return getPrefWidth(); + } +} + diff --git a/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java b/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java index a51ee7b5b7..1cb52023e8 100644 --- a/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java +++ b/src/main/java/io/bitsquare/gui/components/TextFieldWithCopyIcon.java @@ -60,9 +60,7 @@ public class TextFieldWithCopyIcon extends AnchorPane { AnchorPane.setRightAnchor(txIdLabel, 30.0); AnchorPane.setLeftAnchor(txIdLabel, 0.0); txIdLabel.focusTraversableProperty().set(focusTraversableProperty().get()); - focusedProperty().addListener((ov, oldValue, newValue) -> { - txIdLabel.requestFocus(); - }); + focusedProperty().addListener((ov, oldValue, newValue) -> txIdLabel.requestFocus()); getChildren().addAll(txIdLabel, copyIcon); } diff --git a/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java b/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java index 97ae34eddf..7f7ada12bd 100644 --- a/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java +++ b/src/main/java/io/bitsquare/gui/components/TitledGroupBg.java @@ -30,7 +30,7 @@ public class TitledGroupBg extends Pane { private static final Logger log = LoggerFactory.getLogger(TitledGroupBg.class); private final Label label; - private StringProperty text = new SimpleStringProperty(); + private final StringProperty text = new SimpleStringProperty(); /////////////////////////////////////////////////////////////////////////////////////////// // Constructor diff --git a/src/main/java/io/bitsquare/gui/components/TitledSeparator.java b/src/main/java/io/bitsquare/gui/components/TitledSeparator.java index 3e2764c659..d3de818b0e 100644 --- a/src/main/java/io/bitsquare/gui/components/TitledSeparator.java +++ b/src/main/java/io/bitsquare/gui/components/TitledSeparator.java @@ -30,8 +30,7 @@ public class TitledSeparator extends Pane { private static final Logger log = LoggerFactory.getLogger(TitledSeparator.class); private final Label label; - private final Separator separator; - private StringProperty text = new SimpleStringProperty(); + private final StringProperty text = new SimpleStringProperty(); /////////////////////////////////////////////////////////////////////////////////////////// // Constructor @@ -41,7 +40,7 @@ public class TitledSeparator extends Pane { GridPane.setMargin(this, new Insets(-10, -10, -10, -10)); GridPane.setColumnSpan(this, 2); - separator = new Separator(); + Separator separator = new Separator(); separator.prefWidthProperty().bind(widthProperty()); separator.setLayoutX(0); separator.setLayoutY(6); diff --git a/src/main/java/io/bitsquare/gui/components/TxIdTextField.java b/src/main/java/io/bitsquare/gui/components/TxIdTextField.java index 54ca225a7c..d2c43bc92c 100644 --- a/src/main/java/io/bitsquare/gui/components/TxIdTextField.java +++ b/src/main/java/io/bitsquare/gui/components/TxIdTextField.java @@ -79,9 +79,7 @@ public class TxIdTextField extends AnchorPane { AnchorPane.setRightAnchor(txIdLabel, 55.0); AnchorPane.setLeftAnchor(txIdLabel, 0.0); txIdLabel.focusTraversableProperty().set(focusTraversableProperty().get()); - focusedProperty().addListener((ov, oldValue, newValue) -> { - txIdLabel.requestFocus(); - }); + focusedProperty().addListener((ov, oldValue, newValue) -> txIdLabel.requestFocus()); getChildren().addAll(txIdLabel, copyIcon, progressIndicator); } diff --git a/src/main/java/io/bitsquare/gui/components/VSpacer.java b/src/main/java/io/bitsquare/gui/components/VSpacer.java deleted file mode 100644 index cfb12d8d63..0000000000 --- a/src/main/java/io/bitsquare/gui/components/VSpacer.java +++ /dev/null @@ -1,38 +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.gui.components; - - -import javafx.scene.layout.*; - -// TODO remove and use margin or padding instead -@Deprecated -public class VSpacer extends Pane { - public VSpacer() { - } - - public VSpacer(double height) { - setPrefHeight(height); - } - - @Override - protected double computePrefHeight(double width) { - return getPrefHeight(); - } -} - diff --git a/src/main/java/io/bitsquare/gui/components/ValidatedTextField.java b/src/main/java/io/bitsquare/gui/components/ValidatedTextField.java deleted file mode 100644 index 81dac71137..0000000000 --- a/src/main/java/io/bitsquare/gui/components/ValidatedTextField.java +++ /dev/null @@ -1,196 +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.gui.components; - -import javafx.beans.binding.BooleanBinding; -import javafx.beans.property.BooleanProperty; -import javafx.beans.property.IntegerProperty; -import javafx.beans.property.ReadOnlyBooleanProperty; -import javafx.beans.property.ReadOnlyIntegerProperty; -import javafx.beans.property.ReadOnlyStringProperty; -import javafx.beans.property.SimpleBooleanProperty; -import javafx.beans.property.SimpleIntegerProperty; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; -import javafx.scene.control.*; -import javafx.scene.effect.*; -import javafx.scene.paint.*; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

- * TextField with regex-based real-time input validation. - * JavaFX 2 and FXML compatible.

- *

- * FXML code example:

- * {@code } - *
- *

- */ - -//TODO replace with ValidatingTextField -@Deprecated -public class ValidatedTextField extends TextField { - private static final Logger log = LoggerFactory.getLogger(ValidatedTextField.class); - - private final BooleanProperty invalid = new SimpleBooleanProperty(false); - private final StringProperty mask; - private final IntegerProperty minLength; - private final IntegerProperty maxLength; - - private Effect invalidEffect = new DropShadow(BlurType.THREE_PASS_BOX, Color.RED, 4, 0.0, 0, 0); - - public ValidatedTextField() { - super(); - this.mask = new SimpleStringProperty("^[0-9.,]*$"); - this.minLength = new SimpleIntegerProperty(1); - this.maxLength = new SimpleIntegerProperty(12); - - bind(); - } - - public ValidatedTextField(String mask, int minLength, int maxLength, boolean nullable) { - this(mask, minLength, maxLength, nullable, null); - } - - public ValidatedTextField(String mask, int minLength, int maxLength, boolean nullable, String string) { - super(string); - this.mask = new SimpleStringProperty(mask); - this.minLength = new SimpleIntegerProperty(minLength); - this.maxLength = new SimpleIntegerProperty(maxLength); - - bind(); - } - - public ReadOnlyBooleanProperty invalidProperty() { - return invalid; - } - - public ReadOnlyStringProperty maskProperty() { - return mask; - } - - public ReadOnlyIntegerProperty minLengthProperty() { - return minLength; - } - - public ReadOnlyIntegerProperty maxLengthProperty() { - return maxLength; - } - - public boolean isInvalid() { - return invalid.get(); - } - - public String getMask() { - return mask.get(); - } - - public void setMask(String mask) { - this.mask.set(mask); - } - - public int getMinLength() { - return minLength.get(); - } - - public void setMinLength(int minLength) { - this.minLength.set(minLength); - } - - public int getMaxLength() { - return maxLength.get(); - } - - public void setMaxLength(int maxLength) { - this.maxLength.set(maxLength); - } - - public Effect getInvalidEffect() { - return this.invalidEffect; - } - - public void setInvalidEffect(Effect effect) { - this.invalidEffect = effect; - } - - private void bind() { - this.invalid.bind(maskCheck().or(minLengthCheck())); - - this.textProperty().addListener((ov, t, t1) -> { - if (textProperty().get() != null && textProperty().get().length() > maxLength.get()) { - setText(t); - } - }); - - this.invalid.addListener((ov, t, t1) -> { - if (t ^ t1) { - if (t1) { - // setStyle("-fx-font-weight: bold; -fx-text-fill: red;"); - setEffect(invalidEffect); - } - else { - // setStyle("-fx-font-weight: normal; -fx-text-fill: inherit;"); - setEffect(null); - } - } - - }); - } - - private BooleanBinding maskCheck() { - return new BooleanBinding() { - { - super.bind(textProperty(), mask); - } - - @Override - protected boolean computeValue() { - return (textProperty().get() != null) ? !textProperty().get().matches(mask.get()) : false; - } - }; - } - - private BooleanBinding minLengthCheck() { - return new BooleanBinding() { - { - super.bind(textProperty(), minLength); - } - - @Override - protected boolean computeValue() { - return (textProperty().get() != null) ? textProperty().get().length() < minLength.get() : false; - } - }; - } - - private BooleanBinding maxLengthCheck() { - return new BooleanBinding() { - { - super.bind(textProperty(), maxLength); - } - - @Override - protected boolean computeValue() { - return textProperty().get().length() > maxLength.get(); - } - }; - } -} \ No newline at end of file diff --git a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java b/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java index 5d1d100611..07ea85385d 100644 --- a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java +++ b/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBar.java @@ -26,7 +26,7 @@ import javafx.scene.control.*; public class ProcessStepBar extends Control { private List processStepItems; - private IntegerProperty selectedIndex = new SimpleIntegerProperty(0); + private final IntegerProperty selectedIndex = new SimpleIntegerProperty(0); /////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java b/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java index 5fb6b878e7..bd8df89596 100644 --- a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java +++ b/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java @@ -43,7 +43,6 @@ class ProcessStepBarSkin extends BehaviorSkinBase, Behavior private final ProcessStepBar controller; private LabelWithBorder currentLabelWithBorder; private LabelWithBorder prevLabelWithBorder; - private int index; private final List labelWithBorders = new ArrayList<>(); /////////////////////////////////////////////////////////////////////////////////////////// @@ -66,8 +65,8 @@ class ProcessStepBarSkin extends BehaviorSkinBase, Behavior public void reset() { prevLabelWithBorder = null; - for (int i = 0; i < labelWithBorders.size(); i++) { - currentLabelWithBorder = labelWithBorders.get(i); + for (LabelWithBorder labelWithBorder : labelWithBorders) { + currentLabelWithBorder = labelWithBorder; currentLabelWithBorder.open(); } } @@ -97,8 +96,6 @@ class ProcessStepBarSkin extends BehaviorSkinBase, Behavior } public void setSelectedIndex(int index) { - this.index = index; - if (index < labelWithBorders.size()) { for (int i = 0; i <= index; i++) { diff --git a/src/main/java/io/bitsquare/gui/images.css b/src/main/java/io/bitsquare/gui/images.css index e7480e1dbf..88469ae8bc 100644 --- a/src/main/java/io/bitsquare/gui/images.css +++ b/src/main/java/io/bitsquare/gui/images.css @@ -46,7 +46,7 @@ -/* naviagtion buttons */ +/* navigation buttons */ #image-nav-home { -fx-image: url("../../../images/nav/home.png"); } diff --git a/src/main/java/io/bitsquare/gui/main/MainViewCB.java b/src/main/java/io/bitsquare/gui/main/MainViewCB.java index bf27e546f2..e28b35e8b0 100644 --- a/src/main/java/io/bitsquare/gui/main/MainViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/MainViewCB.java @@ -27,6 +27,7 @@ import io.bitsquare.gui.components.Popups; import io.bitsquare.gui.components.SystemNotification; import io.bitsquare.gui.util.Profiler; import io.bitsquare.gui.util.Transitions; +import io.bitsquare.trade.TradeManager; import io.bitsquare.util.ViewLoader; import java.io.IOException; @@ -76,11 +77,18 @@ public class MainViewCB extends ViewCB { @Inject private MainViewCB(MainPM presentationModel, Navigation navigation, - OverlayManager overlayManager) { + OverlayManager overlayManager, TradeManager tradeManager) { super(presentationModel); this.navigation = navigation; this.overlayManager = overlayManager; + + tradeManager.featureNotImplementedWarningProperty().addListener((ov, oldValue, newValue) -> { + if (oldValue == null && newValue != null) { + Popups.openWarningPopup(newValue); + tradeManager.setFeatureNotImplementedWarning(null); + } + }); } diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountModel.java b/src/main/java/io/bitsquare/gui/main/account/AccountModel.java index c8cab13f6f..75669899dd 100644 --- a/src/main/java/io/bitsquare/gui/main/account/AccountModel.java +++ b/src/main/java/io/bitsquare/gui/main/account/AccountModel.java @@ -51,6 +51,7 @@ class AccountModel extends UIModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountPM.java b/src/main/java/io/bitsquare/gui/main/account/AccountPM.java index cf7338061d..d26d84c1ee 100644 --- a/src/main/java/io/bitsquare/gui/main/account/AccountPM.java +++ b/src/main/java/io/bitsquare/gui/main/account/AccountPM.java @@ -48,6 +48,7 @@ class AccountPM extends PresentationModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountViewCB.java b/src/main/java/io/bitsquare/gui/main/account/AccountViewCB.java index 44225cd481..af49605afa 100644 --- a/src/main/java/io/bitsquare/gui/main/account/AccountViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/account/AccountViewCB.java @@ -42,7 +42,7 @@ public class AccountViewCB extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(AccountViewCB.class); - private Navigation navigation; + private final Navigation navigation; private Navigation.Listener listener; @FXML Tab tab; diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordModel.java b/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordModel.java index 512aa97354..7fb89bc26d 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordModel.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordModel.java @@ -46,6 +46,7 @@ class ChangePasswordModel extends UIModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordPM.java b/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordPM.java index e1c36a460b..729f5fc3b8 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordPM.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordPM.java @@ -67,6 +67,7 @@ class ChangePasswordPM extends PresentationModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewCB.java b/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewCB.java index aa541e4025..ab50bd948a 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/changepassword/ChangePasswordViewCB.java @@ -36,13 +36,13 @@ import javafx.scene.layout.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class ChangePasswordViewCB extends CachedViewCB implements ContextAware { +public class ChangePasswordViewCB extends CachedViewCB implements ContextAware { private static final Logger log = LoggerFactory.getLogger(ChangePasswordViewCB.class); @FXML HBox buttonsHBox; @FXML Button saveButton, skipButton; - @FXML PasswordField passwordField, repeatedPasswordField; + @FXML PasswordField oldPasswordField, passwordField, repeatedPasswordField; /////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordModel.java b/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordModel.java index fd895246d6..0bdd5da15b 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordModel.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordModel.java @@ -47,6 +47,7 @@ class PasswordModel extends UIModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordPM.java b/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordPM.java index ea75088e83..549a4406f6 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordPM.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/password/PasswordPM.java @@ -67,6 +67,7 @@ class PasswordPM extends PresentationModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewCB.java b/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewCB.java index 50f6757af1..b4d3366905 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/registration/RegistrationViewCB.java @@ -53,7 +53,7 @@ public class RegistrationViewCB extends CachedViewCB implements private static final Logger log = LoggerFactory.getLogger(RegistrationViewCB.class); - private OverlayManager overlayManager; + private final OverlayManager overlayManager; @FXML TextField feeTextField; @FXML AddressTextField addressTextField; diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewCB.java b/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewCB.java index 621239c500..c0cc8e1f76 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsViewCB.java @@ -57,7 +57,9 @@ public class RestrictionsViewCB extends CachedViewCB implements private static final Logger log = LoggerFactory.getLogger(RestrictionsViewCB.class); - @FXML ListView languagesListView, countriesListView, arbitratorsListView; + @FXML ListView languagesListView; + @FXML ListView countriesListView; + @FXML ListView arbitratorsListView; @FXML ComboBox languageComboBox; @FXML ComboBox regionComboBox; @FXML ComboBox countryComboBox; diff --git a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsModel.java b/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsModel.java index c57b6b5d2e..21a96d9a8a 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsModel.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsModel.java @@ -54,6 +54,7 @@ class SeedWordsModel extends UIModel { super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsPM.java b/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsPM.java index b0af02574c..4ad081b0bb 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsPM.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/seedwords/SeedWordsPM.java @@ -57,6 +57,7 @@ class SeedWordsPM extends PresentationModel { seedWords.set(BSFormatter.mnemonicCodeToString(model.getMnemonicCode())); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsViewCB.java b/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsViewCB.java index c4b33f3449..bfbb2bbf12 100644 --- a/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/account/settings/AccountSettingsViewCB.java @@ -51,7 +51,7 @@ public class AccountSettingsViewCB extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(AccountSettingsViewCB.class); private MenuItem seedWords, password, restrictions, fiatAccount, registration; - private Navigation navigation; + private final Navigation navigation; private Navigation.Listener listener; @FXML VBox leftVBox; @@ -117,8 +117,7 @@ public class AccountSettingsViewCB extends CachedViewCB { Navigation.Item.ACCOUNT_SETTINGS, Navigation.Item.SEED_WORDS); } else { - if (items != null && - items.length == 4 && + if (items.length == 4 && items[2] == Navigation.Item.ACCOUNT_SETTINGS) { loadView(items[3]); selectMainMenuButton(items[3]); diff --git a/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupViewCB.java b/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupViewCB.java index 222e6a18d4..7905486ed2 100644 --- a/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/account/setup/AccountSetupViewCB.java @@ -55,7 +55,7 @@ public class AccountSetupViewCB extends ViewCB implements MultiStepNavigation { private static final Logger log = LoggerFactory.getLogger(AccountSetupViewCB.class); private WizardItem seedWords, password, fiatAccount, restrictions, registration; - private Navigation navigation; + private final Navigation navigation; private Navigation.Listener listener; @FXML VBox leftVBox; @@ -83,8 +83,6 @@ public class AccountSetupViewCB extends ViewCB implements MultiStepNavigation { if (navigationItems != null && navigationItems.length == 4 && navigationItems[2] == Navigation.Item.ACCOUNT_SETUP) { - log.debug("### " + navigationItems[3]); - //loadView(navigationItems[3]); switch (navigationItems[3]) { case SEED_WORDS: childController = seedWords.show(); @@ -115,17 +113,17 @@ public class AccountSetupViewCB extends ViewCB implements MultiStepNavigation { } }; - seedWords = new WizardItem(navigation, this, "Backup wallet seed", "Write down the seed word for your wallet", + seedWords = new WizardItem(this, "Backup wallet seed", "Write down the seed word for your wallet", Navigation.Item.SEED_WORDS); - password = new WizardItem(navigation, this, "Setup password", "Protect your wallet with a password", + password = new WizardItem(this, "Setup password", "Protect your wallet with a password", Navigation.Item.ADD_PASSWORD); - restrictions = new WizardItem(navigation, this, "Setup your preferences", + restrictions = new WizardItem(this, "Setup your preferences", "Define your preferences with whom you want to trade", Navigation.Item.RESTRICTIONS); - fiatAccount = new WizardItem(navigation, this, " Setup Payments account(s)", + fiatAccount = new WizardItem(this, " Setup Payments account(s)", "You need to add a payments account to your trading account", Navigation.Item.FIAT_ACCOUNT); - registration = new WizardItem(navigation, this, "Register your account", + registration = new WizardItem(this, "Register your account", "Pay in the registration fee of 0.0002 BTC and store your account in the BTC block chain", Navigation.Item.REGISTRATION); @@ -134,7 +132,6 @@ public class AccountSetupViewCB extends ViewCB implements MultiStepNavigation { super.initialize(url, rb); navigation.addListener(listener); - childController = seedWords.show(); } @@ -209,13 +206,11 @@ class WizardItem extends HBox { private final ImageView imageView; private final Label titleLabel; private final Label subTitleLabel; - private AccountSetupViewCB host; + private final AccountSetupViewCB host; private final Navigation.Item navigationItem; - private final Navigation navigation; - WizardItem(Navigation navigation, AccountSetupViewCB host, String title, String subTitle, + WizardItem(AccountSetupViewCB host, String title, String subTitle, Navigation.Item navigationItem) { - this.navigation = navigation; this.host = host; this.navigationItem = navigationItem; diff --git a/src/main/java/io/bitsquare/gui/main/funds/deposit/DepositController.java b/src/main/java/io/bitsquare/gui/main/funds/deposit/DepositController.java index 74d53d2a83..2f32fd9310 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/deposit/DepositController.java +++ b/src/main/java/io/bitsquare/gui/main/funds/deposit/DepositController.java @@ -51,7 +51,7 @@ public class DepositController extends CachedViewController { private ObservableList addressList; @FXML TableView tableView; - @FXML TableColumn labelColumn, addressColumn, balanceColumn, copyColumn, + @FXML TableColumn labelColumn, addressColumn, balanceColumn, copyColumn, confidenceColumn; @@ -117,13 +117,15 @@ public class DepositController extends CachedViewController { /////////////////////////////////////////////////////////////////////////////////////////// private void setLabelColumnCellFactory() { - labelColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); - labelColumn.setCellFactory(new Callback, TableCell>() { + labelColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); + labelColumn.setCellFactory(new Callback, + TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { Hyperlink hyperlink; @@ -154,13 +156,15 @@ public class DepositController extends CachedViewController { } private void setBalanceColumnCellFactory() { - balanceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); + balanceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); balanceColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { @Override public void updateItem(final DepositListItem item, boolean empty) { super.updateItem(item, empty); @@ -178,13 +182,15 @@ public class DepositController extends CachedViewController { } private void setCopyColumnCellFactory() { - copyColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); + copyColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); copyColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { final Label copyIcon = new Label(); { @@ -217,14 +223,16 @@ public class DepositController extends CachedViewController { } private void setConfidenceColumnCellFactory() { - confidenceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue + confidenceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue ())); - confidenceColumn.setCellFactory(new Callback, TableCell>() { + confidenceColumn.setCellFactory(new Callback, + TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { @Override public void updateItem(final DepositListItem item, boolean empty) { diff --git a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsController.java b/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsController.java index cc707f17e5..3b80d5ba23 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsController.java +++ b/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsController.java @@ -47,9 +47,8 @@ public class TransactionsController extends CachedViewController { private ObservableList transactionsListItems; @FXML TableView tableView; - @FXML TableColumn dateColumn, addressColumn, amountColumn, typeColumn, + @FXML TableColumn dateColumn, addressColumn, amountColumn, typeColumn, confidenceColumn; - @FXML Button addNewAddressButton; /////////////////////////////////////////////////////////////////////////////////////////// @@ -112,14 +111,15 @@ public class TransactionsController extends CachedViewController { /////////////////////////////////////////////////////////////////////////////////////////// private void setAddressColumnCellFactory() { - addressColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); + addressColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); addressColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn call(TableColumn column) { - return new TableCell() { + return new TableCell() { Hyperlink hyperlink; @Override @@ -145,14 +145,15 @@ public class TransactionsController extends CachedViewController { private void setConfidenceColumnCellFactory() { confidenceColumn.setCellValueFactory((addressListItem) -> - new ReadOnlyObjectWrapper(addressListItem.getValue())); + new ReadOnlyObjectWrapper<>(addressListItem.getValue())); confidenceColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn call(TableColumn column) { - return new TableCell() { + return new TableCell() { @Override public void updateItem(final TransactionsListItem item, boolean empty) { diff --git a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalController.java b/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalController.java index 9dfe29f969..5842543cba 100644 --- a/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalController.java +++ b/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalController.java @@ -55,6 +55,8 @@ import de.jensd.fx.fontawesome.AwesomeIcon; import org.controlsfx.control.action.Action; import org.controlsfx.dialog.Dialog; +import org.jetbrains.annotations.NotNull; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,7 +68,7 @@ public class WithdrawalController extends CachedViewController { private ObservableList addressList; @FXML TableView tableView; - @FXML TableColumn labelColumn, addressColumn, balanceColumn, copyColumn, + @FXML TableColumn labelColumn, addressColumn, balanceColumn, copyColumn, confidenceColumn; @FXML Button addNewAddressButton; @FXML TextField withdrawFromTextField, withdrawToTextField, amountTextField, changeAddressTextField; @@ -156,12 +158,12 @@ public class WithdrawalController extends CachedViewController { BitSquareValidator.resetTextFields( withdrawFromTextField, withdrawToTextField, amountTextField, changeAddressTextField); if (transaction != null) { - log.info("onWithdraw onSuccess txid:" + transaction.getHashAsString()); + log.info("onWithdraw onSuccess tx ID:" + transaction.getHashAsString()); } } @Override - public void onFailure(Throwable t) { + public void onFailure(@NotNull Throwable t) { log.debug("onWithdraw onFailure"); } }; @@ -213,13 +215,15 @@ public class WithdrawalController extends CachedViewController { /////////////////////////////////////////////////////////////////////////////////////////// private void setLabelColumnCellFactory() { - labelColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); - labelColumn.setCellFactory(new Callback, TableCell>() { + labelColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); + labelColumn.setCellFactory(new Callback, + TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { Hyperlink hyperlink; @@ -250,13 +254,15 @@ public class WithdrawalController extends CachedViewController { } private void setBalanceColumnCellFactory() { - balanceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); + balanceColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); balanceColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { @Override public void updateItem(final WithdrawalListItem item, boolean empty) { super.updateItem(item, empty); @@ -268,13 +274,15 @@ public class WithdrawalController extends CachedViewController { } private void setCopyColumnCellFactory() { - copyColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper(addressListItem.getValue())); + copyColumn.setCellValueFactory((addressListItem) -> new ReadOnlyObjectWrapper<>(addressListItem.getValue())); copyColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { final Label copyIcon = new Label(); { @@ -308,13 +316,15 @@ public class WithdrawalController extends CachedViewController { private void setConfidenceColumnCellFactory() { confidenceColumn.setCellValueFactory((addressListItem) -> - new ReadOnlyObjectWrapper(addressListItem.getValue())); + new ReadOnlyObjectWrapper<>(addressListItem.getValue())); confidenceColumn.setCellFactory( - new Callback, TableCell>() { + new Callback, TableCell>() { @Override - public TableCell call(TableColumn column) { - return new TableCell() { + public TableCell call(TableColumn column) { + return new TableCell() { @Override public void updateItem(final WithdrawalListItem item, boolean empty) { diff --git a/src/main/java/io/bitsquare/gui/main/msg/MsgController.java b/src/main/java/io/bitsquare/gui/main/msg/MsgController.java index f05a83225b..9fe4eef3e4 100644 --- a/src/main/java/io/bitsquare/gui/main/msg/MsgController.java +++ b/src/main/java/io/bitsquare/gui/main/msg/MsgController.java @@ -33,6 +33,7 @@ import org.slf4j.LoggerFactory; // will be probably only used for arbitration communication, will be renamed and the icon changed + public class MsgController extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(MsgController.class); @@ -49,22 +50,25 @@ public class MsgController extends CachedViewCB { // Lifecycle /////////////////////////////////////////////////////////////////////////////////////////// - + @SuppressWarnings("EmptyMethod") @Override public void initialize(URL url, ResourceBundle rb) { super.initialize(url, rb); } + @SuppressWarnings("EmptyMethod") @Override public void terminate() { super.terminate(); } + @SuppressWarnings("EmptyMethod") @Override public void deactivate() { super.deactivate(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); diff --git a/src/main/java/io/bitsquare/gui/main/orders/OrdersViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/OrdersViewCB.java index a739156529..3022b46386 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/OrdersViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/OrdersViewCB.java @@ -43,8 +43,8 @@ import org.slf4j.LoggerFactory; public class OrdersViewCB extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(OrdersViewCB.class); - private Navigation navigation; - private TradeManager tradeManager; + private final Navigation navigation; + private final TradeManager tradeManager; private Navigation.Listener navigationListener; @FXML Tab offersTab, pendingTradesTab, closedTradesTab; @@ -71,16 +71,12 @@ public class OrdersViewCB extends CachedViewCB { @Override public void initialize(URL url, ResourceBundle rb) { navigationListener = navigationItems -> { - if (navigationItems != null && navigationItems.length == 3 && navigationItems[1] == Navigation.Item - .ORDERS) { - log.debug("#### Orders " + navigationItems[2]); + if (navigationItems != null && navigationItems.length == 3 + && navigationItems[1] == Navigation.Item.ORDERS) loadView(navigationItems[2]); - } }; tabChangeListener = (ov, oldValue, newValue) -> { - - log.debug("#### newValue " + newValue.getText()); if (newValue == offersTab) navigation.navigationTo(Navigation.Item.MAIN, Navigation.Item.ORDERS, Navigation.Item.OFFERS); else if (newValue == pendingTradesTab) diff --git a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesListItem.java b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesListItem.java index afdbf98709..fc074db3fc 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesListItem.java +++ b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesListItem.java @@ -22,7 +22,10 @@ import io.bitsquare.trade.Trade; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ClosedTradesListItem { +/** + * We could remove that wrapper if it is not needed for additional UI only fields. + */ +class ClosedTradesListItem { private static final Logger log = LoggerFactory.getLogger(ClosedTradesListItem.class); private final Trade trade; diff --git a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesModel.java b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesModel.java index c65ab131a3..2000fa5f66 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesModel.java +++ b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesModel.java @@ -30,12 +30,12 @@ import javafx.collections.ObservableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ClosedTradesModel extends UIModel { +class ClosedTradesModel extends UIModel { private static final Logger log = LoggerFactory.getLogger(ClosedTradesModel.class); - private TradeManager tradeManager; + private final TradeManager tradeManager; - private ObservableList list = FXCollections.observableArrayList(); + private final ObservableList list = FXCollections.observableArrayList(); private MapChangeListener mapChangeListener; diff --git a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesPM.java b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesPM.java index 3237c3c6e2..64fda1123c 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesPM.java +++ b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesPM.java @@ -27,9 +27,9 @@ import javafx.collections.ObservableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ClosedTradesPM extends PresentationModel { +class ClosedTradesPM extends PresentationModel { private static final Logger log = LoggerFactory.getLogger(ClosedTradesPM.class); - private BSFormatter formatter; + private final BSFormatter formatter; /////////////////////////////////////////////////////////////////////////////////////////// // Constructor @@ -46,23 +46,22 @@ public class ClosedTradesPM extends PresentationModel { // Lifecycle /////////////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings("EmptyMethod") @Override public void initialize() { - super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); - } @SuppressWarnings("EmptyMethod") @Override public void deactivate() { super.deactivate(); - } @SuppressWarnings("EmptyMethod") diff --git a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java index 5744a85058..e8adada021 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/closed/ClosedTradesViewCB.java @@ -38,7 +38,7 @@ public class ClosedTradesViewCB extends CachedViewCB { @FXML TableColumn priceColumn, amountColumn, volumeColumn, - directionColumn, dateColumn, tradeIdColumn, removeItemColumn; + directionColumn, dateColumn, tradeIdColumn; @FXML TableView table; @@ -77,6 +77,7 @@ public class ClosedTradesViewCB extends CachedViewCB { table.setItems(presentationModel.getList()); } + @SuppressWarnings("EmptyMethod") @Override public void deactivate() { super.deactivate(); @@ -104,7 +105,7 @@ public class ClosedTradesViewCB extends CachedViewCB { /////////////////////////////////////////////////////////////////////////////////////////// private void setTradeIdColumnCellFactory() { - tradeIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper(offerListItem.getValue())); + tradeIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue())); tradeIdColumn.setCellFactory( new Callback, TableCell>() { diff --git a/src/main/java/io/bitsquare/gui/main/orders/offer/OfferListItem.java b/src/main/java/io/bitsquare/gui/main/orders/offer/OfferListItem.java index 1a7fd7b431..a5bf4c407b 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/offer/OfferListItem.java +++ b/src/main/java/io/bitsquare/gui/main/orders/offer/OfferListItem.java @@ -17,61 +17,20 @@ package io.bitsquare.gui.main.orders.offer; -import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.trade.Offer; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; - -public class OfferListItem { - private final StringProperty price = new SimpleStringProperty(); - private final StringProperty amount = new SimpleStringProperty(); - private final StringProperty date = new SimpleStringProperty(); - private final StringProperty volume = new SimpleStringProperty(); +/** + * We could remove that wrapper if it is not needed for additional UI only fields. + */ +class OfferListItem { private final Offer offer; - private final String offerId; public OfferListItem(Offer offer) { this.offer = offer; - - this.date.set(BSFormatter.formatDateTime(offer.getCreationDate())); - this.price.set(BSFormatter.formatFiat(offer.getPrice())); - - this.amount.set(BSFormatter.formatCoin( - offer.getAmount()) + " (" + BSFormatter.formatCoin(offer.getMinAmount()) + ")"); - this.volume.set(BSFormatter.formatVolumeWithMinVolume(offer)); - this.offerId = offer.getId(); } - public Offer getOffer() { return offer; } - - // called form table columns - - - public final StringProperty dateProperty() { - return this.date; - } - - - public final StringProperty priceProperty() { - return this.price; - } - - - public final StringProperty amountProperty() { - return this.amount; - } - - - public final StringProperty volumeProperty() { - return this.volume; - } - - public String getOfferId() { - return offerId; - } } diff --git a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersModel.java b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersModel.java index a9cfb7f155..ea63461508 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersModel.java +++ b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersModel.java @@ -32,12 +32,12 @@ import javafx.collections.ObservableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class OffersModel extends UIModel { +class OffersModel extends UIModel { private static final Logger log = LoggerFactory.getLogger(OffersModel.class); - private TradeManager tradeManager; + private final TradeManager tradeManager; - private ObservableList list = FXCollections.observableArrayList(); + private final ObservableList list = FXCollections.observableArrayList(); private MapChangeListener offerMapChangeListener; @@ -61,7 +61,7 @@ public class OffersModel extends UIModel { if (change.wasAdded()) list.add(new OfferListItem(change.getValueAdded())); else if (change.wasRemoved()) - list.removeIf(e -> e.getOfferId().equals(change.getValueRemoved().getId())); + list.removeIf(e -> e.getOffer().getId().equals(change.getValueRemoved().getId())); }; super.initialize(); diff --git a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersPM.java b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersPM.java index f3aa000f00..4110020450 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersPM.java +++ b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersPM.java @@ -27,9 +27,9 @@ import javafx.collections.ObservableList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class OffersPM extends PresentationModel { +class OffersPM extends PresentationModel { private static final Logger log = LoggerFactory.getLogger(OffersPM.class); - private BSFormatter formatter; + private final BSFormatter formatter; /////////////////////////////////////////////////////////////////////////////////////////// // Constructor @@ -46,23 +46,22 @@ public class OffersPM extends PresentationModel { // Lifecycle /////////////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings("EmptyMethod") @Override public void initialize() { - super.initialize(); } + @SuppressWarnings("EmptyMethod") @Override public void activate() { super.activate(); - } @SuppressWarnings("EmptyMethod") @Override public void deactivate() { super.deactivate(); - } @SuppressWarnings("EmptyMethod") @@ -88,9 +87,9 @@ public class OffersPM extends PresentationModel { /////////////////////////////////////////////////////////////////////////////////////////// // Getters /////////////////////////////////////////////////////////////////////////////////////////// - + String getTradeId(OfferListItem item) { - return item.getOfferId(); + return item.getOffer().getId(); } String getAmount(OfferListItem item) { diff --git a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java index ca7d4bf630..0fddc4d0b7 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/offer/OffersViewCB.java @@ -79,6 +79,7 @@ public class OffersViewCB extends CachedViewCB { table.setItems(presentationModel.getList()); } + @SuppressWarnings("EmptyMethod") @Override public void deactivate() { super.deactivate(); @@ -110,7 +111,7 @@ public class OffersViewCB extends CachedViewCB { /////////////////////////////////////////////////////////////////////////////////////////// private void setOfferIdColumnCellFactory() { - offerIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper(offerListItem.getValue())); + offerIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue())); offerIdColumn.setCellFactory( new Callback, TableCell>() { @@ -244,7 +245,7 @@ public class OffersViewCB extends CachedViewCB { private void setRemoveColumnCellFactory() { - removeItemColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper(offerListItem.getValue())); + removeItemColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue())); removeItemColumn.setCellFactory( new Callback, TableCell>() { @Override diff --git a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java index a577701b2a..e15e016238 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java +++ b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesModel.java @@ -89,9 +89,6 @@ class PendingTradesModel extends UIModel { faultChangeListener = (ov, oldValue, newValue) -> fault.set(newValue); mapChangeListener = change -> { - log.debug("######## " + change); - log.debug("######## " + change.getValueAdded()); - log.debug("######## " + change.getValueRemoved()); if (change.wasAdded()) list.add(new PendingTradesListItem(change.getValueAdded())); else if (change.wasRemoved()) diff --git a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java index 40ed4c6c1d..d9417992c4 100644 --- a/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/orders/pending/PendingTradesViewCB.java @@ -67,7 +67,6 @@ public class PendingTradesViewCB extends CachedViewCB { private ChangeListener offererStateChangeListener; private ChangeListener takerStateChangeListener; private ChangeListener faultChangeListener; - private ChangeListener listItemChangeListener; /////////////////////////////////////////////////////////////////////////////////////////// @@ -416,7 +415,7 @@ public class PendingTradesViewCB extends CachedViewCB { /////////////////////////////////////////////////////////////////////////////////////////// private void setTradeIdColumnCellFactory() { - tradeIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper(offerListItem.getValue())); + tradeIdColumn.setCellValueFactory((offerListItem) -> new ReadOnlyObjectWrapper<>(offerListItem.getValue())); tradeIdColumn.setCellFactory( new Callback, TableCell>() { diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java index adb3dab98b..808346b979 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java @@ -55,7 +55,7 @@ public class TradeViewCB extends CachedViewCB implements TradeNavigator { private TakeOfferViewCB takeOfferViewCB; private Node createOfferView; private Node takeOfferView; - private Navigation navigation; + private final Navigation navigation; private Navigation.Listener listener; private Navigation.Item navigationItem; private Direction direction; diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferModel.java b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferModel.java index b0243cfca8..5fa54ef770 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferModel.java +++ b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferModel.java @@ -260,6 +260,7 @@ class CreateOfferModel extends UIModel { } } + @SuppressWarnings("BooleanMethodIsAlwaysInverted") boolean isMinAmountLessOrEqualAmount() { //noinspection SimplifiableIfStatement if (minAmountAsCoin.get() != null && amountAsCoin.get() != null) diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java index 5d51eb0225..870640f420 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java @@ -77,8 +77,8 @@ public class CreateOfferViewCB extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(CreateOfferViewCB.class); - private Navigation navigation; - private OverlayManager overlayManager; + private final Navigation navigation; + private final OverlayManager overlayManager; private CloseListener closeListener; private boolean detailsVisible; diff --git a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java index 198aa2c608..a9d001bb24 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java +++ b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java @@ -74,10 +74,7 @@ public class OrderBook { this.user = user; bankAccountChangeListener = (observableValue, oldValue, newValue) -> setBankAccount(newValue); - invalidationListener = (ov, oldValue, newValue) -> { - log.debug("#### invalidationListener " + newValue); - requestOffers(); - }; + invalidationListener = (ov, oldValue, newValue) -> requestOffers(); orderBookListener = new OrderBookListener() { @Override @@ -89,7 +86,7 @@ public class OrderBook { public void onOffersReceived(List offers) { //TODO use deltas instead replacing the whole list orderBookListItems.clear(); - offers.stream().forEach(offer -> addOfferToOrderBookListItems(offer)); + offers.stream().forEach(e -> addOfferToOrderBookListItems(e)); } @Override @@ -164,7 +161,6 @@ public class OrderBook { } private void requestOffers() { - log.debug("#### requestOffers"); messageFacade.getOffers(fiatCode); } diff --git a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java index b8363c30a8..8ef4f12333 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java @@ -70,7 +70,6 @@ public class OrderBookViewCB extends CachedViewCB { private final OptionalBtcValidator optionalBtcValidator; private final OptionalFiatValidator optionalFiatValidator; - private Navigation.Item navigationItem; private boolean detailsVisible; private boolean advancedScreenInited; @@ -175,8 +174,6 @@ public class OrderBookViewCB extends CachedViewCB { public void setDirection(Direction direction) { presentationModel.setDirection(direction); - navigationItem = (direction == Direction.BUY) ? Navigation.Item.BUY : Navigation.Item.SELL; - } diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferModel.java b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferModel.java index 08000f34b5..f4f0dc1e03 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferModel.java +++ b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferModel.java @@ -211,6 +211,7 @@ class TakeOfferModel extends UIModel { } } + @SuppressWarnings("BooleanMethodIsAlwaysInverted") boolean isMinAmountLessOrEqualAmount() { //noinspection SimplifiableIfStatement if (offer != null && offer.getMinAmount() != null && amountAsCoin.get() != null) diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java index 750a7fb463..7da33fd114 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java @@ -72,8 +72,8 @@ import org.slf4j.LoggerFactory; public class TakeOfferViewCB extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(TakeOfferViewCB.class); - private Navigation navigation; - private OverlayManager overlayManager; + private final Navigation navigation; + private final OverlayManager overlayManager; private CloseListener closeListener; private boolean detailsVisible; diff --git a/src/main/java/io/bitsquare/gui/util/BSFormatter.java b/src/main/java/io/bitsquare/gui/util/BSFormatter.java index 17f89870b2..44ccf487fd 100644 --- a/src/main/java/io/bitsquare/gui/util/BSFormatter.java +++ b/src/main/java/io/bitsquare/gui/util/BSFormatter.java @@ -284,11 +284,11 @@ public class BSFormatter { } public static String countryLocalesToString(List countries) { - return countries.stream().map(e -> e.getName()).collect(Collectors.joining(", ")); + return countries.stream().map(Country::getName).collect(Collectors.joining(", ")); } public static String arbitratorsToString(List arbitrators) { - return arbitrators.stream().map(e -> e.getName()).collect(Collectors.joining(", ")); + return arbitrators.stream().map(Arbitrator::getName).collect(Collectors.joining(", ")); } public static String languageLocalesToString(List languageLocales) { @@ -334,6 +334,7 @@ public class BSFormatter { input = input.replace(",", "."); // don't use String.valueOf(Double.parseDouble(input)) as return value as it gives scientific // notation (1.0E-6) which screw up coinFormat.parse + //noinspection ResultOfMethodCallIgnored Double.parseDouble(input); return input; } diff --git a/src/main/java/io/bitsquare/gui/util/BitSquareValidator.java b/src/main/java/io/bitsquare/gui/util/BitSquareValidator.java index d04f1332f3..f041bea334 100644 --- a/src/main/java/io/bitsquare/gui/util/BitSquareValidator.java +++ b/src/main/java/io/bitsquare/gui/util/BitSquareValidator.java @@ -146,6 +146,7 @@ public class BitSquareValidator { public static boolean validateStringAsDouble(String input) { try { input = input.replace(",", "."); + //noinspection ResultOfMethodCallIgnored Double.parseDouble(input); return true; } catch (NumberFormatException | NullPointerException e) { diff --git a/src/main/java/io/bitsquare/gui/util/Profiler.java b/src/main/java/io/bitsquare/gui/util/Profiler.java index 94069fdd44..64eb103090 100644 --- a/src/main/java/io/bitsquare/gui/util/Profiler.java +++ b/src/main/java/io/bitsquare/gui/util/Profiler.java @@ -33,23 +33,13 @@ public class Profiler { private static final Stopwatch globalStopwatch = Stopwatch.createStarted(); private static final ThreadLocal threadStopwatch = ThreadLocal.withInitial(Stopwatch::createStarted); private static final ThreadLocal last = ThreadLocal.withInitial(() -> 0L); - private static long lastCurrentTimeMillis = System.currentTimeMillis(); private static long lastFPSTime = System.currentTimeMillis(); - private static long counter = 0; public static void printMsgWithTime(String msg) { final long elapsed = threadStopwatch.get().elapsed(TimeUnit.MILLISECONDS); log.trace("\n\nCalled by: {} \nElapsed time: {}ms \nTotal time: {}ms\n\n", msg, elapsed - last.get(), globalStopwatch.elapsed(TimeUnit.MILLISECONDS)); - /* log.trace("Msg: {} elapsed: {}ms / total time:[globalStopwatch: {}ms / threadStopwatch: {}ms / " + - "currentTimeMillis: {}ms]", - msg, - elapsed - last.get(), - globalStopwatch.elapsed(TimeUnit.MILLISECONDS), - elapsed, - System.currentTimeMillis() - lastCurrentTimeMillis);*/ - lastCurrentTimeMillis = System.currentTimeMillis(); last.set(elapsed); } @@ -57,7 +47,6 @@ public class Profiler { AnimationTimer fpsTimer = new AnimationTimer() { @Override public void handle(long l) { - counter++; long elapsed = (System.currentTimeMillis() - lastFPSTime); if (elapsed > 19) log.trace("Profiler: last frame used {}ms", elapsed); diff --git a/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java b/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java index af68874413..0c50cdcc59 100644 --- a/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java +++ b/src/main/java/io/bitsquare/gui/util/validation/NumberValidator.java @@ -44,6 +44,7 @@ public abstract class NumberValidator extends InputValidator { protected ValidationResult validateIfNumber(String input) { try { + //noinspection ResultOfMethodCallIgnored Double.parseDouble(input); return new ValidationResult(true); } catch (Exception e) { diff --git a/src/main/java/io/bitsquare/locale/CountryUtil.java b/src/main/java/io/bitsquare/locale/CountryUtil.java index 3771788ef4..e6024a47c6 100644 --- a/src/main/java/io/bitsquare/locale/CountryUtil.java +++ b/src/main/java/io/bitsquare/locale/CountryUtil.java @@ -88,8 +88,8 @@ public class CountryUtil { List allEuroCountries = new ArrayList<>(); String[] code = {"BE", "DE", "EE", "FI", "FR", "GR", "IE", "IT", "LV", "LU", "MT", "NL", "PT", "SK", "SI", "ES", "AT", "CY"}; - for (int i = 0; i < code.length; i++) { - Locale locale = new Locale("", code[i], ""); + for (String aCode : code) { + Locale locale = new Locale("", aCode, ""); String regionCode = getRegionCode(locale.getCountry()); final Region region = new Region(regionCode, getRegionName(regionCode)); final Country country = new Country(locale.getCountry(), locale.getDisplayCountry(), region); diff --git a/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java b/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java index c7c5707f97..8214207a7a 100644 --- a/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java +++ b/src/main/java/io/bitsquare/msg/BootstrappedPeerFactory.java @@ -292,7 +292,7 @@ public class BootstrappedPeerFactory { log.debug("Start setup relay was successful."); futureRelay.relays().forEach(e -> log.debug("remotePeer = " + e.remotePeer())); - findNeighbors2(peerDHT, nodeBehindNat, bootstrapAddress); + findNeighbors2(peerDHT, bootstrapAddress); } else { log.error("setupRelay failed. Reason: " + futureRelay.failedReason()); @@ -314,7 +314,7 @@ public class BootstrappedPeerFactory { }); } - private void findNeighbors2(PeerDHT peerDHT, PeerNAT nodeBehindNat, PeerAddress bootstrapAddress) { + private void findNeighbors2(PeerDHT peerDHT, PeerAddress bootstrapAddress) { // find neighbors again FutureBootstrap futureBootstrap2 = peerDHT.peer().bootstrap().peerAddress(bootstrapAddress).start(); BootstrappedPeerFactory ref = this; diff --git a/src/main/java/io/bitsquare/msg/MessageFacade.java b/src/main/java/io/bitsquare/msg/MessageFacade.java index 7c85e233a8..8866090236 100644 --- a/src/main/java/io/bitsquare/msg/MessageFacade.java +++ b/src/main/java/io/bitsquare/msg/MessageFacade.java @@ -135,25 +135,20 @@ public class MessageFacade implements MessageBroker { public void getPeerAddress(PublicKey publicKey, GetPeerAddressListener listener) { final Number160 locationKey = Utils.makeSHAHash(publicKey.getEncoded()); - try { - FutureGet futureGet = p2pNode.getDomainProtectedData(locationKey, publicKey); + FutureGet futureGet = p2pNode.getDomainProtectedData(locationKey, publicKey); - futureGet.addListener(new BaseFutureAdapter() { - @Override - public void operationComplete(BaseFuture baseFuture) throws Exception { - if (baseFuture.isSuccess() && futureGet.data() != null) { - final PeerAddress peerAddress = (PeerAddress) futureGet.data().object(); - Platform.runLater(() -> listener.onResult(peerAddress)); - } - else { - Platform.runLater(listener::onFailed); - } + futureGet.addListener(new BaseFutureAdapter() { + @Override + public void operationComplete(BaseFuture baseFuture) throws Exception { + if (baseFuture.isSuccess() && futureGet.data() != null) { + final PeerAddress peerAddress = (PeerAddress) futureGet.data().object(); + Platform.runLater(() -> listener.onResult(peerAddress)); } - }); - } catch (IOException | ClassNotFoundException e) { - e.printStackTrace(); - log.error(e.toString()); - } + else { + Platform.runLater(listener::onFailed); + } + } + }); } @@ -213,7 +208,7 @@ public class MessageFacade implements MessageBroker { }); } }); - } catch (IOException | ClassNotFoundException e) { + } catch (IOException e) { Platform.runLater(() -> { addOfferListener.onFailed("Add offer to DHT failed with an exception.", e); log.error("Add offer to DHT failed with an exception: " + e.getMessage()); @@ -263,7 +258,7 @@ public class MessageFacade implements MessageBroker { log.error("Remove offer from DHT failed. Error: " + t.getMessage()); } }); - } catch (IOException | ClassNotFoundException e) { + } catch (IOException e) { e.printStackTrace(); log.error("Remove offer from DHT failed. Error: " + e.getMessage()); } @@ -364,12 +359,12 @@ public class MessageFacade implements MessageBroker { } } }); - } catch (IOException | ClassNotFoundException e) { + } catch (IOException e) { e.printStackTrace(); } } - public void removeArbitrator(Arbitrator arbitrator) throws IOException, ClassNotFoundException { + public void removeArbitrator(Arbitrator arbitrator) throws IOException { Number160 locationKey = Number160.createHash(ARBITRATORS_ROOT); final Data arbitratorData = new Data(arbitrator); FutureRemove removeFuture = p2pNode.removeFromDataMap(locationKey, arbitratorData); @@ -468,7 +463,7 @@ public class MessageFacade implements MessageBroker { log.error("Update invalidationTimestamp to DHT failed with exception:" + t.getMessage()); } }); - } catch (IOException | ClassNotFoundException e) { + } catch (IOException e) { log.error("Update invalidationTimestamp to DHT failed with exception:" + e.getMessage()); } } @@ -479,45 +474,40 @@ public class MessageFacade implements MessageBroker { public void requestInvalidationTimeStampFromDHT(String currencyCode) { Number160 locationKey = Number160.createHash(currencyCode); - try { - FutureGet getFuture = p2pNode.getData(getInvalidatedLocationKey(locationKey)); - getFuture.addListener(new BaseFutureListener() { - @Override - public void operationComplete(BaseFuture future) throws Exception { - if (getFuture.isSuccess()) { - Data data = getFuture.data(); - if (data != null && data.object() instanceof Long) { - final Object object = data.object(); - Platform.runLater(() -> { - Long timeStamp = (Long) object; - log.trace("Get invalidationTimestamp from DHT was successful. TimeStamp=" + - timeStamp); - invalidationTimestamp.set(timeStamp); - }); - } - else { - log.error("Get invalidationTimestamp from DHT failed. Data = " + data); - } - } - else if (getFuture.data() == null) { - // OK as nothing is set at the moment - log.trace("Get invalidationTimestamp from DHT returns null. That is ok for the startup."); + FutureGet getFuture = p2pNode.getData(getInvalidatedLocationKey(locationKey)); + getFuture.addListener(new BaseFutureListener() { + @Override + public void operationComplete(BaseFuture future) throws Exception { + if (getFuture.isSuccess()) { + Data data = getFuture.data(); + if (data != null && data.object() instanceof Long) { + final Object object = data.object(); + Platform.runLater(() -> { + Long timeStamp = (Long) object; + log.trace("Get invalidationTimestamp from DHT was successful. TimeStamp=" + + timeStamp); + invalidationTimestamp.set(timeStamp); + }); } else { - log.error("Get invalidationTimestamp from DHT failed with reason:" + getFuture.failedReason()); + log.error("Get invalidationTimestamp from DHT failed. Data = " + data); } } - - @Override - public void exceptionCaught(Throwable t) throws Exception { - log.error("Get invalidationTimestamp from DHT failed with exception:" + t.getMessage()); - t.printStackTrace(); + else if (getFuture.data() == null) { + // OK as nothing is set at the moment + log.trace("Get invalidationTimestamp from DHT returns null. That is ok for the startup."); } - }); - } catch (IOException | ClassNotFoundException e) { - log.error("Get invalidationTimestamp from DHT failed with exception:" + e.getMessage()); - e.printStackTrace(); - } + else { + log.error("Get invalidationTimestamp from DHT failed with reason:" + getFuture.failedReason()); + } + } + + @Override + public void exceptionCaught(Throwable t) throws Exception { + log.error("Get invalidationTimestamp from DHT failed with exception:" + t.getMessage()); + t.printStackTrace(); + } + }); } private Number160 getInvalidatedLocationKey(Number160 locationKey) { diff --git a/src/main/java/io/bitsquare/msg/P2PNode.java b/src/main/java/io/bitsquare/msg/P2PNode.java index 779ca5ff33..dfbe7ebef4 100644 --- a/src/main/java/io/bitsquare/msg/P2PNode.java +++ b/src/main/java/io/bitsquare/msg/P2PNode.java @@ -139,39 +139,37 @@ public class P2PNode { /////////////////////////////////////////////////////////////////////////////////////////// // The data and the domain are protected by that key pair. - public FuturePut putDomainProtectedData(Number160 locationKey, Data data) - throws IOException, ClassNotFoundException { + public FuturePut putDomainProtectedData(Number160 locationKey, Data data) { data.protectEntry(keyPair); final Number160 ownerKeyHash = Utils.makeSHAHash(keyPair.getPublic().getEncoded()); return peerDHT.put(locationKey).data(data).keyPair(keyPair).domainKey(ownerKeyHash).protectDomain().start(); } // No protection, everybody can write. - public FuturePut putData(Number160 locationKey, Data data) throws IOException, ClassNotFoundException { + public FuturePut putData(Number160 locationKey, Data data) { return peerDHT.put(locationKey).data(data).start(); } // Not public readable. Only users with the public key of the peer who stored the data can read that data - public FutureGet getDomainProtectedData(Number160 locationKey, PublicKey publicKey) - throws IOException, ClassNotFoundException { + public FutureGet getDomainProtectedData(Number160 locationKey, PublicKey publicKey) { final Number160 ownerKeyHash = Utils.makeSHAHash(publicKey.getEncoded()); return peerDHT.get(locationKey).domainKey(ownerKeyHash).start(); } // No protection, everybody can read. - public FutureGet getData(Number160 locationKey) throws IOException, ClassNotFoundException { + public FutureGet getData(Number160 locationKey) { return peerDHT.get(locationKey).start(); } // No domain protection, but entry protection - public FuturePut addProtectedData(Number160 locationKey, Data data) throws IOException, ClassNotFoundException { + public FuturePut addProtectedData(Number160 locationKey, Data data) { data.protectEntry(keyPair); log.trace("addProtectedData with contentKey " + data.hash().toString()); return peerDHT.add(locationKey).data(data).keyPair(keyPair).start(); } // No domain protection, but entry protection - public FutureRemove removeFromDataMap(Number160 locationKey, Data data) throws IOException, ClassNotFoundException { + public FutureRemove removeFromDataMap(Number160 locationKey, Data data) { Number160 contentKey = data.hash(); log.trace("removeFromDataMap with contentKey " + contentKey.toString()); return peerDHT.remove(locationKey).contentKey(contentKey).keyPair(keyPair).start(); @@ -242,7 +240,7 @@ public class P2PNode { else { log.error("peerDHT is null"); } - } catch (IOException | ClassNotFoundException e) { + } catch (IOException e) { e.printStackTrace(); log.error(e.toString()); } @@ -275,7 +273,7 @@ public class P2PNode { if (peerDHT != null && !storedPeerAddress.equals(peerDHT.peerAddress())) { try { storePeerAddress(); - } catch (IOException | ClassNotFoundException e) { + } catch (IOException e) { e.printStackTrace(); log.error(e.toString()); } @@ -284,7 +282,7 @@ public class P2PNode { }, checkIfIPChangedPeriod, checkIfIPChangedPeriod); } - private FuturePut storePeerAddress() throws IOException, ClassNotFoundException { + private FuturePut storePeerAddress() throws IOException { Number160 locationKey = Utils.makeSHAHash(keyPair.getPublic().getEncoded()); Data data = new Data(peerDHT.peerAddress()); return putDomainProtectedData(locationKey, data); diff --git a/src/main/java/io/bitsquare/trade/Trade.java b/src/main/java/io/bitsquare/trade/Trade.java index 6e52eaa481..12de10b78c 100644 --- a/src/main/java/io/bitsquare/trade/Trade.java +++ b/src/main/java/io/bitsquare/trade/Trade.java @@ -65,7 +65,7 @@ public class Trade implements Serializable { // When serialized those transient properties are not instantiated, so we instantiate them in the getters at first // access. Only use the accessor not the private field. - // TODO use ObjectPropertys instead of BooleanProperty + // TODO use ObjectProperties instead of BooleanProperty transient private BooleanProperty _payoutTxChanged; transient private BooleanProperty _contractChanged; transient private ObjectProperty _depositTx; diff --git a/src/main/java/io/bitsquare/trade/TradeManager.java b/src/main/java/io/bitsquare/trade/TradeManager.java index a15a30735f..75d10be3a0 100644 --- a/src/main/java/io/bitsquare/trade/TradeManager.java +++ b/src/main/java/io/bitsquare/trade/TradeManager.java @@ -45,13 +45,13 @@ import com.google.bitcoin.core.Coin; import com.google.bitcoin.core.Transaction; import com.google.bitcoin.utils.Fiat; -import java.io.IOException; - import java.util.HashMap; import java.util.Map; import javax.inject.Inject; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableMap; @@ -88,6 +88,7 @@ public class TradeManager { // the latest pending trade private Trade currentPendingTrade; + final StringProperty featureNotImplementedWarning = new SimpleStringProperty(); /////////////////////////////////////////////////////////////////////////////////////////// @@ -106,17 +107,17 @@ public class TradeManager { this.cryptoFacade = cryptoFacade; Object offersObject = persistence.read(this, "offers"); - if (offersObject instanceof HashMap) { + if (offersObject instanceof Map) { offers.putAll((Map) offersObject); } Object pendingTradesObject = persistence.read(this, "pendingTrades"); - if (pendingTradesObject instanceof HashMap) { + if (pendingTradesObject instanceof Map) { pendingTrades.putAll((Map) pendingTradesObject); } Object closedTradesObject = persistence.read(this, "closedTrades"); - if (closedTradesObject instanceof HashMap) { + if (closedTradesObject instanceof Map) { closedTrades.putAll((Map) closedTradesObject); } @@ -192,7 +193,7 @@ public class TradeManager { } } - private void addOffer(Offer offer) throws IOException { + private void addOffer(Offer offer) { if (offers.containsKey(offer.getId())) log.error("An offer with the id " + offer.getId() + " already exists. "); @@ -395,12 +396,9 @@ public class TradeManager { persistPendingTrades(); } else { - // For usability tests we don't want to crash - //TODO move to gui package - /* Popups.openWarningPopup("Sorry, you cannot continue. You have restarted the application in the meantime - . " + - - "Interruption of the trade process is not supported yet. Will need more time to be implemented.");*/ + featureNotImplementedWarning.set("Sorry, you cannot continue. You have restarted the application in the " + + "meantime. Interruption of the trade process is not supported yet. Will need more time to be " + + "implemented."); } } @@ -459,6 +457,15 @@ public class TradeManager { } + /////////////////////////////////////////////////////////////////////////////////////////// + // Setters + /////////////////////////////////////////////////////////////////////////////////////////// + + public void setFeatureNotImplementedWarning(String featureNotImplementedWarning) { + this.featureNotImplementedWarning.set(featureNotImplementedWarning); + } + + /////////////////////////////////////////////////////////////////////////////////////////// // Getters /////////////////////////////////////////////////////////////////////////////////////////// @@ -479,6 +486,13 @@ public class TradeManager { return currentPendingTrade; } + public String getFeatureNotImplementedWarning() { + return featureNotImplementedWarning.get(); + } + + public StringProperty featureNotImplementedWarningProperty() { + return featureNotImplementedWarning; + } /////////////////////////////////////////////////////////////////////////////////////////// // Private diff --git a/src/main/java/io/bitsquare/trade/protocol/createoffer/tasks/BroadCastOfferFeeTx.java b/src/main/java/io/bitsquare/trade/protocol/createoffer/tasks/BroadCastOfferFeeTx.java index 9b71c47fbe..37bc8dcafe 100644 --- a/src/main/java/io/bitsquare/trade/protocol/createoffer/tasks/BroadCastOfferFeeTx.java +++ b/src/main/java/io/bitsquare/trade/protocol/createoffer/tasks/BroadCastOfferFeeTx.java @@ -21,7 +21,6 @@ import io.bitsquare.btc.WalletFacade; import io.bitsquare.trade.handlers.FaultHandler; import io.bitsquare.trade.handlers.ResultHandler; -import com.google.bitcoin.core.InsufficientMoneyException; import com.google.bitcoin.core.Transaction; import com.google.common.util.concurrent.FutureCallback; @@ -59,9 +58,6 @@ public class BroadCastOfferFeeTx { faultHandler.onFault("Offer fee payment failed with an exception.", t); } }); - } catch (InsufficientMoneyException e) { - faultHandler.onFault( - "Offer fee payment failed because there is insufficient money in the trade wallet.", e); } catch (Throwable t) { faultHandler.onFault("Offer fee payment failed because an exception occurred.", t); } diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java index 1cff712fc2..36216588f8 100644 --- a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java +++ b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/BuyerAcceptsOfferProtocol.java @@ -347,7 +347,7 @@ public class BuyerAcceptsOfferProtocol { state = State.SetupListenerForBlockChainConfirmation; SetupListenerForBlockChainConfirmation.run(this::onResultSetupListenerForBlockChainConfirmation, - this::onFault, trade.getDepositTx(), listener); + trade.getDepositTx(), listener); } public void onResultSetupListenerForBlockChainConfirmation() { diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java index 6ebf3a808b..3aae8fcbd6 100644 --- a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java +++ b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SendSignedPayoutTx.java @@ -51,7 +51,7 @@ public class SendSignedPayoutTx { log.trace("Run task"); try { Coin offererPaybackAmount = tradeAmount.add(collateral); - Coin takerPaybackAmount = collateral; + @SuppressWarnings("UnnecessaryLocalVariable") Coin takerPaybackAmount = collateral; Pair result = walletFacade.offererCreatesAndSignsPayoutTx( depositTransactionId, offererPaybackAmount, takerPaybackAmount, takerPayoutAddress, tradeId); diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java index d658e9efd4..5d0dd4a5f5 100644 --- a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java +++ b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SetupListenerForBlockChainConfirmation.java @@ -17,7 +17,6 @@ package io.bitsquare.trade.protocol.trade.offerer.tasks; -import io.bitsquare.trade.handlers.ExceptionHandler; import io.bitsquare.trade.handlers.ResultHandler; import io.bitsquare.trade.protocol.trade.offerer.BuyerAcceptsOfferProtocolListener; @@ -30,7 +29,7 @@ import org.slf4j.LoggerFactory; public class SetupListenerForBlockChainConfirmation { private static final Logger log = LoggerFactory.getLogger(SetupListenerForBlockChainConfirmation.class); - public static void run(ResultHandler resultHandler, ExceptionHandler exceptionHandler, + public static void run(ResultHandler resultHandler, Transaction depositTransaction, BuyerAcceptsOfferProtocolListener listener) { log.trace("Run task"); //TODO diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java index 71b0239421..40877a31e7 100644 --- a/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java +++ b/src/main/java/io/bitsquare/trade/protocol/trade/offerer/tasks/SignAndPublishDepositTx.java @@ -24,6 +24,8 @@ import com.google.bitcoin.core.Transaction; import com.google.common.util.concurrent.FutureCallback; +import org.jetbrains.annotations.NotNull; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,7 +57,7 @@ public class SignAndPublishDepositTx { } @Override - public void onFailure(Throwable t) { + public void onFailure(@NotNull Throwable t) { log.error("offererSignAndPublishTx faultHandler.onFault:" + t); exceptionHandler.onError(t); } diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java b/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java index 976a0a5cf4..acfc9b1db6 100644 --- a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java +++ b/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/PayTakeOfferFee.java @@ -25,6 +25,8 @@ import com.google.bitcoin.core.Transaction; import com.google.common.util.concurrent.FutureCallback; +import org.jetbrains.annotations.NotNull; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +45,7 @@ public class PayTakeOfferFee { } @Override - public void onFailure(Throwable t) { + public void onFailure(@NotNull Throwable t) { log.error("Take offer fee paid faultHandler.onFault with exception: " + t); exceptionHandler.onError( new Exception("Take offer fee paid faultHandler.onFault with exception: " + t)); diff --git a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java b/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java index b95487bf3c..f1eee155a5 100644 --- a/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java +++ b/src/main/java/io/bitsquare/trade/protocol/trade/taker/tasks/SignAndPublishPayoutTx.java @@ -26,6 +26,8 @@ import com.google.bitcoin.core.Utils; import com.google.common.util.concurrent.FutureCallback; +import org.jetbrains.annotations.NotNull; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,7 +63,7 @@ public class SignAndPublishPayoutTx { } @Override - public void onFailure(Throwable t) { + public void onFailure(@NotNull Throwable t) { log.error("Exception at takerSignsAndSendsTx " + t); exceptionHandler.onError(t); } diff --git a/src/main/java/io/bitsquare/util/DSAKeyUtil.java b/src/main/java/io/bitsquare/util/DSAKeyUtil.java index 681907c232..49b9fb6f2e 100755 --- a/src/main/java/io/bitsquare/util/DSAKeyUtil.java +++ b/src/main/java/io/bitsquare/util/DSAKeyUtil.java @@ -40,8 +40,7 @@ public class DSAKeyUtil { try { final KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA"); keyGen.initialize(1024); - KeyPair generatedKeyPair = keyGen.genKeyPair(); - return generatedKeyPair; + return keyGen.genKeyPair(); } catch (NoSuchAlgorithmException e) { log.error(e.toString()); }