Expand Up
@@ -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;
Expand All
@@ -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(
Expand Down
Expand Up
@@ -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 {
Expand All
@@ -108,8 +113,7 @@ private Monetary() {
* @return the set of provider names, never {@code null}.
*/
public static Set<String> getRoundingProviderNames() {
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
return monetaryRoundingsSingletonSpi()
.getProviderNames();
}
Expand All
@@ -119,8 +123,7 @@ public static Set<String> getRoundingProviderNames() {
* @return the chained list of provider names, never {@code null}.
*/
public static List<String> getDefaultRoundingProviderChain() {
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
return monetaryRoundingsSingletonSpi()
.getDefaultProviderChain();
}
Expand All
@@ -133,8 +136,7 @@ public static List<String> 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();
}
Expand All
@@ -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);
}
Expand All
@@ -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);
}
Expand All
@@ -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);
}
Expand All
@@ -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);
}
Expand All
@@ -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);
}
Expand All
@@ -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);
}
Expand All
@@ -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<MonetaryRounding> getRoundings(RoundingQuery roundingQuery) {
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
return monetaryRoundingsSingletonSpi()
.getRoundings(roundingQuery);
}
Expand All
@@ -260,8 +255,7 @@ public static Collection<MonetaryRounding> getRoundings(RoundingQuery roundingQu
* @return the set of custom rounding ids, never {@code null}.
*/
public static Set<String> getRoundingNames(String... providers) {
return Optional.ofNullable(monetaryRoundingsSingletonSpi()).orElseThrow(
() -> new MonetaryException("No MonetaryRoundingsSpi loaded, query functionality is not available."))
return monetaryRoundingsSingletonSpi()
.getRoundingNames(providers);
}
Expand Down
Expand Up
@@ -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);
}
Expand All
@@ -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);
}
Expand All
@@ -418,7 +410,7 @@ public static CurrencyUnit getCurrency(Locale locale, String... providers) {
* @throws UnknownCurrencyException if no such currency exists.
*/
public static Set<CurrencyUnit> 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);
}
Expand All
@@ -433,7 +425,7 @@ public static Set<CurrencyUnit> 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);
}
/**
Expand All
@@ -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);
}
/**
Expand All
@@ -456,8 +448,7 @@ public static boolean isCurrencyAvailable(Locale locale, String... providers) {
* @return the list of known currencies, never null.
*/
public static Collection<CurrencyUnit> getCurrencies(String... providers) {
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
return monetaryCurrenciesSingletonSpi()
.getCurrencies(providers);
}
Expand All
@@ -468,8 +459,7 @@ public static Collection<CurrencyUnit> 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);
}
Expand All
@@ -481,7 +471,7 @@ public static CurrencyUnit getCurrency(CurrencyQuery query) {
* @return the list of known currencies, never null.
*/
public static Collection<CurrencyUnit> 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);
}
Expand All
@@ -492,8 +482,7 @@ public static Collection<CurrencyUnit> getCurrencies(CurrencyQuery query) {
* @return the list of known currencies, never null.
*/
public static Set<String> getCurrencyProviderNames() {
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
return monetaryCurrenciesSingletonSpi()
.getProviderNames();
}
Expand All
@@ -504,8 +493,7 @@ public static Set<String> getCurrencyProviderNames() {
* @return the ordered list provider names, modelling the default provider chain used, never null.
*/
public static List<String> getDefaultCurrencyProviderChain() {
return Optional.ofNullable(MONETARY_CURRENCIES_SINGLETON_SPI()).orElseThrow(
() -> new MonetaryException("No MonetaryCurrenciesSingletonSpi loaded, check your system setup."))
return monetaryCurrenciesSingletonSpi()
.getDefaultProviderChain();
}
Expand Down