From 7678bcc337eed08cef99b8bd0612ab99ac36744b Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Mon, 5 Aug 2019 20:54:39 +0200 Subject: [PATCH] Clean up Monetary implementation Clean up the implementation of the Monetary class * use the same naming convention for all static methods * remove redundant null checks Fixes #90 --- src/main/java/javax/money/Monetary.java | 68 ++++++++++--------------- 1 file changed, 28 insertions(+), 40 deletions(-) diff --git a/src/main/java/javax/money/Monetary.java b/src/main/java/javax/money/Monetary.java index cbfcac1c..ed070660 100644 --- a/src/main/java/javax/money/Monetary.java +++ b/src/main/java/javax/money/Monetary.java @@ -21,7 +21,6 @@ import java.util.Collection; import java.util.List; import java.util.Locale; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.logging.Level; @@ -40,8 +39,11 @@ public final class Monetary { /** * The used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance. + * + * @return the used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance, + * never {@code null} */ - private static MonetaryCurrenciesSingletonSpi MONETARY_CURRENCIES_SINGLETON_SPI() { + private static MonetaryCurrenciesSingletonSpi monetaryCurrenciesSingletonSpi() { try { return Optional.ofNullable(Bootstrap .getService(MonetaryCurrenciesSingletonSpi.class)).orElseGet( @@ -83,6 +85,9 @@ private static MonetaryAmountsSingletonQuerySpi monetaryAmountsSingletonQuerySpi /** * The used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance. + * + * @return the used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance, + * never {@code null} */ private static MonetaryRoundingsSingletonSpi monetaryRoundingsSingletonSpi() { try { @@ -108,8 +113,7 @@ private Monetary() { * @return the set of provider names, never {@code null}. */ public static Set getRoundingProviderNames() { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getProviderNames(); } @@ -119,8 +123,7 @@ public static Set getRoundingProviderNames() { * @return the chained list of provider names, never {@code null}. */ public static List getDefaultRoundingProviderChain() { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getDefaultProviderChain(); } @@ -133,8 +136,7 @@ public static List getDefaultRoundingProviderChain() { * @return the (shared) default rounding instance. */ public static MonetaryRounding getDefaultRounding() { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getDefaultRounding(); } @@ -151,8 +153,7 @@ public static MonetaryRounding getDefaultRounding() { * rounding, never {@code null}. */ public static MonetaryRounding getRounding(CurrencyUnit currencyUnit, String... providers) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getRounding(currencyUnit, providers); } @@ -169,8 +170,7 @@ public static MonetaryRounding getRounding(CurrencyUnit currencyUnit, String... * {@link javax.money.spi.RoundingProviderSpi} instance. */ public static MonetaryRounding getRounding(String roundingName, String... providers) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getRounding(roundingName, providers); } @@ -184,8 +184,7 @@ public static MonetaryRounding getRounding(String roundingName, String... provid * {@link javax.money.spi.RoundingProviderSpi} instance. */ public static MonetaryRounding getRounding(RoundingQuery roundingQuery) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getRounding(roundingQuery); } @@ -200,8 +199,7 @@ public static MonetaryRounding getRounding(RoundingQuery roundingQuery) { * {@link javax.money.spi.RoundingProviderSpi} instance. */ public static boolean isRoundingAvailable(String roundingName, String... providers) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .isRoundingAvailable(roundingName, providers); } @@ -217,8 +215,7 @@ public static boolean isRoundingAvailable(String roundingName, String... provide * {@link javax.money.spi.RoundingProviderSpi} instance. */ public static boolean isRoundingAvailable(CurrencyUnit currencyUnit, String... providers) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .isRoundingAvailable(currencyUnit, providers); } @@ -232,8 +229,7 @@ public static boolean isRoundingAvailable(CurrencyUnit currencyUnit, String... p * {@link javax.money.spi.RoundingProviderSpi} instance. */ public static boolean isRoundingAvailable(RoundingQuery roundingQuery) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .isRoundingAvailable(roundingQuery); } @@ -246,8 +242,7 @@ public static boolean isRoundingAvailable(RoundingQuery roundingQuery) { * @return all {@link javax.money.MonetaryRounding} instances matching the query, never {@code null}. */ public static Collection getRoundings(RoundingQuery roundingQuery) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getRoundings(roundingQuery); } @@ -260,8 +255,7 @@ public static Collection getRoundings(RoundingQuery roundingQu * @return the set of custom rounding ids, never {@code null}. */ public static Set getRoundingNames(String... providers) { - return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow( - () -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available.")) + return monetaryRoundingsSingletonSpi() .getRoundingNames(providers); } @@ -384,8 +378,7 @@ public static boolean isAvailable(MonetaryAmountFactoryQuery query) { * @throws UnknownCurrencyException if no such currency exists. */ public static CurrencyUnit getCurrency(String currencyCode, String... providers) { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( - () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) + return monetaryCurrenciesSingletonSpi() .getCurrency(currencyCode, providers); } @@ -401,8 +394,7 @@ public static CurrencyUnit getCurrency(String currencyCode, String... providers) * @throws UnknownCurrencyException if no such currency exists. */ public static CurrencyUnit getCurrency(Locale locale, String... providers) { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( - () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) + return monetaryCurrenciesSingletonSpi() .getCurrency(locale, providers); } @@ -418,7 +410,7 @@ public static CurrencyUnit getCurrency(Locale locale, String... providers) { * @throws UnknownCurrencyException if no such currency exists. */ public static Set getCurrencies(Locale locale, String... providers) { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( + return Optional.ofNullable(monetaryCurrenciesSingletonSpi()).orElseThrow( () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) .getCurrencies(locale, providers); } @@ -433,7 +425,7 @@ public static Set getCurrencies(Locale locale, String... providers * would return a result for the given code. */ public static boolean isCurrencyAvailable(String code, String... providers) { - return Objects.nonNull(MONETARY_CURRENCIES_SINGLETON_SPI()) && MONETARY_CURRENCIES_SINGLETON_SPI().isCurrencyAvailable(code, providers); + return monetaryCurrenciesSingletonSpi().isCurrencyAvailable(code, providers); } /** @@ -446,7 +438,7 @@ public static boolean isCurrencyAvailable(String code, String... providers) { * result containing a currency with the given code. */ public static boolean isCurrencyAvailable(Locale locale, String... providers) { - return Objects.nonNull(MONETARY_CURRENCIES_SINGLETON_SPI()) && MONETARY_CURRENCIES_SINGLETON_SPI().isCurrencyAvailable(locale, providers); + return monetaryCurrenciesSingletonSpi().isCurrencyAvailable(locale, providers); } /** @@ -456,8 +448,7 @@ public static boolean isCurrencyAvailable(Locale locale, String... providers) { * @return the list of known currencies, never null. */ public static Collection getCurrencies(String... providers) { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( - () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) + return monetaryCurrenciesSingletonSpi() .getCurrencies(providers); } @@ -468,8 +459,7 @@ public static Collection getCurrencies(String... providers) { * @return the list of known currencies, never null. */ public static CurrencyUnit getCurrency(CurrencyQuery query) { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( - () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) + return monetaryCurrenciesSingletonSpi() .getCurrency(query); } @@ -481,7 +471,7 @@ public static CurrencyUnit getCurrency(CurrencyQuery query) { * @return the list of known currencies, never null. */ public static Collection getCurrencies(CurrencyQuery query) { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( + return Optional.ofNullable(monetaryCurrenciesSingletonSpi()).orElseThrow( () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) .getCurrencies(query); } @@ -492,8 +482,7 @@ public static Collection getCurrencies(CurrencyQuery query) { * @return the list of known currencies, never null. */ public static Set getCurrencyProviderNames() { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( - () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) + return monetaryCurrenciesSingletonSpi() .getProviderNames(); } @@ -504,8 +493,7 @@ public static Set getCurrencyProviderNames() { * @return the ordered list provider names, modelling the default provider chain used, never null. */ public static List getDefaultCurrencyProviderChain() { - return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow( - () -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup.")) + return monetaryCurrenciesSingletonSpi() .getDefaultProviderChain(); }