Commit graph

2756 commits

Author SHA1 Message Date
Sean Gilligan
184be16773 Coin: only allocate Coin with zero value once 2022-04-19 15:58:36 +02:00
Sean Gilligan
f75c55fe5a PeerGroup: migrate to BlockchainDownloadEventListener (breaking)
* Deprecate PeerDataEventListener (aggregate of 4 listeners)
* Remove long-deprecated AbstractPeerDataEventListener (4 no-op listeners)
* Add BlockchainDownloadEventListener (aggregate of 2 listeners)
* PeerGroup: replace PeerDataEventListener with BlockchainDownloadEventListener (BREAKING!)
* DownloadProgressTracker: implement BlockchainDownloadEventListener instead of AbstractPeerDataEventListener

This is a breaking change and may require simple, one-line changes to consumers. However, it removes the
long-deprecated AbstractPeerDataEventListener and simplifies the listeners for blockchain downloading.

After another release the deprecated PeerDataEventListener can be removed.
2022-04-19 10:02:10 +02:00
Sean Gilligan
a6433d91b9 Wallet: fix !equals() vs != bug in getTotalSent()
Coin values should be compared with .equals() not == or !=.
2022-04-19 09:16:04 +02:00
Sean Gilligan
7141321c38 Wallet: make fields final where possible 2022-04-18 19:51:48 -07:00
Sean Gilligan
e84fc27cce Transaction: use tx.getOutputSum() in completeTx() 2022-04-18 22:13:21 +02:00
Sean Gilligan
3ea28bfca5 DeterministicKeyChain: make seed final 2022-04-18 12:01:41 +02:00
Sean Gilligan
b411b3f645 DeterministicKeyChain: fix raw use of new Builder() 2022-04-18 11:35:05 +02:00
Sean Gilligan
d19eb764b6 DeterministicKeyChain: remove unnecessary .toString() calls 2022-04-18 11:09:48 +02:00
Sean Gilligan
dc39f1e521 DeterministicKeyChain: use Stream and Predicate to simplify .get*Keys() 2022-04-18 11:00:51 +02:00
Andreas Schildbach
7f41553576 HttpDiscovery: remove the protocol to discover seeds via HTTP 2022-04-17 10:09:20 +02:00
Sean Gilligan
fd7449d7e3 DeterministicKeyChain: simplify protobuf deserialization of DeterministicKey
Use the new `deserialize` and `parent` methods of HDPath to simplify and combine
`path` and `immutablePath` in `fromProtobuf`.
2022-04-17 10:01:50 +02:00
Sean Gilligan
5367df8a7c HDPath: add .parent() method 2022-04-17 09:48:36 +02:00
Sean Gilligan
459df5fed0 DeterministicKeyChain: use new HDPath::ancestors methods 2022-04-17 01:05:30 +02:00
Sean Gilligan
085bf18d01 DeterministicKeyChain: replace iterator with enhanced-for 2022-04-16 23:52:42 +02:00
Sean Gilligan
b57e93cf61 DeterministicKeyChain: replace PeekingIterator with standard Iterator
No features of the PeekingIterator were being used.
2022-04-16 21:26:53 +02:00
Sean Gilligan
309c0e2448 DeterministicKeyChain: improve HDPath deserialization 2022-04-16 21:25:38 +02:00
Sean Gilligan
2b82c27456 CoinSelection: make fields final (minor breaking) 2022-04-16 20:45:58 +02:00
Sean Gilligan
9423d02b4d WalletAppKit: simplify by using the Wallet.loadFromFile() 2022-04-16 00:21:18 +02:00
Sean Gilligan
bb8687f278 Wallet: add WalletFactory parameter to loadFromFile() 2022-04-15 14:56:27 +02:00
Sean Gilligan
9b5223400b NetworkParameters, AbstractBitcoinNetParams: fix JavaDoc warnings 2022-04-14 17:38:04 +02:00
Sean Gilligan
428be7c325 HDPath: add list() getter for interoperability 2022-04-14 15:20:00 +02:00
Sean Gilligan
23e2be1bf6 HDPath: deprecate list constructor
This constructor was used in HDUtils methods that were removed in the previous
commit. The .M(list) and .m(list) factory methods should be used instead.

Also add a mild warning to the (boolean, List) constructor.
2022-04-14 13:38:42 +02:00
Sean Gilligan
ffb19c229c HDUtils: remove deprecated methods
Replacements are in HDPath.
2022-04-14 12:17:27 +02:00
Sean Gilligan
1570946c18 remove unnecessary type info on Collections.emptyList() calls 2022-04-14 10:23:04 +02:00
Sean Gilligan
eede925c96 Wallet: add loadFromFile method that supports WalletTool
* Add `Wallet.loadFromFile` that takes options needed by WalletTool
* Add `Wallet.loadFromFileStream` that supports the extra options
* Update `WalletTool` to use the new `loadFromFile` method
2022-04-12 17:38:19 +02:00
Sean Gilligan
1219e0d7b0 InternalUtils: replace Guava Joiner and Splitter with native JDK equivalent
Also deprecate the old Joiner and Splitter related members of Utils.
2022-04-10 16:20:00 +02:00
Sean Gilligan
76d3dfa8c4 FutureUtils: fix a JavaDoc warning 2022-04-02 11:09:11 +02:00
Sean Gilligan
3c6e7e0b37 WalletAppKit: make walletFactory @Nonnull
This is a minor breaking change. If anyone is calling `setWalletFactory(null)` they
will need to replace it with `setWalletFactory(WalletProtobufSerializer.WalletFactory.DEFAULT)`.

A `checkNotNull` makes sure anyone doing this should discover the problem as early
as possible.
2022-04-01 17:55:40 +02:00
Andreas Schildbach
04a9834e0a WalletProtobufSerializer: declare WalletFactory a @FunctionalInterface 2022-04-01 17:19:11 +02:00
Sean Gilligan
1bfcb827e1 WalletProtobufSerializer: extract wallet constructor reference to WalletFactory::DEFAULT
This makes the default implementation more obvious and easier to
reference. It will also will help us make the WalletFactory member
of WalletAppKit `@Nonnull` in a dependent PR.
2022-04-01 17:06:37 +02:00
Andreas Schildbach
7a5fb9c01d apply "Replace lambda with method reference" refactoring 2022-04-01 16:09:30 +02:00
Sean Gilligan
a2ee754e3a Peer: produce futures via a Stream function chain in downloadDependenciesInternal() 2022-03-31 23:43:00 +02:00
Andreas Schildbach
58e725b969 Peer: make GetDataRequest a subclass of CompletableFuture to simplify 2022-03-31 23:38:56 +02:00
Sean Gilligan
e86a77c557 Peer: construct getdata a little bit more functionally and atomically in downloadDependencies()
Build GetDataMessage in a private method.
2022-03-31 19:29:06 +02:00
Andreas Schildbach
4a6219bf57 X509Utils: handle CertificateParsingException in getDisplayNameFromCertificate() if certificate has no SubjectAltName extension
This fix makes the method compatible with JDK 18. Previously, it relied
on the method returning `null` if the extension is not present.
2022-03-31 12:17:00 +02:00
Sean Gilligan
4be4a3f9f8 WalletProtobufSerializer: update obsolete comment
writeWallet and readWallet must have been static methods at one time,
but they are instance methods now. Update this misleading comment.
2022-03-30 23:12:28 +02:00
Sean Gilligan
32cf0004fd ListenableCompletableFuture: fix error in comment, rename lambda parameter
* Fix a comment that said `not-null` where it should have said `null`
* Further clarify that same comment
* Rename lambda parameter from `val` to `value`
2022-03-30 22:45:31 +02:00
Sean Gilligan
9e53b621a1 Peer: rename needToRequest to txIdsToRequest
This Set is used to filter out duplicate transactions from the rootTx
inputs and desperately needs a better name.
2022-03-30 22:38:38 +02:00
Sean Gilligan
64e07b6b9d convert ImmutableMap to unmodifiable map
This converts all remaining instances of ImmutableMap to JDK unmodifiable map.
2022-03-30 17:15:21 +02:00
Sean Gilligan
fb9b6f16b3 convert ImmutableSet to unmodifiable set
This converts all remaining instances of ImmutableSet to JDK unmodifiable set.
2022-03-30 16:46:26 +02:00
Sean Gilligan
1343776286 convert ImmutableList to unmodifiable list
This converts all remaining instances of ImmutableList (except those
in core tests) to JDK unmodifiable list.
2022-03-30 16:33:22 +02:00
Sean Gilligan
6d7dd7919f Peer: convert getDataFutures() to concurrent queue
* Convert the declared type of `getDataFutures` to `Queue` - we do not
  need random access, so `Queue` is better interface to use for this data structure.
* Convert the implementing class to `ConcurrentLinkedQueue` this provides
  the concurrency we need and is theoretically/likely more efficient than
  `CopyOnWriteArrayList`.
2022-03-30 16:19:12 +02:00
Sean Gilligan
ae71aeb6ea DownloadProgressTracker: use CompletableFuture internally 2022-03-30 14:18:23 +02:00
Sean Gilligan
061dfd45a1 FutureUtils: move ThrowingSupplier from ListenableCompletableFuture to here 2022-03-30 12:15:38 +02:00
Sean Gilligan
d0db98a462 ListenableCompletableFuture: remove supplyAsync() 2022-03-30 12:09:21 +02:00
Sean Gilligan
63d9b07c80 PaymentSession: use CompletableFuture internally 2022-03-30 12:05:53 +02:00
Andreas Schildbach
037ade176f BtcFormat: fix several string comparisons 2022-03-26 12:08:44 +01:00
Andreas Schildbach
7f38154244 apply "make inner classes static" refactoring 2022-03-26 11:32:49 +01:00
Sean Gilligan
091fdd9791 PaymentSession: proper future-style error handling for sendPayment()
This is a breaking change, but the existing code is not using futures properly and
fixing this is worth the breakage.

* Instead of returning `null`, return a failed future
* Instead of throwing errors, return failed futures
2022-03-25 19:33:08 +01:00
Sean Gilligan
8f3ac79030 Wallet: remove deprecated methods
Remove all deprecated methods except one deprecated constructor that is
used in a unit test and marked as @VisibleForTesting.
2022-03-25 11:11:52 +01:00