Commit graph

10243 commits

Author SHA1 Message Date
lusarz
ba0437e6b0
Refactor FilterWindow - remove redundant interfaces 2019-11-19 18:50:17 +01:00
Chris Beams
1a2461fcdf
Upgrade Gradle Shadow plugin from 4.0.2 => 5.2.0
After the upgrade from Gradle 4.10.2 to 5.6.4 in commit 5fe71fa0a,
all of Bisq's shadowJar tasks started failing Gradle's incremental build
checks. This meant that repeated invocations of `gradle build` went from
a handful of seconds to more than a minute, because shadowJar tasks had
to be re-executed on every build.

For example, with --info enabled, one would see entries like this in the
build output:

    > Task :seednode:shadowJar
    Custom actions are attached to task ':seednode:shadowJar'.
    Caching disabled for task ':seednode:shadowJar' because:
      Caching has not been enabled for the task
    Task ':seednode:shadowJar' is not up-to-date because:
      Output property 'archiveFile' file [...]libs/seednode.jar has changed.

This problem was solved by in johnrengelman/shadow#524 and made
available in the project's recent 5.0.2 release. This patch simply bumps
the shadow plugin version to that value, and gets us back to snappy
incremental builds, e.g.:

    $ gradle build

    BUILD SUCCESSFUL in 7s
2019-11-19 18:05:14 +01:00
Julian Knutsen
a8139f3a04
Remove HashmapChangedListener::onBatch operations
Now that the only user of this interface has been removed, go ahead
and delete it. This is a partial revert of
f5d75c4f60 that includes the code that was
added into ProposalService that subscribed to the P2PDataStore.
2019-11-19 08:37:40 -08:00
Julian Knutsen
a50e59f7eb
ProposalService::onProtectedDataRemoved signals listeners once on batch removes
#3143 identified an issue that tempProposals listeners were being
signaled once for each item that was removed during the P2PDataStore
operation that expired old TempProposal objects. Some of the listeners
are very expensive (ProposalListPresentation::updateLists()) which results
in large UI performance issues.

Now that the infrastructure is in place to receive updates from the
P2PDataStore in a batch, the ProposalService can apply all of the removes
received from the P2PDataStore at once. This results in only 1 onChanged()
callback for each listener.

The end result is that updateLists() is only called once and the performance
problems are reduced.

This removes the need for #3148 and those interfaces will be removed in
the next patch.
2019-11-19 08:37:39 -08:00
Julian Knutsen
eae641ee73
Update removeExpiredEntries to remove all items in a batch
This will cause HashMapChangedListeners to receive just one onRemoved()
call for the expire work instead of multiple onRemoved() calls for each
item.

This required a bit of updating for the remove validation in tests so
that it correctly compares onRemoved with multiple items.
2019-11-19 08:37:39 -08:00
Julian Knutsen
489b25aa13
Change removeFromMapAndDataStore to signal listeners at the end in a batch
All current users still call this one-at-a-time. But, it gives the ability
for the expire code path to remove in a batch.
2019-11-19 08:37:38 -08:00
Julian Knutsen
4f08588717
[REFACTOR] removeFromMapAndDataStore can operate on Collections
Minor performance overhead for constructing MapEntry and Collections
of one element, but keeps the code cleaner and all removes can still
use the same logic to remove from map, delete from data store, signal
listeners, etc.

The MapEntry type is used instead of Pair since it will require less
operations when this is eventually used in the removeExpiredEntries path.
2019-11-19 08:37:38 -08:00
Julian Knutsen
b281566e14
[REFACTOR] HashMapListener::onAdded/onRemoved
Previously, this interface was called each time an item was changed. This
required listeners to understand performance implications of multiple
adds or removes in a short time span.

Instead, give each listener the ability to process a list of added or
removed entrys which can help them avoid performance issues.

This patch is just a refactor. Each listener is called once for each
ProtectedStorageEntry. Future patches will change this.
2019-11-19 08:37:38 -08:00
Julian Knutsen
3bd67bab05
[TESTS] Clean up 'Analyze Code' warnings
Remove unused imports and clean up some access modifiers now that
the final test structure is complete
2019-11-19 08:30:24 -08:00
Julian Knutsen
617585d859
[PR COMMENTS] Make maxSequenceNumberBeforePurge final
Instead of using a subclass that overwrites a value, utilize Guice
to inject the real value of 10000 in the app and let the tests overwrite
it with their own.
2019-11-19 08:30:24 -08:00
Bernard Labno
37918f5df7
Sort existing gradle-witness.gradle
This should make comparison in future much easier.
2019-11-19 17:28:59 +01:00
Justin Carter
80fda1ec2c
Inject CoinFormatter via BTC_FORMATTER_KEY 2019-11-19 15:54:18 +01:00
Niyi Dada
8cfe221bbf
Fix formatting 2019-11-19 15:19:14 +01:00
Niyi Dada
07119470ff
Broke merit text setting to 2 lines. 2019-11-19 15:15:00 +01:00
Justin Carter
68a988b3a8
Remove dead code 2019-11-19 14:24:30 +01:00
Justin Carter
cb8873fa6d
Move BsqFormatter and ImmutableCoinFormatter under .coin package 2019-11-19 14:23:18 +01:00
Justin Carter
d23ae558e7
Rename BSFormatter to ImmutableCoinFormatter 2019-11-19 14:11:01 +01:00
Justin Carter
ed97f7a9e5
Use interface instead of class name for CoinFormatter 2019-11-19 14:00:22 +01:00
Justin Carter
d10683e192
Extract CoinFormatter interface 2019-11-19 12:30:31 +01:00
Justin Carter
2f7a924792
Remove dead code from BSFormatter 2019-11-19 12:18:10 +01:00
Florian Reimair
b0c68e0b5a
Adjust monitor timeout
Observed, that a timeout of one minute works better than
the original 90 seconds.
2019-11-19 12:12:09 +01:00
Florian Reimair
debb94f0a6
Add RefundAgent messages to monitor
Add the relatively new RefundAgent message to the monitor.
2019-11-19 12:10:55 +01:00
Florian Reimair
97586ff8dd
Fixed monitor market API query
The format of the market API response changed. Formerly,
there has been one line, now it is pretty print json.
2019-11-19 12:01:09 +01:00
Florian Reimair
edefcdb368
Monitor selects a price node randomly
Up until now, the monitor always chose the price nodes
in their configured order. This resulted in querying
always the same node and thus, create a bigger system
load for this very node. Only in case of a failure,
the monitor moved on to another node.

Shuffling the list of nodes prior to querying provides
at least some load balancing for the price nodes.
2019-11-19 11:48:58 +01:00
Florian Reimair
74b84159ca
Price monitor is more resilient against timeouts
Recenty, a price node got removed. Unfortunately, this node
has been the first in the list of configured price nodes in
the monitor configuration.

A misplaced catch block caused the loop to stop instead of
trying the next configured price node in the list.
2019-11-19 11:45:01 +01:00
Florian Reimair
cf575966dc
Updated price node list for monitor 2019-11-19 11:44:21 +01:00
Christoph Atteneder
95257b10f9
Refactor of FilterWindow - eliminate duplicates (#3616)
* Extract setupFieldFromList method in FilterWindow

* Extract readAsPaymentAccountFiltersList method in FilterWindow

* Extract setupFieldFromPaymentAccountFiltersList method in FilterWindow

* Reformat sendButton handler in FilterWindow
2019-11-19 10:39:59 +01:00
Christoph Atteneder
8c8c7117d3
Refactorings for api support (#3611)
* Remove trailing spaces

* Add toProtoTradeStatistics2 method

API will use getTradeStatistics and expect TradeStatistics2 not
PersistableNetworkPayload

* Add CreateOfferService class

* Remove commented out code

* User weaker access, add final

* Add getRandomOfferId method

* Add getSellerSecurityDeposit method

* Add getEstimatedFeeAndTxSize method

- Rename estimateTxSize to updateEstimatedFeeAndTxSize
- Add getEstimatedFeeAndTxSize method to CreateOfferService
- Add dependent methods and fields

* Use methods from createOfferService

- Use getBuyerSecurityDepositAsCoin and getSellerSecurityDepositAsCoin
from CreateOfferService

* Use txFeeFromFeeService from createOfferService

- Use getEstimatedFeeAndTxSize from CreateOfferService for
txFeeFromFeeService

* Use getPriceAsLong from createOfferService

* Use marketPriceMarginParam from createOfferService

* Pass useMarketBasedPriceValue to getPriceAsLong

* Use getMaxTradeLimit from createOfferService

* Use createAndGetOffer from createOfferService

* Remove unused fields

* Add createOfferService, remove unused params

* Use weaker access

* Add null checks

* Add log of params, Cleanup

* Remove unused fields

* Use weaker access

* Remove trivial methods

* Remove trivial methods, rename methods

* Sort params for offer as they are used

* Use getReservedFundsForOffer from createOfferService

* Add MakerFeeProvider

* Adjust to new super class params

* Remove sellerSecurityDeposit field, refactor placeOffer

* Adjust tests to new params
2019-11-19 09:49:38 +01:00
Christoph Atteneder
30b1f0229b
Reduce bs formatter interface (#3253)
* Extract FormattingUtils from BSFormatter

All formatting related functions that are depended on by core and
desktop jars are extracted to the new class FormattingUtils.

* Remove dead Code from BSFormatter

* Move Currency related helpers out of BSFormatter to CurrencyUtils

* Move functions that only have 1 call-site out of BSFormatter

Make them private instance functions at call site to minimize
dependencies.
2019-11-19 09:44:41 +01:00
Justin Carter
cfaa23effc
Move functions that only have 1 call-site out of BSFormatter
Make them private instance functions at call site to minimize
dependencies.
2019-11-19 09:24:06 +01:00
Justin Carter
dc741984ce
Move Currency related helpers out of BSFormatter to CurrencyUtils 2019-11-19 09:24:05 +01:00
Justin Carter
06c2fa5ea0
Remove dead Code from BSFormatter 2019-11-19 09:24:05 +01:00
Justin Carter
df6812a4c9
Extract FormattingUtils from BSFormatter
All formatting related functions that are depended on by core and
desktop jars are extracted to the new class FormattingUtils.
2019-11-19 09:23:57 +01:00
Christoph Atteneder
e157ac3121
Merge pull request #3630 from devinbileck/bump-javafx-version
Bump javafx version to 11.0.2
2019-11-19 09:07:12 +01:00
Christoph Atteneder
ad0cfd288e
Merge pull request #3631 from devinbileck/fix-package.bat
Fix package.bat version parsing
2019-11-19 08:58:05 +01:00
Devin Bileck
3f91f60cd3
Fix package.bat version parsing
The package.bat script parses the first 3 tokens of the version string
to determine the file version. This is done to strip "-SNAPSHOT" from
the version string since the file version can only contain a numeric
version number.
2019-11-18 23:36:40 -08:00
Devin Bileck
8f6f05be56
Bump javafx version to 11.0.2
Aside from various fixes and improvements, it appears that this
should resolve #2279, as fixed in
https://bugs.openjdk.java.net/browse/JDK-8210411

Reference:
https://github.com/javafxports/openjdk-jfx/blob/jfx-11/doc-files/release-notes-11.0.1.md
https://github.com/javafxports/openjdk-jfx/blob/jfx-11/doc-files/release-notes-11.0.2.md
2019-11-18 23:28:38 -08:00
Christoph Atteneder
906a2526e0
Merge pull request #3624 from rafaelpac/tooltip-colon
Add colon after "Payment method" on tooltip
2019-11-18 16:03:03 +01:00
Christoph Atteneder
7c83230724
Merge pull request #3625 from rafaelpac/account-validation-bug
[BUGFIX] Account validation comparing user trade limit with MAX amount of offer
2019-11-18 16:00:01 +01:00
Christoph Atteneder
ec5e2b76d4
Avoid unchecked casts/assignments/calls (#3626)
* Don't extend ActivatableViewAndModel when the model is empty

Remove the no-arg constructor from ActivatableViewAndModel, which sets
a dummy Activatable singleton as the model. (Since the model type param
can't be checked at runtime, improper use of the constructor could cause
heap pollution.)

Instead, extend 'ActivatableView<R, Void>' consistently, as other views
without a model currently do.

* Improve type safety of the fluent interface of Overlay<T>

Refactor all the unchecked casts from Overlay<T> to T into a single
private cast() method. Also add a runtime type check to the constructor
to prevent creation of window objects of the form "A extends Overlay<B>"
for unrelated A & B, as such casts would then subvert the type system.

* Improve type safety of ProtoUtil.collectionToProto(Collection)

Add a Class<T> parameter to the method, in order to avoid an unchecked
cast to the Message type T. The cast was wrapped in a try-catch block,
which is useless due to erasure, so use Class.cast(..) instead.

* Avoid raw types to prevent unchecked casts in Log.java

Add missing ILoggingEvent type arg to local variable declarations.

* Avoid unchecked casts when deserializing JSON using Gson

* Fix unchecked casts in views due to raw chart point types

Add missing 'Number' coord type args to some XYChart.(Data|Series) &
AreaChart declarations, and avoid passing them as generic varargs, in
order to eliminate some more unchecked cast warnings.

Also simplify OfferBookChartView.updateChartData() by unboxing the x-
coordinate of each (buy & sell) datapoint.

* Avoid raw type bounds in class declarations to fix unchecked warnings

Make sure the generic classes MutableOfferView & AgentRegistrationView
don't use raw bounds for their associated view models, as that leads to
unchecked assignments from the model fields further down.

* Fix some remaining suppressed unchecked casts in the UI logic

(This still leaves a few more which are hard to avoid.)

* Fix a few remaining unsuppressed unchecked warnings
2019-11-18 15:41:23 +01:00
ghubstan
dd8fd30e7c
Set use standby mode to false on non Win, OSX desktops 2019-11-18 11:30:35 -03:00
Christoph Atteneder
18fc573196
Merge pull request #3623 from wiz/add-blocknotify-script
Add missing blocknotify.sh script and README instructions
2019-11-18 15:14:00 +01:00
Christoph Atteneder
69398caa0c
Merge pull request #3609 from julianknutsen/fix-mailbox-key-check
(13/13) [BUGFIX] Validate Entry.receiversPubKey when adding a MailboxPayload
2019-11-18 15:10:11 +01:00
Christoph Atteneder
b078e92664
Merge pull request #3584 from julianknutsen/entry-stubs-test
(8/8) Clean up integration tests now that Entrys are mockable
2019-11-18 12:24:31 +01:00
Christoph Atteneder
f8372f454f
Merge pull request #3583 from julianknutsen/entry-oo
(7/8) Develop APIs for ProtectedStorageEntry to enable testing and code refactoring
2019-11-18 12:21:02 +01:00
Christoph Atteneder
874e5251f4
Merge pull request #3582 from julianknutsen/refactor-refresh-ttl
(6/8) Remove mutating functions of ProtectedStorageEntry
2019-11-18 11:39:20 +01:00
Christoph Atteneder
b38c695a86
Merge pull request #3568 from julianknutsen/manual-clock-in-tests
(5/8) Test P2PDataStore expiration code and make testing time sensitive code easier.
2019-11-18 11:31:19 +01:00
Christoph Atteneder
fe1dd20b35
Merge pull request #3558 from julianknutsen/update-duplicate-behavior
(4/8) Update behavior of add/remove/refresh on duplicate sequence numbers
2019-11-18 11:01:51 +01:00
Christoph Atteneder
d484617385
Merge pull request #3557 from julianknutsen/refactor-add-remove-refresh
(3/8) [REFACTOR] P2PDataStore::add/remove/refresh
2019-11-18 10:49:50 +01:00
Christoph Atteneder
60f02e9923
Merge pull request #3556 from julianknutsen/fix-remove-bug
(2/8) [BUGFIX] Don't try and remove() if addMailboxData() fails
2019-11-18 10:21:33 +01:00