2121import java .util .Collection ;
2222import java .util .List ;
2323import java .util .Locale ;
24- import java .util .Objects ;
2524import java .util .Optional ;
2625import java .util .Set ;
2726import java .util .logging .Level ;
4039public 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