diff --git a/pom.xml b/pom.xml
index 5b4cc0ba..a597a6b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -618,7 +618,7 @@
-
+
diff --git a/src/main/java/javax/money/Monetary.java b/src/main/java/javax/money/Monetary.java
index c8af7ae7..c2d109f1 100644
--- a/src/main/java/javax/money/Monetary.java
+++ b/src/main/java/javax/money/Monetary.java
@@ -41,7 +41,7 @@ public final class Monetary {
/**
* The used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance.
*/
- private static final MonetaryCurrenciesSingletonSpi MONETARY_CURRENCIES_SINGLETON_SPI() {
+ private static MonetaryCurrenciesSingletonSpi MONETARY_CURRENCIES_SINGLETON_SPI() {
try {
return Optional.ofNullable(Bootstrap
.getService(MonetaryCurrenciesSingletonSpi.class)).orElseGet(
@@ -56,7 +56,7 @@ private static final MonetaryCurrenciesSingletonSpi MONETARY_CURRENCIES_SINGLETO
/**
* The used {@link javax.money.spi.MonetaryAmountsSingletonSpi} instance.
*/
- private static final MonetaryAmountsSingletonSpi MONETARY_AMOUNTS_SINGLETON_SPI() {
+ private static MonetaryAmountsSingletonSpi monetaryAmountsSingletonSpi() {
try {
return Bootstrap.getService(MonetaryAmountsSingletonSpi.class);
} catch (Exception e) {
@@ -69,7 +69,7 @@ private static final MonetaryAmountsSingletonSpi MONETARY_AMOUNTS_SINGLETON_SPI(
/**
* The used {@link javax.money.spi.MonetaryAmountsSingletonSpi} instance.
*/
- private static final MonetaryAmountsSingletonQuerySpi MONETARY_AMOUNTS_SINGLETON_QUERY_SPI() {
+ private static MonetaryAmountsSingletonQuerySpi MONETARY_AMOUNTS_SINGLETON_QUERY_SPI() {
try {
return Bootstrap.getService(MonetaryAmountsSingletonQuerySpi.class);
} catch (Exception e) {
@@ -84,7 +84,7 @@ private static final MonetaryAmountsSingletonQuerySpi MONETARY_AMOUNTS_SINGLETON
/**
* The used {@link javax.money.spi.MonetaryCurrenciesSingletonSpi} instance.
*/
- private static final MonetaryRoundingsSingletonSpi MONETARY_ROUNDINGS_SINGLETON_SPI() {
+ private static MonetaryRoundingsSingletonSpi MONETARY_ROUNDINGS_SINGLETON_SPI() {
try {
return Optional.ofNullable(Bootstrap
.getService(MonetaryRoundingsSingletonSpi.class))
@@ -275,10 +275,10 @@ public static Set getRoundingNames(String... providers) {
* implementation class is registered.
*/
public static MonetaryAmountFactory getAmountFactory(Class amountType) {
- Optional.ofNullable(MONETARY_AMOUNTS_SINGLETON_SPI())
+ Optional.ofNullable(monetaryAmountsSingletonSpi())
.orElseThrow(() -> new MonetaryException("No MonetaryAmountsSingletonSpi loaded."));
- MonetaryAmountFactory factory = MONETARY_AMOUNTS_SINGLETON_SPI().getAmountFactory(amountType);
+ MonetaryAmountFactory factory = monetaryAmountsSingletonSpi().getAmountFactory(amountType);
return Optional.ofNullable(factory).orElseThrow(
() -> new MonetaryException("No AmountFactory available for type: " + amountType.getName()));
}
@@ -293,7 +293,7 @@ public static MonetaryAmountFactory getAmountFacto
* implementation class is registered.
*/
public static MonetaryAmountFactory> getDefaultAmountFactory() {
- return Optional.ofNullable(MONETARY_AMOUNTS_SINGLETON_SPI())
+ return Optional.ofNullable(monetaryAmountsSingletonSpi())
.orElseThrow(() -> new MonetaryException("No MonetaryAmountsSingletonSpi loaded."))
.getDefaultAmountFactory();
}
@@ -306,7 +306,7 @@ public static MonetaryAmountFactory> getDefaultAmountFactory() {
* corresponding {@link MonetaryAmountFactory} instances provided, never {@code null}
*/
public static Collection> getAmountFactories() {
- return Optional.ofNullable(MONETARY_AMOUNTS_SINGLETON_SPI())
+ return Optional.ofNullable(monetaryAmountsSingletonSpi())
.orElseThrow(() -> new MonetaryException("No MonetaryAmountsSingletonSpi loaded."))
.getAmountFactories();
}
@@ -319,7 +319,7 @@ public static Collection> getAmountFactories() {
* corresponding {@link MonetaryAmountFactory} instances provided, never {@code null}
*/
public static Collection> getAmountTypes() {
- return Optional.ofNullable(MONETARY_AMOUNTS_SINGLETON_SPI())
+ return Optional.ofNullable(monetaryAmountsSingletonSpi())
.orElseThrow(() -> new MonetaryException("No MonetaryAmountsSingletonSpi loaded.")).getAmountTypes();
}
@@ -330,7 +330,7 @@ public static Collection> getAmountTypes() {
* @return all current default {@link MonetaryAmount} implementation class, never {@code null}
*/
public static Class extends MonetaryAmount> getDefaultAmountType() {
- return Optional.ofNullable(MONETARY_AMOUNTS_SINGLETON_SPI())
+ return Optional.ofNullable(monetaryAmountsSingletonSpi())
.orElseThrow(() -> new MonetaryException("No MonetaryAmountsSingletonSpi loaded."))
.getDefaultAmountType();
}
diff --git a/src/main/java/javax/money/convert/MonetaryConversions.java b/src/main/java/javax/money/convert/MonetaryConversions.java
index a6496e55..e7f9a003 100644
--- a/src/main/java/javax/money/convert/MonetaryConversions.java
+++ b/src/main/java/javax/money/convert/MonetaryConversions.java
@@ -56,8 +56,12 @@ public final class MonetaryConversions{
* The SPI currently active, use {@link ServiceLoader} to register an
* alternate implementation.
*/
- private static final MonetaryConversionsSingletonSpi getMonetaryConversionsSpi() {
- return Optional.of(Bootstrap.getService(MonetaryConversionsSingletonSpi.class)).get();
+ private static MonetaryConversionsSingletonSpi getMonetaryConversionsSpi() {
+ return Optional.ofNullable(Bootstrap.getService(MonetaryConversionsSingletonSpi.class))
+ .orElseThrow(() -> new MonetaryException("No MonetaryConversionsSingletonSpi " +
+ "loaded, " +
+ "query functionality is not " +
+ "available."));
}
/**
@@ -111,11 +115,7 @@ public static CurrencyConversion getConversion(String termCurrencyCode, String..
* @throws IllegalArgumentException if the query defines {@link ExchangeRateProvider}s that are not available.
*/
public static CurrencyConversion getConversion(ConversionQuery conversionQuery){
- return Optional.ofNullable(getMonetaryConversionsSpi())
- .orElseThrow(() -> new MonetaryException("No MonetaryConversionsSingletonSpi " +
- "loaded, " +
- "query functionality is not " +
- "available.")).getConversion(conversionQuery);
+ return getMonetaryConversionsSpi().getConversion(conversionQuery);
}
/**
@@ -125,11 +125,7 @@ public static CurrencyConversion getConversion(ConversionQuery conversionQuery){
* @return true, if a conversion is accessible from {@link #getConversion(ConversionQuery)}.
*/
public static boolean isConversionAvailable(ConversionQuery conversionQuery){
- return Optional.ofNullable(getMonetaryConversionsSpi())
- .orElseThrow(() -> new MonetaryException("No MonetaryConversionsSingletonSpi " +
- "loaded, " +
- "query functionality is not " +
- "available.")).isConversionAvailable(conversionQuery);
+ return getMonetaryConversionsSpi().isConversionAvailable(conversionQuery);
}
/**
@@ -141,11 +137,7 @@ public static boolean isConversionAvailable(ConversionQuery conversionQuery){
* @return true, if a conversion is accessible from {@link #getConversion(String, String...)}.
*/
public static boolean isConversionAvailable(String currencyCode, String... providers){
- return Optional.ofNullable(getMonetaryConversionsSpi())
- .orElseThrow(() -> new MonetaryException("No MonetaryConversionsSingletonSpi " +
- "loaded, " +
- "query functionality is not " +
- "available."))
+ return getMonetaryConversionsSpi()
.isConversionAvailable(Monetary.getCurrency(currencyCode), providers);
}
@@ -157,11 +149,7 @@ public static boolean isConversionAvailable(String currencyCode, String... provi
* @return true, if a conversion is accessible from {@link #getConversion(String, String...)}.
*/
public static boolean isConversionAvailable(CurrencyUnit termCurrency, String... providers){
- return Optional.ofNullable(getMonetaryConversionsSpi())
- .orElseThrow(() -> new MonetaryException("No MonetaryConversionsSingletonSpi " +
- "loaded, " +
- "query functionality is not " +
- "available."))
+ return getMonetaryConversionsSpi()
.isConversionAvailable(termCurrency, providers);
}
@@ -203,7 +191,7 @@ public static ExchangeRateProvider getExchangeRateProvider(
List suppliers = new ArrayList<>();
suppliers.add(Objects.requireNonNull(provider));
- Stream.of(providers).forEach(suppliers::add);
+ suppliers.addAll(Arrays.asList(providers));
String[] array = suppliers.stream()
.map(ExchangeRateProviderSupplier::get).toArray(String[]::new);
@@ -219,8 +207,7 @@ public static ExchangeRateProvider getExchangeRateProvider(
* @throws IllegalArgumentException if no such {@link ExchangeRateProvider} is available.
*/
public static ExchangeRateProvider getExchangeRateProvider(ConversionQuery conversionQuery){
- return Optional.ofNullable(getMonetaryConversionsSpi()).orElseThrow(() -> new MonetaryException(
- "No MonetaryConversionsSingletonSpi loaded, query functionality is not available."))
+ return getMonetaryConversionsSpi()
.getExchangeRateProvider(conversionQuery);
}
@@ -231,11 +218,7 @@ public static ExchangeRateProvider getExchangeRateProvider(ConversionQuery conve
* @return true, if a rate provider is accessible from {@link #getExchangeRateProvider(ConversionQuery)}}.
*/
public static boolean isExchangeRateProviderAvailable(ConversionQuery conversionQuery){
- return Optional.ofNullable(getMonetaryConversionsSpi())
- .orElseThrow(() -> new MonetaryException("No MonetaryConversionsSingletonSpi " +
- "loaded, " +
- "query functionality is not " +
- "available."))
+ return getMonetaryConversionsSpi()
.isExchangeRateProviderAvailable(conversionQuery);
}
@@ -248,10 +231,7 @@ public static boolean isExchangeRateProviderAvailable(ConversionQuery conversion
* @return all supported provider ids, never {@code null}.
*/
public static Collection getConversionProviderNames(){
- Collection providers = Optional.ofNullable(getMonetaryConversionsSpi()).orElseThrow(
- () -> new MonetaryException(
- "No MonetaryConversionsSingletonSpi loaded, query functionality is not available."))
- .getProviderNames();
+ Collection providers = getMonetaryConversionsSpi().getProviderNames();
if(Objects.isNull(providers)){
Logger.getLogger(MonetaryConversions.class.getName()).warning(
"No supported rate/conversion providers returned by SPI: " +
@@ -267,9 +247,7 @@ public static Collection getConversionProviderNames(){
* @return the default provider, never {@code null}.
*/
public static List getDefaultConversionProviderChain(){
- List defaultChain = Optional.ofNullable(getMonetaryConversionsSpi()).orElseThrow(
- () -> new MonetaryException(
- "No MonetaryConversionsSingletonSpi loaded, query functionality is not available."))
+ List defaultChain = getMonetaryConversionsSpi()
.getDefaultProviderChain();
Objects.requireNonNull(defaultChain, "No default provider chain provided by SPI: " +
getMonetaryConversionsSpi().getClass().getName());
diff --git a/src/main/java/javax/money/format/MonetaryFormats.java b/src/main/java/javax/money/format/MonetaryFormats.java
index eb254636..8014dedf 100644
--- a/src/main/java/javax/money/format/MonetaryFormats.java
+++ b/src/main/java/javax/money/format/MonetaryFormats.java
@@ -27,7 +27,7 @@
*/
public final class MonetaryFormats {
- private static final MonetaryFormatsSingletonSpi getMonetaryFormatsSpi() {
+ private static MonetaryFormatsSingletonSpi getMonetaryFormatsSpi() {
return loadMonetaryFormatsSingletonSpi();
}
diff --git a/src/main/java/javax/money/spi/Bootstrap.java b/src/main/java/javax/money/spi/Bootstrap.java
index 33cdb72b..b89de3cc 100644
--- a/src/main/java/javax/money/spi/Bootstrap.java
+++ b/src/main/java/javax/money/spi/Bootstrap.java
@@ -8,10 +8,7 @@
*/
package javax.money.spi;
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-import java.util.ServiceLoader;
+import java.util.*;
import java.util.logging.Logger;
/**
@@ -44,6 +41,7 @@ private Bootstrap() {
*/
private static ServiceProvider loadDefaultServiceProvider() {
try {
+ //noinspection LoopStatementThatDoesntLoop
for (ServiceProvider sp : ServiceLoader.load(ServiceProvider.class)) {
return sp;
}
@@ -115,7 +113,7 @@ public static T getService(Class serviceType) {
List services = getServiceProvider().getServices(serviceType);
return services
.stream()
- .sorted((o1, o2) -> o1.getClass().getSimpleName().compareTo(o2.getClass().getSimpleName()))
+ .sorted(Comparator.comparing(o -> o.getClass().getSimpleName()))
.findFirst()
.orElse(null);
}
diff --git a/src/main/java/javax/money/spi/ServiceProvider.java b/src/main/java/javax/money/spi/ServiceProvider.java
index 2c78b7aa..14b02a4f 100644
--- a/src/main/java/javax/money/spi/ServiceProvider.java
+++ b/src/main/java/javax/money/spi/ServiceProvider.java
@@ -27,7 +27,7 @@ public interface ServiceProvider {
*
* @return the provider's priority (default is 0).
*/
- public int getPriority();
+ int getPriority();
/**
* Access a list of services, given its type. The bootstrap mechanism should