Skip to content

Commit ca678c1

Browse files
authored
Merge pull request #125 from marschall/fix-90
Clean up Monetary implementation
2 parents aa667bd + 7678bcc commit ca678c1

File tree

1 file changed

+28
-40
lines changed

1 file changed

+28
-40
lines changed

src/main/java/javax/money/Monetary.java

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.Collection;
2222
import java.util.List;
2323
import java.util.Locale;
24-
import java.util.Objects;
2524
import java.util.Optional;
2625
import java.util.Set;
2726
import java.util.logging.Level;
@@ -40,8 +39,11 @@
4039
public final class Monetary {
4140
/**
4241
* The used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance.
42+
*
43+
* @return the used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance,
44+
* never {@code null}
4345
*/
44-
private static MonetaryCurrenciesSingletonSpi MONETARY_CURRENCIES_SINGLETON_SPI() {
46+
private static MonetaryCurrenciesSingletonSpi monetaryCurrenciesSingletonSpi() {
4547
try {
4648
return Optional.ofNullable(Bootstrap
4749
.getService(MonetaryCurrenciesSingletonSpi.class)).orElseGet(
@@ -83,6 +85,9 @@ private static MonetaryAmountsSingletonQuerySpi monetaryAmountsSingletonQuerySpi
8385

8486
/**
8587
* The used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance.
88+
*
89+
* @return the used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance,
90+
* never {@code null}
8691
*/
8792
private static MonetaryRoundingsSingletonSpi monetaryRoundingsSingletonSpi() {
8893
try {
@@ -108,8 +113,7 @@ private Monetary() {
108113
* @return the set of provider names, never {@code null}.
109114
*/
110115
public static Set<String> getRoundingProviderNames() {
111-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
112-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
116+
return monetaryRoundingsSingletonSpi()
113117
.getProviderNames();
114118
}
115119

@@ -119,8 +123,7 @@ public static Set<String> getRoundingProviderNames() {
119123
* @return the chained list of provider names, never {@code null}.
120124
*/
121125
public static List<String> getDefaultRoundingProviderChain() {
122-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
123-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
126+
return monetaryRoundingsSingletonSpi()
124127
.getDefaultProviderChain();
125128
}
126129

@@ -133,8 +136,7 @@ public static List<String> getDefaultRoundingProviderChain() {
133136
* @return the (shared) default rounding instance.
134137
*/
135138
public static MonetaryRounding getDefaultRounding() {
136-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
137-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
139+
return monetaryRoundingsSingletonSpi()
138140
.getDefaultRounding();
139141
}
140142

@@ -151,8 +153,7 @@ public static MonetaryRounding getDefaultRounding() {
151153
* rounding, never {@code null}.
152154
*/
153155
public static MonetaryRounding getRounding(CurrencyUnit currencyUnit, String... providers) {
154-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
155-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
156+
return monetaryRoundingsSingletonSpi()
156157
.getRounding(currencyUnit, providers);
157158
}
158159

@@ -169,8 +170,7 @@ public static MonetaryRounding getRounding(CurrencyUnit currencyUnit, String...
169170
* {@link javax.money.spi.RoundingProviderSpi} instance.
170171
*/
171172
public static MonetaryRounding getRounding(String roundingName, String... providers) {
172-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
173-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
173+
return monetaryRoundingsSingletonSpi()
174174
.getRounding(roundingName, providers);
175175
}
176176

@@ -184,8 +184,7 @@ public static MonetaryRounding getRounding(String roundingName, String... provid
184184
* {@link javax.money.spi.RoundingProviderSpi} instance.
185185
*/
186186
public static MonetaryRounding getRounding(RoundingQuery roundingQuery) {
187-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
188-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
187+
return monetaryRoundingsSingletonSpi()
189188
.getRounding(roundingQuery);
190189
}
191190

@@ -200,8 +199,7 @@ public static MonetaryRounding getRounding(RoundingQuery roundingQuery) {
200199
* {@link javax.money.spi.RoundingProviderSpi} instance.
201200
*/
202201
public static boolean isRoundingAvailable(String roundingName, String... providers) {
203-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
204-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
202+
return monetaryRoundingsSingletonSpi()
205203
.isRoundingAvailable(roundingName, providers);
206204
}
207205

@@ -217,8 +215,7 @@ public static boolean isRoundingAvailable(String roundingName, String... provide
217215
* {@link javax.money.spi.RoundingProviderSpi} instance.
218216
*/
219217
public static boolean isRoundingAvailable(CurrencyUnit currencyUnit, String... providers) {
220-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
221-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
218+
return monetaryRoundingsSingletonSpi()
222219
.isRoundingAvailable(currencyUnit, providers);
223220
}
224221

@@ -232,8 +229,7 @@ public static boolean isRoundingAvailable(CurrencyUnit currencyUnit, String... p
232229
* {@link javax.money.spi.RoundingProviderSpi} instance.
233230
*/
234231
public static boolean isRoundingAvailable(RoundingQuery roundingQuery) {
235-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
236-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
232+
return monetaryRoundingsSingletonSpi()
237233
.isRoundingAvailable(roundingQuery);
238234
}
239235

@@ -246,8 +242,7 @@ public static boolean isRoundingAvailable(RoundingQuery roundingQuery) {
246242
* @return all {@link javax.money.MonetaryRounding} instances matching the query, never {@code null}.
247243
*/
248244
public static Collection<MonetaryRounding> getRoundings(RoundingQuery roundingQuery) {
249-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
250-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
245+
return monetaryRoundingsSingletonSpi()
251246
.getRoundings(roundingQuery);
252247
}
253248

@@ -260,8 +255,7 @@ public static Collection<MonetaryRounding> getRoundings(RoundingQuery roundingQu
260255
* @return the set of custom rounding ids, never {@code null}.
261256
*/
262257
public static Set<String> getRoundingNames(String... providers) {
263-
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
264-
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
258+
return monetaryRoundingsSingletonSpi()
265259
.getRoundingNames(providers);
266260
}
267261

@@ -384,8 +378,7 @@ public static boolean isAvailable(MonetaryAmountFactoryQuery query) {
384378
* @throws UnknownCurrencyException if no such currency exists.
385379
*/
386380
public static CurrencyUnit getCurrency(String currencyCode, String... providers) {
387-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
388-
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
381+
return monetaryCurrenciesSingletonSpi()
389382
.getCurrency(currencyCode, providers);
390383
}
391384

@@ -401,8 +394,7 @@ public static CurrencyUnit getCurrency(String currencyCode, String... providers)
401394
* @throws UnknownCurrencyException if no such currency exists.
402395
*/
403396
public static CurrencyUnit getCurrency(Locale locale, String... providers) {
404-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
405-
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
397+
return monetaryCurrenciesSingletonSpi()
406398
.getCurrency(locale, providers);
407399
}
408400

@@ -418,7 +410,7 @@ public static CurrencyUnit getCurrency(Locale locale, String... providers) {
418410
* @throws UnknownCurrencyException if no such currency exists.
419411
*/
420412
public static Set<CurrencyUnit> getCurrencies(Locale locale, String... providers) {
421-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
413+
return Optional.ofNullable(monetaryCurrenciesSingletonSpi()).orElseThrow(
422414
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
423415
.getCurrencies(locale, providers);
424416
}
@@ -433,7 +425,7 @@ public static Set<CurrencyUnit> getCurrencies(Locale locale, String... providers
433425
* would return a result for the given code.
434426
*/
435427
public static boolean isCurrencyAvailable(String code, String... providers) {
436-
return Objects.nonNull(MONETARY_CURRENCIES_SINGLETON_SPI()) && MONETARY_CURRENCIES_SINGLETON_SPI().isCurrencyAvailable(code, providers);
428+
return monetaryCurrenciesSingletonSpi().isCurrencyAvailable(code, providers);
437429
}
438430

439431
/**
@@ -446,7 +438,7 @@ public static boolean isCurrencyAvailable(String code, String... providers) {
446438
* result containing a currency with the given code.
447439
*/
448440
public static boolean isCurrencyAvailable(Locale locale, String... providers) {
449-
return Objects.nonNull(MONETARY_CURRENCIES_SINGLETON_SPI()) && MONETARY_CURRENCIES_SINGLETON_SPI().isCurrencyAvailable(locale, providers);
441+
return monetaryCurrenciesSingletonSpi().isCurrencyAvailable(locale, providers);
450442
}
451443

452444
/**
@@ -456,8 +448,7 @@ public static boolean isCurrencyAvailable(Locale locale, String... providers) {
456448
* @return the list of known currencies, never null.
457449
*/
458450
public static Collection<CurrencyUnit> getCurrencies(String... providers) {
459-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
460-
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
451+
return monetaryCurrenciesSingletonSpi()
461452
.getCurrencies(providers);
462453
}
463454

@@ -468,8 +459,7 @@ public static Collection<CurrencyUnit> getCurrencies(String... providers) {
468459
* @return the list of known currencies, never null.
469460
*/
470461
public static CurrencyUnit getCurrency(CurrencyQuery query) {
471-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
472-
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
462+
return monetaryCurrenciesSingletonSpi()
473463
.getCurrency(query);
474464
}
475465

@@ -481,7 +471,7 @@ public static CurrencyUnit getCurrency(CurrencyQuery query) {
481471
* @return the list of known currencies, never null.
482472
*/
483473
public static Collection<CurrencyUnit> getCurrencies(CurrencyQuery query) {
484-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
474+
return Optional.ofNullable(monetaryCurrenciesSingletonSpi()).orElseThrow(
485475
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
486476
.getCurrencies(query);
487477
}
@@ -492,8 +482,7 @@ public static Collection<CurrencyUnit> getCurrencies(CurrencyQuery query) {
492482
* @return the list of known currencies, never null.
493483
*/
494484
public static Set<String> getCurrencyProviderNames() {
495-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
496-
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
485+
return monetaryCurrenciesSingletonSpi()
497486
.getProviderNames();
498487
}
499488

@@ -504,8 +493,7 @@ public static Set<String> getCurrencyProviderNames() {
504493
* @return the ordered list provider names, modelling the default provider chain used, never null.
505494
*/
506495
public static List<String> getDefaultCurrencyProviderChain() {
507-
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
508-
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
496+
return monetaryCurrenciesSingletonSpi()
509497
.getDefaultProviderChain();
510498
}
511499

0 commit comments

Comments
 (0)