Revert "Support for open JDK 20 by updating dependencies"

This reverts commit 5923a34ef9.
This commit is contained in:
woodser 2023-07-11 09:57:22 -04:00
parent 8b7a6945b2
commit c4898a8ec0
257 changed files with 1875 additions and 1479 deletions

View File

@ -17,10 +17,10 @@ jobs:
- uses: actions/checkout@v3
with:
lfs: true
- name: Set up JDK 20
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '20'
java-version: '11'
distribution: 'adopt'
cache: gradle
- name: Build with Gradle

View File

@ -35,13 +35,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up JDK 20
uses: actions/setup-java@v3
with:
java-version: '20'
distribution: 'adopt'
cache: gradle
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2

View File

@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Bounty explanation
uses: peter-evans/create-or-update-comment@v3
uses: peter-evans/create-or-update-comment@v2
if: github.event.label.name == '💰bounty'
with:
token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -10,7 +10,7 @@ buildscript {
classpath 'com.google.gradle:osdetector-gradle-plugin:1.7.3'
classpath 'com.github.johnrengelman:shadow:8.1.1'
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.6.3'
classpath 'com.gradle:gradle-enterprise-gradle-plugin:3.13.4' // added for windows build verification-metadata.xml error
classpath 'com.gradle:gradle-enterprise-gradle-plugin:3.12.4' // added for windows build verification-metadata.xml error
}
}
@ -46,8 +46,8 @@ configure(subprojects) {
fontawesomefxMaterialdesignfontVersion = '2.0.26-9.1.2'
grpcVersion = '1.42.1'
gsonVersion = '2.8.5'
guavaVersion = '32.1.1-jre'
guiceVersion = '7.0.0'
guavaVersion = '30.1.1-jre'
guiceVersion = '4.2.2'
moneroJavaVersion = '0.7.16'
httpclient5Version = '5.0'
hamcrestVersion = '2.2'

View File

@ -17,11 +17,12 @@
package haveno.common;
import com.google.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Singleton;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import lombok.extern.slf4j.Slf4j;
// Helps configure listener objects that are run by the `UserThread` each second
// and can do per second, per minute and delayed second actions. Also detects when we were in standby, and logs it.

View File

@ -17,15 +17,16 @@
package haveno.common.crypto;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.security.KeyPair;
import javax.annotation.Nullable;
import javax.crypto.SecretKey;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.crypto.SecretKey;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.security.KeyPair;
@Getter
@EqualsAndHashCode
@Slf4j

View File

@ -18,11 +18,15 @@
package haveno.common.crypto;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import haveno.common.config.Config;
import haveno.common.file.FileUtil;
import static haveno.common.util.Preconditions.checkDir;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.SecretKey;
import javax.inject.Named;
import javax.inject.Singleton;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@ -44,10 +48,8 @@ import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.RSAPublicKeySpec;
import javax.crypto.SecretKey;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static haveno.common.util.Preconditions.checkDir;
/**
* KeyStorage uses password protection to save a symmetric key in PKCS#12 format.

View File

@ -17,12 +17,13 @@
package haveno.common.file;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Singleton

View File

@ -17,9 +17,7 @@
package haveno.common.persistence;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.Timer;
import haveno.common.UserThread;
import haveno.common.app.DevEnv;
@ -32,9 +30,13 @@ import haveno.common.file.FileUtil;
import haveno.common.handlers.ResultHandler;
import haveno.common.proto.persistable.PersistableEnvelope;
import haveno.common.proto.persistable.PersistenceProtoResolver;
import haveno.common.util.GcUtil;
import static haveno.common.util.Preconditions.checkDir;
import haveno.common.util.SingleThreadExecutorUtils;
import haveno.common.util.GcUtil;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.inject.Named;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@ -49,9 +51,9 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import static com.google.common.base.Preconditions.checkNotNull;
import static haveno.common.util.Preconditions.checkDir;
/**
* Responsible for reading persisted data and writing it on disk. We read usually only at start-up and keep data in RAM.

View File

@ -19,7 +19,6 @@ package haveno.core.account.sign;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Charsets;
import com.google.inject.Inject;
import haveno.common.UserThread;
import haveno.common.crypto.CryptoException;
import haveno.common.crypto.Hash;
@ -35,6 +34,12 @@ import haveno.network.p2p.BootstrapListener;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.storage.P2PDataStorage;
import haveno.network.p2p.storage.persistence.AppendOnlyDataStoreService;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
import javax.inject.Inject;
import java.math.BigInteger;
import java.security.PublicKey;
import java.security.SignatureException;
@ -52,10 +57,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.Stack;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
@Slf4j
public class SignedWitnessService {

View File

@ -17,16 +17,17 @@
package haveno.core.account.sign;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.config.Config;
import haveno.common.persistence.PersistenceManager;
import haveno.network.p2p.storage.P2PDataStorage;
import haveno.network.p2p.storage.payload.PersistableNetworkPayload;
import haveno.network.p2p.storage.persistence.MapStoreService;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SignedWitnessStorageService extends MapStoreService<SignedWitnessStore, PersistableNetworkPayload> {

View File

@ -18,8 +18,6 @@
package haveno.core.account.witness;
import com.google.common.annotations.VisibleForTesting;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import haveno.common.UserThread;
import haveno.common.crypto.CryptoException;
import haveno.common.crypto.Hash;
@ -53,6 +51,12 @@ import haveno.network.p2p.BootstrapListener;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.storage.P2PDataStorage;
import haveno.network.p2p.storage.persistence.AppendOnlyDataStoreService;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
import javax.inject.Inject;
import java.math.BigInteger;
import java.security.PublicKey;
import java.time.Clock;
@ -70,10 +74,8 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
import static com.google.common.base.Preconditions.checkNotNull;
@Slf4j
public class AccountAgeWitnessService {

View File

@ -17,15 +17,16 @@
package haveno.core.account.witness;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.config.Config;
import haveno.common.persistence.PersistenceManager;
import haveno.network.p2p.storage.payload.PersistableNetworkPayload;
import haveno.network.p2p.storage.persistence.HistoricalDataStoreService;
import java.io.File;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
@Slf4j
public class AccountAgeWitnessStorageService extends HistoricalDataStoreService<AccountAgeWitnessStore> {
private static final String FILE_NAME = "AccountAgeWitnessStore";

View File

@ -18,8 +18,6 @@
package haveno.core.alert;
import com.google.common.base.Charsets;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.app.DevEnv;
import haveno.common.config.Config;
import haveno.common.crypto.KeyRing;
@ -28,18 +26,22 @@ import haveno.network.p2p.P2PService;
import haveno.network.p2p.storage.HashMapChangedListener;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import haveno.network.p2p.storage.payload.ProtectedStoragePayload;
import java.math.BigInteger;
import java.security.SignatureException;
import java.util.Collection;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
import static org.bitcoinj.core.Utils.HEX;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javax.inject.Named;
import java.math.BigInteger;
import java.security.SignatureException;
import java.util.Collection;
import static org.bitcoinj.core.Utils.HEX;
public class AlertManager {
private static final Logger log = LoggerFactory.getLogger(AlertManager.class);

View File

@ -22,8 +22,6 @@ import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.app.DevEnv;
import haveno.common.config.Config;
import haveno.common.crypto.KeyRing;
@ -39,21 +37,25 @@ import haveno.network.p2p.network.MessageListener;
import haveno.network.p2p.network.NetworkNode;
import haveno.network.p2p.peers.keepalive.messages.Ping;
import haveno.network.p2p.peers.keepalive.messages.Pong;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import java.math.BigInteger;
import java.security.SignatureException;
import java.util.Random;
import java.util.UUID;
import java.util.function.Consumer;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javax.annotation.Nullable;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Utils;
import static org.bitcoinj.core.Utils.HEX;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PrivateNotificationManager implements MessageListener {
private static final Logger log = LoggerFactory.getLogger(PrivateNotificationManager.class);

View File

@ -17,9 +17,6 @@
package haveno.core.api;
import static com.google.common.base.Preconditions.checkState;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.config.Config;
import haveno.common.crypto.IncorrectPasswordException;
import haveno.common.crypto.KeyRing;
@ -27,6 +24,12 @@ import haveno.common.crypto.KeyStorage;
import haveno.common.file.FileUtil;
import haveno.common.persistence.PersistenceManager;
import haveno.common.util.ZipUtils;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.File;
import java.io.InputStream;
import java.io.PipedInputStream;
@ -34,9 +37,8 @@ import java.io.PipedOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import static com.google.common.base.Preconditions.checkState;
/**
* Manages the account state. A created account must have a password which encrypts

View File

@ -17,8 +17,6 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.app.Version;
import haveno.common.config.Config;
import haveno.common.crypto.IncorrectPasswordException;
@ -47,6 +45,15 @@ import haveno.core.trade.statistics.TradeStatistics3;
import haveno.core.trade.statistics.TradeStatisticsManager;
import haveno.core.xmr.MoneroNodeSettings;
import haveno.proto.grpc.NotificationMessage;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import monero.common.MoneroRpcConnection;
import monero.wallet.model.MoneroDestination;
import monero.wallet.model.MoneroTxWallet;
import org.bitcoinj.core.Transaction;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
@ -56,12 +63,6 @@ import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import monero.common.MoneroRpcConnection;
import monero.wallet.model.MoneroDestination;
import monero.wallet.model.MoneroTxWallet;
import org.bitcoinj.core.Transaction;
/**
* Provides high level interface to functionality of core Haveno features.

View File

@ -17,12 +17,13 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
@Slf4j
public class CoreContext {

View File

@ -17,17 +17,11 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.config.Config;
import haveno.common.crypto.KeyRing;
import haveno.common.handlers.ErrorMessageHandler;
import haveno.common.handlers.ResultHandler;
import haveno.core.support.SupportType;
import static haveno.core.support.SupportType.ARBITRATION;
import static haveno.core.support.SupportType.MEDIATION;
import static haveno.core.support.SupportType.REFUND;
import static haveno.core.support.SupportType.TRADE;
import haveno.core.support.dispute.arbitration.arbitrator.Arbitrator;
import haveno.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
import haveno.core.support.dispute.mediation.mediator.Mediator;
@ -38,16 +32,24 @@ import haveno.core.user.User;
import haveno.core.xmr.wallet.XmrWalletService;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import static java.lang.String.format;
import static java.net.InetAddress.getLoopbackAddress;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.ECKey;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import static java.util.Arrays.asList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.ECKey;
import static haveno.core.support.SupportType.ARBITRATION;
import static haveno.core.support.SupportType.MEDIATION;
import static haveno.core.support.SupportType.REFUND;
import static haveno.core.support.SupportType.TRADE;
import static java.lang.String.format;
import static java.net.InetAddress.getLoopbackAddress;
import static java.util.Arrays.asList;
@Singleton
@Slf4j

View File

@ -1,8 +1,5 @@
package haveno.core.api;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import haveno.common.crypto.KeyRing;
import haveno.common.crypto.PubKeyRing;
@ -26,13 +23,18 @@ import haveno.core.trade.TradeManager;
import haveno.core.util.FormattingUtils;
import haveno.core.util.coin.CoinFormatter;
import haveno.core.xmr.wallet.XmrWalletService;
import static java.lang.String.format;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import static com.google.common.base.Preconditions.checkNotNull;
import static java.lang.String.format;
@Singleton

View File

@ -17,16 +17,18 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.BufferedReader;
import static java.io.File.separator;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import static java.io.File.separator;
import static java.lang.String.format;
import static java.lang.System.out;
import lombok.extern.slf4j.Slf4j;
@Singleton
@Slf4j

View File

@ -1,24 +1,18 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.app.DevEnv;
import haveno.common.config.Config;
import haveno.core.trade.HavenoUtils;
import haveno.core.user.Preferences;
import haveno.core.xmr.model.EncryptedConnectionList;
import haveno.core.xmr.nodes.XmrNodes;
import haveno.core.xmr.nodes.XmrNodes.XmrNode;
import haveno.core.xmr.nodes.XmrNodesSetupPreferences;
import haveno.core.xmr.nodes.XmrNodes.XmrNode;
import haveno.core.xmr.setup.DownloadListener;
import haveno.core.xmr.setup.WalletsSetup;
import haveno.network.Socks5ProxyProvider;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.P2PServiceListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.LongProperty;
import javafx.beans.property.ObjectProperty;
@ -38,6 +32,13 @@ import monero.daemon.MoneroDaemonRpc;
import monero.daemon.model.MoneroDaemonInfo;
import monero.daemon.model.MoneroPeer;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Slf4j
@Singleton
public final class CoreMoneroConnectionsService {
@ -554,7 +555,7 @@ public final class CoreMoneroConnectionsService {
// numPeers.set(peers.get().size());
numPeers.set(lastInfo.getNumOutgoingConnections() + lastInfo.getNumIncomingConnections());
peers.set(new ArrayList<MoneroPeer>());
// log recovery message
if (lastErrorTimestamp != null) {
log.info("Successfully fetched daemon info after previous error");

View File

@ -16,22 +16,23 @@
*/
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.config.BaseCurrencyNetwork;
import haveno.common.config.Config;
import haveno.common.util.Utilities;
import haveno.core.trade.HavenoUtils;
import haveno.core.user.Preferences;
import haveno.core.xmr.MoneroNodeSettings;
import lombok.extern.slf4j.Slf4j;
import monero.common.MoneroUtils;
import monero.daemon.MoneroDaemonRpc;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import monero.common.MoneroUtils;
import monero.daemon.MoneroDaemonRpc;
/**
* Start and stop or connect to a local Monero node.

View File

@ -1,16 +1,17 @@
package haveno.core.api;
import com.google.inject.Singleton;
import haveno.core.api.model.TradeInfo;
import haveno.core.support.messages.ChatMessage;
import haveno.core.trade.Trade;
import haveno.proto.grpc.NotificationMessage;
import haveno.proto.grpc.NotificationMessage.NotificationType;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Singleton;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
@Singleton
@Slf4j

View File

@ -17,13 +17,8 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.KeyRing;
import haveno.common.handlers.ErrorMessageHandler;
import static haveno.common.util.MathUtils.exactMultiply;
import static haveno.common.util.MathUtils.roundDoubleToLong;
import static haveno.common.util.MathUtils.scaleUpByPowerOf10;
import haveno.core.locale.CurrencyUtil;
import haveno.core.monetary.CryptoMoney;
import haveno.core.monetary.Price;
@ -32,30 +27,37 @@ import haveno.core.offer.CreateOfferService;
import haveno.core.offer.Offer;
import haveno.core.offer.OfferBookService;
import haveno.core.offer.OfferDirection;
import static haveno.core.offer.OfferDirection.BUY;
import haveno.core.offer.OfferFilterService;
import haveno.core.offer.OfferFilterService.Result;
import haveno.core.offer.OfferUtil;
import haveno.core.offer.OpenOffer;
import haveno.core.offer.OpenOfferManager;
import haveno.core.payment.PaymentAccount;
import static haveno.core.payment.PaymentAccountUtil.isPaymentAccountValidForOffer;
import haveno.core.user.User;
import haveno.core.util.PriceUtil;
import static java.lang.String.format;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Transaction;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Comparator;
import static java.util.Comparator.comparing;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Transaction;
import static haveno.common.util.MathUtils.exactMultiply;
import static haveno.common.util.MathUtils.roundDoubleToLong;
import static haveno.common.util.MathUtils.scaleUpByPowerOf10;
import static haveno.core.offer.OfferDirection.BUY;
import static haveno.core.payment.PaymentAccountUtil.isPaymentAccountValidForOffer;
import static java.lang.String.format;
import static java.util.Comparator.comparing;
@Singleton
@Slf4j

View File

@ -17,18 +17,13 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.asset.Asset;
import haveno.asset.AssetRegistry;
import static haveno.common.config.Config.baseCurrencyNetwork;
import haveno.core.account.witness.AccountAgeWitnessService;
import haveno.core.api.model.PaymentAccountForm;
import haveno.core.api.model.PaymentAccountFormField;
import haveno.core.locale.CryptoCurrency;
import haveno.core.locale.CurrencyUtil;
import static haveno.core.locale.CurrencyUtil.findAsset;
import static haveno.core.locale.CurrencyUtil.getCryptoCurrency;
import haveno.core.locale.TradeCurrency;
import haveno.core.payment.AssetAccount;
import haveno.core.payment.CryptoCurrencyAccount;
@ -37,14 +32,21 @@ import haveno.core.payment.PaymentAccount;
import haveno.core.payment.PaymentAccountFactory;
import haveno.core.payment.payload.PaymentMethod;
import haveno.core.user.User;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.File;
import static java.lang.String.format;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import static haveno.common.config.Config.baseCurrencyNetwork;
import static haveno.core.locale.CurrencyUtil.findAsset;
import static haveno.core.locale.CurrencyUtil.getCryptoCurrency;
import static java.lang.String.format;
@Singleton
@Slf4j

View File

@ -18,8 +18,6 @@
package haveno.core.api;
import com.google.common.math.LongMath;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.api.model.MarketDepthInfo;
import haveno.core.api.model.MarketPriceInfo;
import haveno.core.locale.CurrencyUtil;
@ -29,13 +27,16 @@ import haveno.core.offer.OfferBookService;
import haveno.core.offer.OfferDirection;
import haveno.core.provider.price.PriceFeedService;
import haveno.core.trade.HavenoUtils;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.api;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.handlers.ErrorMessageHandler;
import haveno.common.handlers.ResultHandler;
import haveno.core.offer.Offer;
@ -36,16 +34,20 @@ import haveno.core.trade.protocol.SellerProtocol;
import haveno.core.user.User;
import haveno.core.util.validation.BtcAddressValidator;
import haveno.core.xmr.model.AddressEntry;
import static haveno.core.xmr.model.AddressEntry.Context.TRADE_PAYOUT;
import haveno.core.xmr.wallet.BtcWalletService;
import static java.lang.String.format;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import static haveno.core.xmr.model.AddressEntry.Context.TRADE_PAYOUT;
import static java.lang.String.format;
@Singleton
@Slf4j

View File

@ -20,9 +20,6 @@ package haveno.core.api;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import haveno.common.Timer;
import haveno.common.UserThread;
import haveno.core.api.model.AddressBalanceInfo;
@ -32,22 +29,13 @@ import haveno.core.api.model.XmrBalanceInfo;
import haveno.core.app.AppStartupState;
import haveno.core.user.Preferences;
import haveno.core.util.FormattingUtils;
import static haveno.core.util.ParsingUtils.parseToCoin;
import haveno.core.util.coin.CoinFormatter;
import haveno.core.xmr.Balances;
import haveno.core.xmr.model.AddressEntry;
import haveno.core.xmr.setup.WalletsSetup;
import haveno.core.xmr.wallet.BtcWalletService;
import static haveno.core.xmr.wallet.Restrictions.getMinNonDustOutput;
import haveno.core.xmr.wallet.WalletsManager;
import haveno.core.xmr.wallet.XmrWalletService;
import static java.lang.String.format;
import java.util.List;
import java.util.Optional;
import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import lombok.extern.slf4j.Slf4j;
import monero.wallet.model.MoneroDestination;
import monero.wallet.model.MoneroTxWallet;
@ -59,6 +47,20 @@ import org.bitcoinj.core.TransactionConfidence;
import org.bitcoinj.crypto.KeyCrypterScrypt;
import org.bouncycastle.crypto.params.KeyParameter;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import static haveno.core.util.ParsingUtils.parseToCoin;
import static haveno.core.xmr.wallet.Restrictions.getMinNonDustOutput;
import static java.lang.String.format;
import static java.util.concurrent.TimeUnit.SECONDS;
@Singleton
@Slf4j
class CoreWalletsService {

View File

@ -17,8 +17,6 @@
package haveno.core.app;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.api.CoreMoneroConnectionsService;
import haveno.core.api.CoreNotificationService;
import haveno.network.p2p.BootstrapListener;
@ -30,6 +28,9 @@ import lombok.extern.slf4j.Slf4j;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.monadic.MonadicBinding;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* We often need to wait until network and wallet is ready or other combination of startup states.
* To avoid those repeated checks for the state or setting of listeners on different domains we provide here a

View File

@ -17,13 +17,21 @@
package haveno.core.app;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.config.Config;
import haveno.common.file.FileUtil;
import haveno.common.file.ResourceNotFoundException;
import haveno.common.util.Utilities;
import haveno.core.user.Preferences;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
@ -35,13 +43,6 @@ import java.util.concurrent.CountDownLatch;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import lombok.extern.slf4j.Slf4j;
/**
* Prevents that Haveno gets hibernated from the OS. On OSX there is a tool called caffeinate but it seems it does not

View File

@ -17,7 +17,6 @@
package haveno.core.app;
import com.google.inject.Inject;
import haveno.common.ClockWatcher;
import haveno.common.persistence.PersistenceManager;
import haveno.core.account.sign.SignedWitnessService;
@ -52,6 +51,8 @@ import haveno.core.user.User;
import haveno.core.xmr.Balances;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.mailbox.MailboxMessageService;
import javax.inject.Inject;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;

View File

@ -17,9 +17,6 @@
package haveno.core.app;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import haveno.common.Timer;
import haveno.common.UserThread;
import haveno.common.app.DevEnv;
@ -65,6 +62,23 @@ import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.storage.payload.PersistableNetworkPayload;
import haveno.network.utils.Utils;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.collections.SetChangeListener;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.monadic.MonadicBinding;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
@ -79,19 +93,6 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.collections.SetChangeListener;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.monadic.MonadicBinding;
@Slf4j
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.app;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.UserThread;
import haveno.core.api.CoreMoneroConnectionsService;
import haveno.core.locale.Res;
@ -29,17 +27,20 @@ import haveno.network.p2p.P2PServiceListener;
import haveno.network.p2p.network.CloseConnectionReason;
import haveno.network.p2p.network.Connection;
import haveno.network.p2p.network.ConnectionListener;
import java.util.function.Consumer;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.monadic.MonadicBinding;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.function.Consumer;
@Singleton
@Slf4j
public class P2PNetworkSetup {

View File

@ -17,18 +17,20 @@
package haveno.core.app;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import haveno.common.config.Config;
import haveno.common.file.FileUtil;
import haveno.common.handlers.ErrorMessageHandler;
import static haveno.common.util.Preconditions.checkDir;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import javax.annotation.Nullable;
import lombok.extern.slf4j.Slf4j;
import static haveno.common.util.Preconditions.checkDir;
@Slf4j
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.app;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.UserThread;
import haveno.common.config.Config;
import haveno.core.api.CoreContext;
@ -32,8 +30,6 @@ import haveno.core.xmr.exceptions.InvalidHostException;
import haveno.core.xmr.exceptions.RejectedTxException;
import haveno.core.xmr.setup.WalletsSetup;
import haveno.core.xmr.wallet.WalletsManager;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
@ -42,10 +38,10 @@ import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import monero.daemon.model.MoneroDaemonInfo;
import org.bitcoinj.core.RejectMessage;
import org.bitcoinj.core.VersionMessage;
import org.bitcoinj.store.BlockStoreException;
@ -53,6 +49,12 @@ import org.bitcoinj.store.ChainFileLockedException;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.monadic.MonadicBinding;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
@Slf4j
@Singleton
public class WalletAppSetup {

View File

@ -17,11 +17,12 @@
package haveno.core.app.misc;
import com.google.inject.Inject;
import haveno.common.app.Version;
import haveno.common.config.Config;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
@Slf4j
public abstract class AppSetup {
protected final Config config;

View File

@ -17,7 +17,6 @@
package haveno.core.app.misc;
import com.google.inject.Inject;
import haveno.common.config.Config;
import haveno.common.persistence.PersistenceManager;
import haveno.common.proto.persistable.PersistedDataHost;
@ -32,11 +31,13 @@ import haveno.network.p2p.network.Connection;
import haveno.network.p2p.network.ConnectionListener;
import haveno.network.p2p.peers.PeerManager;
import haveno.network.p2p.storage.P2PDataStorage;
import java.util.ArrayList;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import java.util.ArrayList;
@Slf4j
public class AppSetupWithP2P extends AppSetup {
protected final P2PService p2PService;

View File

@ -17,7 +17,6 @@
package haveno.core.app.misc;
import com.google.inject.Inject;
import haveno.common.config.Config;
import haveno.core.account.sign.SignedWitnessService;
import haveno.core.account.witness.AccountAgeWitnessService;
@ -28,6 +27,8 @@ import haveno.network.p2p.peers.PeerManager;
import haveno.network.p2p.storage.P2PDataStorage;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
@Slf4j
public class AppSetupWithP2PAndDAO extends AppSetupWithP2P {

View File

@ -17,9 +17,6 @@
package haveno.core.filter;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.app.DevEnv;
import haveno.common.app.Version;
import haveno.common.config.Config;
@ -38,6 +35,16 @@ import haveno.network.p2p.P2PServiceListener;
import haveno.network.p2p.network.BanFilter;
import haveno.network.p2p.storage.HashMapChangedListener;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Sha256Hash;
import org.bouncycastle.util.encoders.Base64;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import java.lang.reflect.Method;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
@ -51,14 +58,9 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javax.annotation.Nullable;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.Sha256Hash;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.bitcoinj.core.Utils.HEX;
import org.bouncycastle.util.encoders.Base64;
/**
* We only support one active filter, if we receive multiple we use the one with the more recent creationDate.

View File

@ -17,16 +17,17 @@
package haveno.core.network;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.config.Config;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.network.BanFilter;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Named;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class CoreBanFilter implements BanFilter {

View File

@ -20,8 +20,6 @@ package haveno.core.network.p2p.inventory;
import com.google.common.base.Enums;
import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.app.Version;
import haveno.common.config.Config;
import haveno.common.proto.network.NetworkEnvelope;
@ -39,10 +37,13 @@ import haveno.network.p2p.network.Statistic;
import haveno.network.p2p.peers.PeerManager;
import haveno.network.p2p.storage.P2PDataStorage;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Named;
import java.lang.management.ManagementFactory;
import java.util.HashMap;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class GetInventoryRequestHandler implements MessageListener {

View File

@ -17,15 +17,16 @@
package haveno.core.network.p2p.inventory;
import com.google.inject.Inject;
import haveno.common.handlers.ErrorMessageHandler;
import haveno.core.network.p2p.inventory.model.InventoryItem;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.network.NetworkNode;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class GetInventoryRequestManager {

View File

@ -17,11 +17,13 @@
package haveno.core.network.p2p.seed;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.config.Config;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.seed.SeedNodeRepository;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
@ -33,7 +35,6 @@ import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
// If a new BaseCurrencyNetwork type gets added we need to add the resource file for it as well!
@Slf4j

View File

@ -18,15 +18,16 @@
package haveno.core.notifications;
import com.google.common.base.Charsets;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.security.NoSuchAlgorithmException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.security.NoSuchAlgorithmException;
@Slf4j
@Singleton

View File

@ -18,14 +18,15 @@
package haveno.core.notifications;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.Arrays;
import javax.annotation.Nullable;
import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.Arrays;
@Data
@Slf4j
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.notifications;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@ -27,15 +25,12 @@ import com.google.common.util.concurrent.MoreExecutors;
import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import haveno.common.UserThread;
import haveno.common.app.Version;
import haveno.common.config.Config;
import haveno.common.util.Utilities;
import haveno.core.user.Preferences;
import haveno.network.http.HttpClient;
import java.util.UUID;
import java.util.function.Consumer;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import lombok.Getter;
@ -43,6 +38,13 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Hex;
import org.jetbrains.annotations.NotNull;
import javax.inject.Named;
import java.util.UUID;
import java.util.function.Consumer;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
@Slf4j
@Singleton
public class MobileNotificationService {

View File

@ -17,10 +17,11 @@
package haveno.core.notifications;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
@Slf4j
@Singleton
public class MobileNotificationValidator {

View File

@ -17,8 +17,6 @@
package haveno.core.notifications.alerts;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.locale.Res;
import haveno.core.notifications.MobileMessage;
import haveno.core.notifications.MobileMessageType;
@ -29,11 +27,14 @@ import haveno.core.support.dispute.mediation.MediationManager;
import haveno.core.support.dispute.refund.RefundManager;
import haveno.core.support.messages.ChatMessage;
import haveno.network.p2p.P2PService;
import java.util.UUID;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.UUID;
@Slf4j
@Singleton
public class DisputeMsgEvents {

View File

@ -17,18 +17,19 @@
package haveno.core.notifications.alerts;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.locale.Res;
import haveno.core.notifications.MobileMessage;
import haveno.core.notifications.MobileMessageType;
import haveno.core.notifications.MobileNotificationService;
import haveno.core.offer.OpenOffer;
import haveno.core.offer.OpenOfferManager;
import java.util.UUID;
import javafx.collections.ListChangeListener;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.UUID;
@Slf4j
@Singleton
public class MyOfferTakenEvents {

View File

@ -17,8 +17,6 @@
package haveno.core.notifications.alerts;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.PubKeyRingProvider;
import haveno.core.locale.Res;
import haveno.core.notifications.MobileMessage;
@ -26,11 +24,14 @@ import haveno.core.notifications.MobileMessageType;
import haveno.core.notifications.MobileNotificationService;
import haveno.core.trade.Trade;
import haveno.core.trade.TradeManager;
import javafx.collections.ListChangeListener;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javafx.collections.ListChangeListener;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.notifications.alerts.market;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.KeyRing;
import haveno.common.util.MathUtils;
import haveno.core.locale.CurrencyUtil;
@ -36,9 +34,12 @@ import haveno.core.provider.price.MarketPrice;
import haveno.core.provider.price.PriceFeedService;
import haveno.core.user.User;
import haveno.core.util.FormattingUtils;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.List;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.notifications.alerts.price;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.util.MathUtils;
import haveno.core.locale.CurrencyUtil;
import haveno.core.locale.Res;
@ -33,6 +31,9 @@ import haveno.core.user.User;
import haveno.core.util.FormattingUtils;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
@Slf4j
@Singleton
public class PriceAlert {

View File

@ -17,8 +17,6 @@
package haveno.core.offer;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.app.Version;
import haveno.common.crypto.PubKeyRingProvider;
import haveno.common.util.Utilities;
@ -40,12 +38,15 @@ import haveno.core.xmr.wallet.Restrictions;
import haveno.core.xmr.wallet.XmrWalletService;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Singleton

View File

@ -17,8 +17,6 @@
package haveno.core.offer;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import common.utils.GenUtils;
import haveno.common.UserThread;
import haveno.common.config.Config;
@ -36,6 +34,15 @@ import haveno.network.p2p.BootstrapListener;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.storage.HashMapChangedListener;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import monero.common.MoneroConnectionManagerListener;
import monero.common.MoneroRpcConnection;
import monero.daemon.model.MoneroKeyImageSpentStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
import java.util.Collection;
import java.util.LinkedList;
@ -43,12 +50,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import monero.common.MoneroConnectionManagerListener;
import monero.common.MoneroRpcConnection;
import monero.daemon.model.MoneroKeyImageSpentStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Handles storage and retrieval of offers.

View File

@ -17,8 +17,6 @@
package haveno.core.offer;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.app.Version;
import haveno.core.account.witness.AccountAgeWitnessService;
import haveno.core.filter.FilterManager;
@ -30,15 +28,18 @@ import haveno.core.user.Preferences;
import haveno.core.user.User;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import javafx.collections.SetChangeListener;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javafx.collections.SetChangeListener;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
@Slf4j
@Singleton

View File

@ -17,15 +17,9 @@
package haveno.core.offer;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.app.Capabilities;
import haveno.common.app.Version;
import haveno.common.util.MathUtils;
import static haveno.common.util.MathUtils.roundDoubleToLong;
import static haveno.common.util.MathUtils.scaleUpByPowerOf10;
import haveno.common.util.Utilities;
import haveno.core.account.witness.AccountAgeWitnessService;
import haveno.core.filter.FilterManager;
@ -34,16 +28,8 @@ import haveno.core.locale.Res;
import haveno.core.monetary.Price;
import haveno.core.monetary.TraditionalMoney;
import haveno.core.monetary.Volume;
import static haveno.core.offer.OfferPayload.ACCOUNT_AGE_WITNESS_HASH;
import static haveno.core.offer.OfferPayload.CAPABILITIES;
import static haveno.core.offer.OfferPayload.F2F_CITY;
import static haveno.core.offer.OfferPayload.F2F_EXTRA_INFO;
import static haveno.core.offer.OfferPayload.PAY_BY_MAIL_EXTRA_INFO;
import static haveno.core.offer.OfferPayload.REFERRAL_ID;
import static haveno.core.offer.OfferPayload.XMR_AUTO_CONF;
import static haveno.core.offer.OfferPayload.XMR_AUTO_CONF_ENABLED_VALUE;
import haveno.core.payment.F2FAccount;
import haveno.core.payment.PayByMailAccount;
import haveno.core.payment.F2FAccount;
import haveno.core.payment.PaymentAccount;
import haveno.core.provider.price.MarketPrice;
import haveno.core.provider.price.PriceFeedService;
@ -52,18 +38,34 @@ import haveno.core.user.AutoConfirmSettings;
import haveno.core.user.Preferences;
import haveno.core.util.coin.CoinFormatter;
import haveno.core.xmr.wallet.BtcWalletService;
import static haveno.core.xmr.wallet.Restrictions.getMaxBuyerSecurityDepositAsPercent;
import static haveno.core.xmr.wallet.Restrictions.getMinBuyerSecurityDepositAsPercent;
import haveno.network.p2p.P2PService;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.core.TransactionInput;
import org.bitcoinj.core.TransactionOutput;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.core.TransactionInput;
import org.bitcoinj.core.TransactionOutput;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static haveno.common.util.MathUtils.roundDoubleToLong;
import static haveno.common.util.MathUtils.scaleUpByPowerOf10;
import static haveno.core.offer.OfferPayload.ACCOUNT_AGE_WITNESS_HASH;
import static haveno.core.offer.OfferPayload.CAPABILITIES;
import static haveno.core.offer.OfferPayload.PAY_BY_MAIL_EXTRA_INFO;
import static haveno.core.offer.OfferPayload.F2F_CITY;
import static haveno.core.offer.OfferPayload.F2F_EXTRA_INFO;
import static haveno.core.offer.OfferPayload.REFERRAL_ID;
import static haveno.core.offer.OfferPayload.XMR_AUTO_CONF;
import static haveno.core.offer.OfferPayload.XMR_AUTO_CONF_ENABLED_VALUE;
import static haveno.core.xmr.wallet.Restrictions.getMaxBuyerSecurityDepositAsPercent;
import static haveno.core.xmr.wallet.Restrictions.getMinBuyerSecurityDepositAsPercent;
/**
* This class holds utility methods for creating, editing and taking an Offer.

View File

@ -17,8 +17,6 @@
package haveno.core.offer;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import common.utils.GenUtils;
import haveno.common.Timer;
import haveno.common.UserThread;
@ -74,22 +72,8 @@ import haveno.network.p2p.P2PService;
import haveno.network.p2p.SendDirectMessageListener;
import haveno.network.p2p.peers.Broadcaster;
import haveno.network.p2p.peers.PeerManager;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javax.annotation.Nullable;
import lombok.Getter;
import monero.common.MoneroConnectionManagerListener;
import monero.common.MoneroRpcConnection;
@ -106,6 +90,24 @@ import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkNotNull;
public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMessageListener, PersistedDataHost {
private static final Logger log = LoggerFactory.getLogger(OpenOfferManager.class);
@ -800,13 +802,13 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
resultHandler.handleResult(null);
return;
}
// get offer reserve amount
BigInteger offerReserveAmount = openOffer.getOffer().getReserveAmount();
// handle split output offer
if (openOffer.isSplitOutput()) {
// get tx to fund split output
MoneroTxWallet splitOutputTx = findSplitOutputFundingTx(openOffers, openOffer);
if (openOffer.getScheduledTxHashes() == null && splitOutputTx != null) {
@ -839,7 +841,7 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
}
}
} else {
// handle sufficient balance
boolean hasSufficientBalance = xmrWalletService.getWallet().getUnlockedBalance(0).compareTo(offerReserveAmount) >= 0;
if (hasSufficientBalance) {
@ -849,7 +851,7 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
scheduleOfferWithEarliestTxs(openOffers, openOffer);
}
}
// handle result
resultHandler.handleResult(null);
} catch (Exception e) {

View File

@ -17,11 +17,7 @@
package haveno.core.offer;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.util.MathUtils;
import static haveno.common.util.MathUtils.roundDoubleToLong;
import static haveno.common.util.MathUtils.scaleUpByPowerOf10;
import haveno.core.locale.CurrencyUtil;
import haveno.core.monetary.CryptoMoney;
import haveno.core.monetary.Price;
@ -31,14 +27,20 @@ import haveno.core.provider.price.MarketPrice;
import haveno.core.provider.price.PriceFeedService;
import haveno.network.p2p.BootstrapListener;
import haveno.network.p2p.P2PService;
import javafx.collections.ListChangeListener;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import javafx.collections.ListChangeListener;
import lombok.extern.slf4j.Slf4j;
import static haveno.common.util.MathUtils.roundDoubleToLong;
import static haveno.common.util.MathUtils.scaleUpByPowerOf10;
@Slf4j
@Singleton

View File

@ -17,29 +17,31 @@
package haveno.core.offer.takeoffer;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import haveno.common.taskrunner.Model;
import haveno.core.account.witness.AccountAgeWitnessService;
import haveno.core.monetary.Price;
import haveno.core.monetary.Volume;
import haveno.core.offer.Offer;
import static haveno.core.offer.OfferDirection.SELL;
import haveno.core.offer.OfferUtil;
import haveno.core.payment.PaymentAccount;
import haveno.core.provider.price.PriceFeedService;
import haveno.core.trade.HavenoUtils;
import haveno.core.util.VolumeUtil;
import haveno.core.xmr.model.XmrAddressEntry;
import static haveno.core.xmr.model.XmrAddressEntry.Context.OFFER_FUNDING;
import haveno.core.xmr.wallet.XmrWalletService;
import java.math.BigInteger;
import java.util.Objects;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
import java.math.BigInteger;
import java.util.Objects;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static haveno.core.offer.OfferDirection.SELL;
import static haveno.core.xmr.model.XmrAddressEntry.Context.OFFER_FUNDING;
@Slf4j
public class TakeOfferModel implements Model {
// Immutable

View File

@ -17,9 +17,10 @@
package haveno.core.payment;
import com.google.inject.Singleton;
import haveno.core.payment.payload.PaymentMethod;
import javax.inject.Singleton;
@Singleton
public class ChargeBackRisk {
public boolean hasChargebackRisk(String id, String currencyCode) {

View File

@ -18,15 +18,16 @@
package haveno.core.payment;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.util.MathUtils;
import haveno.core.trade.HavenoUtils;
import java.math.BigInteger;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigInteger;
@Slf4j
@Singleton
public class TradeLimits {

View File

@ -1,10 +1,11 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public class AdvancedCashValidator extends InputValidator {
private EmailValidator emailValidator;
private RegexValidator regexValidator;

View File

@ -18,10 +18,11 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public final class AustraliaPayidAccountNameValidator extends InputValidator {
@Override
public ValidationResult validate(String input) {

View File

@ -1,10 +1,11 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public class CapitualValidator extends InputValidator {
private final RegexValidator regexValidator;

View File

@ -17,9 +17,10 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.util.validation.MonetaryValidator;
import javax.inject.Inject;
public class FiatVolumeValidator extends MonetaryValidator {
@Override
public double getMinValue() {

View File

@ -1,10 +1,11 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public class InteracETransferAnswerValidator extends InputValidator {
private LengthValidator lengthValidator;
private RegexValidator regexValidator;

View File

@ -1,10 +1,11 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public class InteracETransferQuestionValidator extends InputValidator {
private LengthValidator lengthValidator;
private RegexValidator regexValidator;

View File

@ -17,11 +17,12 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.util.validation.InputValidator;
import org.apache.commons.lang3.StringUtils;
import javax.inject.Inject;
/*
* Interac e-Transfer requires a mail address or Canadian (mobile) phone number
*

View File

@ -17,11 +17,12 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.payment.JapanBankData;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public final class JapanBankAccountNameValidator extends InputValidator
{
@Override

View File

@ -17,11 +17,12 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.payment.JapanBankData;
import haveno.core.util.validation.InputValidator;
import haveno.core.util.validation.RegexValidator;
import javax.inject.Inject;
public final class JapanBankBranchNameValidator extends InputValidator
{
@Override

View File

@ -17,7 +17,6 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.payment.PaymentAccount;
import haveno.core.util.FormattingUtils;
@ -25,6 +24,8 @@ import haveno.core.util.ParsingUtils;
import haveno.core.util.validation.NumberValidator;
import haveno.core.xmr.wallet.Restrictions;
import javax.inject.Inject;
public class SecurityDepositValidator extends NumberValidator {
private PaymentAccount paymentAccount;

View File

@ -17,9 +17,10 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.util.validation.InputValidator;
import javax.inject.Inject;
public final class TransferwiseValidator extends InputValidator {
private final EmailValidator emailValidator;

View File

@ -17,16 +17,17 @@
package haveno.core.payment.validation;
import com.google.inject.Inject;
import haveno.core.locale.Res;
import haveno.core.trade.HavenoUtils;
import haveno.core.util.validation.NumberValidator;
import java.math.BigDecimal;
import java.math.BigInteger;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.Setter;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.math.BigDecimal;
import java.math.BigInteger;
public class XmrValidator extends NumberValidator {
@Nullable

View File

@ -17,7 +17,6 @@
package haveno.core.presentation;
import com.google.inject.Inject;
import haveno.common.UserThread;
import haveno.core.trade.HavenoUtils;
import haveno.core.xmr.Balances;
@ -26,6 +25,8 @@ import javafx.beans.property.StringProperty;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
@Slf4j
public class BalancePresentation {

View File

@ -17,7 +17,6 @@
package haveno.core.presentation;
import com.google.inject.Inject;
import haveno.core.support.dispute.arbitration.ArbitrationManager;
import haveno.core.support.dispute.mediation.MediationManager;
import haveno.core.support.dispute.refund.RefundManager;
@ -27,6 +26,8 @@ import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import lombok.Getter;
import javax.inject.Inject;
public class SupportTicketsPresentation {
@Getter
private final StringProperty numOpenSupportTickets = new SimpleStringProperty();

View File

@ -17,7 +17,6 @@
package haveno.core.presentation;
import com.google.inject.Inject;
import haveno.common.UserThread;
import haveno.core.trade.TradeManager;
import javafx.beans.property.BooleanProperty;
@ -26,6 +25,8 @@ import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import lombok.Getter;
import javax.inject.Inject;
public class TradePresentation {
@Getter
private final StringProperty numPendingTrades = new SimpleStringProperty();

View File

@ -17,8 +17,6 @@
package haveno.core.proto.network;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.proto.ProtobufferException;
import haveno.common.proto.ProtobufferRuntimeException;
import haveno.common.proto.network.NetworkEnvelope;
@ -71,9 +69,12 @@ import haveno.network.p2p.storage.messages.RemoveMailboxDataMessage;
import haveno.network.p2p.storage.payload.MailboxStoragePayload;
import haveno.network.p2p.storage.payload.ProtectedMailboxStorageEntry;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import java.time.Clock;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.time.Clock;
// TODO Use ProtobufferException instead of ProtobufferRuntimeException
@Slf4j
@Singleton

View File

@ -17,9 +17,7 @@
package haveno.core.proto.persistable;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import haveno.common.proto.ProtobufferRuntimeException;
import haveno.common.proto.network.NetworkProtoResolver;
import haveno.common.proto.persistable.NavigationPath;
@ -49,6 +47,9 @@ import haveno.network.p2p.storage.persistence.RemovedPayloadsMap;
import haveno.network.p2p.storage.persistence.SequenceNumberMap;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
// TODO Use ProtobufferException instead of ProtobufferRuntimeException
@Slf4j
@Singleton

View File

@ -17,11 +17,12 @@
package haveno.core.provider;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.network.Socks5ProxyProvider;
import haveno.network.http.HttpClientImpl;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class FeeHttpClient extends HttpClientImpl {

View File

@ -17,13 +17,14 @@
package haveno.core.provider;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.app.Version;
import haveno.network.Socks5ProxyProvider;
import haveno.network.http.HttpClientImpl;
import java.io.IOException;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.io.IOException;
@Singleton
public class MempoolHttpClient extends HttpClientImpl {

View File

@ -17,11 +17,12 @@
package haveno.core.provider;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.network.Socks5ProxyProvider;
import haveno.network.http.HttpClientImpl;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class PriceHttpClient extends HttpClientImpl {

View File

@ -18,15 +18,17 @@
package haveno.core.provider;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import haveno.common.config.Config;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.inject.Named;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ProvidersRepository {

View File

@ -22,7 +22,6 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.UserThread;
import haveno.common.config.Config;
import haveno.core.filter.FilterManager;
@ -30,14 +29,16 @@ import haveno.core.offer.OfferPayload;
import haveno.core.trade.Trade;
import haveno.core.user.Preferences;
import haveno.network.Socks5ProxyProvider;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
import javax.annotation.Nullable;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Coin;
@Slf4j
@Singleton

View File

@ -17,11 +17,12 @@
package haveno.core.support.dispute.arbitration;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.persistence.PersistenceManager;
import haveno.core.support.dispute.DisputeListService;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public final class ArbitrationDisputeListService extends DisputeListService<ArbitrationDisputeList> {

View File

@ -17,17 +17,18 @@
package haveno.core.support.dispute.arbitration.arbitrator;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.config.Config;
import haveno.common.crypto.KeyRing;
import haveno.core.filter.FilterManager;
import haveno.core.support.dispute.agent.DisputeAgentManager;
import haveno.core.user.User;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Singleton

View File

@ -17,12 +17,13 @@
package haveno.core.support.dispute.arbitration.arbitrator;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.filter.FilterManager;
import haveno.core.support.dispute.agent.DisputeAgentService;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

View File

@ -17,11 +17,12 @@
package haveno.core.support.dispute.mediation;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.persistence.PersistenceManager;
import haveno.core.support.dispute.DisputeListService;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public final class MediationDisputeListService extends DisputeListService<MediationDisputeList> {

View File

@ -17,13 +17,14 @@
package haveno.core.support.dispute.mediation.mediator;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.KeyRing;
import haveno.core.filter.FilterManager;
import haveno.core.support.dispute.agent.DisputeAgentManager;
import haveno.core.user.User;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.List;
@Singleton

View File

@ -17,18 +17,19 @@
package haveno.core.support.dispute.mediation.mediator;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.filter.FilterManager;
import haveno.core.support.dispute.agent.DisputeAgentService;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
@Slf4j

View File

@ -17,11 +17,12 @@
package haveno.core.support.dispute.refund;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.persistence.PersistenceManager;
import haveno.core.support.dispute.DisputeListService;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public final class RefundDisputeListService extends DisputeListService<RefundDisputeList> {

View File

@ -17,16 +17,17 @@
package haveno.core.support.dispute.refund.refundagent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.KeyRing;
import haveno.core.filter.FilterManager;
import haveno.core.support.dispute.agent.DisputeAgentManager;
import haveno.core.user.User;
import haveno.network.p2p.storage.payload.ProtectedStorageEntry;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.List;
@Slf4j
@Singleton
public class RefundAgentManager extends DisputeAgentManager<RefundAgent> {

View File

@ -17,12 +17,13 @@
package haveno.core.support.dispute.refund.refundagent;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.filter.FilterManager;
import haveno.core.support.dispute.agent.DisputeAgentService;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

View File

@ -17,8 +17,6 @@
package haveno.core.support.traderchat;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.PubKeyRing;
import haveno.common.crypto.PubKeyRingProvider;
import haveno.core.api.CoreMoneroConnectionsService;
@ -33,11 +31,14 @@ import haveno.core.trade.TradeManager;
import haveno.network.p2p.AckMessageSourceType;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import java.util.List;
import java.util.stream.Collectors;
import javafx.collections.ObservableList;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Singleton
public class TraderChatManager extends SupportManager {

View File

@ -17,7 +17,6 @@
package haveno.core.trade;
import com.google.inject.Inject;
import haveno.common.crypto.PubKeyRing;
import haveno.common.proto.network.NetworkEnvelope;
import haveno.core.trade.messages.TradeMessage;
@ -28,9 +27,11 @@ import haveno.network.p2p.DecryptedMessageWithPubKey;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.mailbox.MailboxMessage;
import haveno.network.p2p.mailbox.MailboxMessageService;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import java.util.List;
//TODO with the redesign of mailbox messages that is not required anymore. We leave it for now as we want to minimize
// changes for the 1.5.0 release but we should clean up afterwards...

View File

@ -17,7 +17,6 @@
package haveno.core.trade;
import com.google.inject.Inject;
import haveno.common.crypto.PubKeyRing;
import haveno.common.proto.network.NetworkEnvelope;
import haveno.core.trade.messages.TradeMessage;
@ -28,9 +27,11 @@ import haveno.network.p2p.DecryptedMessageWithPubKey;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.mailbox.MailboxMessage;
import haveno.network.p2p.mailbox.MailboxMessageService;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import javax.inject.Inject;
import java.util.List;
//TODO with the redesign of mailbox messages that is not required anymore. We leave it for now as we want to minimize
// changes for the 1.5.0 release but we should clean up afterwards...

View File

@ -17,14 +17,23 @@
package haveno.core.trade;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.core.locale.CurrencyUtil;
import haveno.core.locale.Res;
import haveno.core.monetary.CryptoMoney;
import haveno.core.monetary.TraditionalMoney;
import haveno.core.monetary.Volume;
import haveno.core.offer.OpenOffer;
import haveno.core.util.FormattingUtils;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Monetary;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static haveno.core.trade.ClosedTradableUtil.castToTrade;
import static haveno.core.trade.ClosedTradableUtil.getTotalTxFee;
import static haveno.core.trade.ClosedTradableUtil.getTotalVolumeByCurrency;
@ -33,17 +42,10 @@ import static haveno.core.trade.ClosedTradableUtil.isOpenOffer;
import static haveno.core.trade.Trade.DisputeState.DISPUTE_CLOSED;
import static haveno.core.trade.Trade.DisputeState.MEDIATION_CLOSED;
import static haveno.core.trade.Trade.DisputeState.REFUND_REQUEST_CLOSED;
import haveno.core.util.FormattingUtils;
import static haveno.core.util.FormattingUtils.formatPercentagePrice;
import static haveno.core.util.FormattingUtils.formatToPercentWithSymbol;
import static haveno.core.util.VolumeUtil.formatVolume;
import static haveno.core.util.VolumeUtil.formatVolumeWithCode;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.bitcoinj.core.Monetary;
@Slf4j
@Singleton

View File

@ -17,10 +17,8 @@
package haveno.core.trade;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.ImmutableList;
import com.google.inject.Inject;
import common.utils.GenUtils;
import haveno.common.ClockWatcher;
import haveno.common.crypto.KeyRing;
@ -76,6 +74,25 @@ import haveno.network.p2p.DecryptedMessageWithPubKey;
import haveno.network.p2p.NodeAddress;
import haveno.network.p2p.P2PService;
import haveno.network.p2p.network.TorNetworkNode;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.LongProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleLongProperty;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import lombok.Getter;
import lombok.Setter;
import monero.daemon.model.MoneroTx;
import monero.wallet.model.MoneroOutputQuery;
import org.bitcoinj.core.Coin;
import org.bouncycastle.crypto.params.KeyParameter;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.Subscription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
@ -89,23 +106,9 @@ import java.util.UUID;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.LongProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleLongProperty;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javax.annotation.Nullable;
import lombok.Getter;
import lombok.Setter;
import monero.daemon.model.MoneroTx;
import monero.wallet.model.MoneroOutputQuery;
import org.bitcoinj.core.Coin;
import org.bouncycastle.crypto.params.KeyParameter;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.Subscription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
public class TradeManager implements PersistedDataHost, DecryptedDirectMessageListener {
@ -407,7 +410,7 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
for (Trade trade : trades) {
tasks.add(() -> {
try {
// check for duplicate uid
if (!uids.add(trade.getUid())) {
log.warn("Found trade with duplicate uid, skipping. That should never happen. {} {}, uid={}", trade.getClass().getSimpleName(), trade.getId(), trade.getUid());
@ -439,10 +442,10 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
for (Trade trade : trades) {
if (trade.isIdling()) HavenoUtils.submitTask(() -> trade.syncWallet());
}
getObservableList().addListener((ListChangeListener<Trade>) change -> onTradesChanged());
onTradesChanged();
xmrWalletService.setTradeManager(this);
// process after all wallets initialized
@ -470,7 +473,7 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
// notify that persisted trades initialized
persistedTradesInitialized.set(true);
// We do not include failed trades as they should not be counted anyway in the trade statistics
// TODO: remove stats?
Set<Trade> nonFailedTrades = new HashSet<>(closedTradableManager.getClosedTrades());

View File

@ -17,22 +17,24 @@
package haveno.core.trade;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import haveno.common.crypto.KeyRing;
import haveno.common.util.Tuple2;
import static haveno.core.locale.CurrencyUtil.getCurrencyPair;
import static haveno.core.locale.CurrencyUtil.isTraditionalCurrency;
import haveno.core.locale.Res;
import haveno.core.offer.Offer;
import static haveno.core.util.FormattingUtils.formatDurationAsWords;
import haveno.core.xmr.wallet.BtcWalletService;
import static java.lang.String.format;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.Date;
import java.util.Objects;
import javax.annotation.Nullable;
import lombok.extern.slf4j.Slf4j;
import static com.google.common.base.Preconditions.checkNotNull;
import static haveno.core.locale.CurrencyUtil.getCurrencyPair;
import static haveno.core.locale.CurrencyUtil.isTraditionalCurrency;
import static haveno.core.util.FormattingUtils.formatDurationAsWords;
import static java.lang.String.format;
/**
* This class contains trade utility methods.

View File

@ -17,7 +17,6 @@
package haveno.core.trade.protocol;
import com.google.inject.Inject;
import haveno.common.crypto.KeyRing;
import haveno.core.account.witness.AccountAgeWitnessService;
import haveno.core.filter.FilterManager;
@ -34,6 +33,8 @@ import haveno.core.xmr.wallet.XmrWalletService;
import haveno.network.p2p.P2PService;
import lombok.Getter;
import javax.inject.Inject;
@Getter
public class ProcessModelServiceProvider {
private final OpenOfferManager openOfferManager;

Some files were not shown because too many files have changed in this diff Show More