@@ -56,8 +56,9 @@ public final class MonetaryConversions{
5656 * The SPI currently active, use {@link ServiceLoader} to register an
5757 * alternate implementation.
5858 */
59- private static final MonetaryConversionsSingletonSpi MONETARY_CONVERSION_SPI = Optional .of (
60- Bootstrap .getService (MonetaryConversionsSingletonSpi .class )).get ();
59+ private static final MonetaryConversionsSingletonSpi getMonetaryConversionsSpi () {
60+ return Optional .of (Bootstrap .getService (MonetaryConversionsSingletonSpi .class )).get ();
61+ }
6162
6263 /**
6364 * Private singleton constructor.
@@ -78,11 +79,11 @@ public static CurrencyConversion getConversion(CurrencyUnit termCurrency, String
7879 Objects .requireNonNull (providers );
7980 Objects .requireNonNull (termCurrency );
8081 if (providers .length == 0 ){
81- return MONETARY_CONVERSION_SPI .getConversion (
82+ return getMonetaryConversionsSpi () .getConversion (
8283 ConversionQueryBuilder .of ().setTermCurrency (termCurrency ).setProviderNames (getDefaultConversionProviderChain ())
8384 .build ());
8485 }
85- return MONETARY_CONVERSION_SPI .getConversion (
86+ return getMonetaryConversionsSpi () .getConversion (
8687 ConversionQueryBuilder .of ().setTermCurrency (termCurrency ).setProviderNames (providers ).build ());
8788 }
8889
@@ -110,7 +111,7 @@ public static CurrencyConversion getConversion(String termCurrencyCode, String..
110111 * @throws IllegalArgumentException if the query defines {@link ExchangeRateProvider}s that are not available.
111112 */
112113 public static CurrencyConversion getConversion (ConversionQuery conversionQuery ){
113- return Optional .ofNullable (MONETARY_CONVERSION_SPI )
114+ return Optional .ofNullable (getMonetaryConversionsSpi () )
114115 .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
115116 "loaded, " +
116117 "query functionality is not " +
@@ -124,7 +125,7 @@ public static CurrencyConversion getConversion(ConversionQuery conversionQuery){
124125 * @return true, if a conversion is accessible from {@link #getConversion(ConversionQuery)}.
125126 */
126127 public static boolean isConversionAvailable (ConversionQuery conversionQuery ){
127- return Optional .ofNullable (MONETARY_CONVERSION_SPI )
128+ return Optional .ofNullable (getMonetaryConversionsSpi () )
128129 .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
129130 "loaded, " +
130131 "query functionality is not " +
@@ -140,7 +141,7 @@ public static boolean isConversionAvailable(ConversionQuery conversionQuery){
140141 * @return true, if a conversion is accessible from {@link #getConversion(String, String...)}.
141142 */
142143 public static boolean isConversionAvailable (String currencyCode , String ... providers ){
143- return Optional .ofNullable (MONETARY_CONVERSION_SPI )
144+ return Optional .ofNullable (getMonetaryConversionsSpi () )
144145 .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
145146 "loaded, " +
146147 "query functionality is not " +
@@ -156,7 +157,7 @@ public static boolean isConversionAvailable(String currencyCode, String... provi
156157 * @return true, if a conversion is accessible from {@link #getConversion(String, String...)}.
157158 */
158159 public static boolean isConversionAvailable (CurrencyUnit termCurrency , String ... providers ){
159- return Optional .ofNullable (MONETARY_CONVERSION_SPI )
160+ return Optional .ofNullable (getMonetaryConversionsSpi () )
160161 .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
161162 "loaded, " +
162163 "query functionality is not " +
@@ -175,10 +176,10 @@ public static boolean isConversionAvailable(CurrencyUnit termCurrency, String...
175176 public static ExchangeRateProvider getExchangeRateProvider (String ... providers ){
176177 if (providers .length == 0 ){
177178 List <String > defaultProviderChain = getDefaultConversionProviderChain ();
178- return MONETARY_CONVERSION_SPI .getExchangeRateProvider (ConversionQueryBuilder .of ().setProviderNames (
179+ return getMonetaryConversionsSpi () .getExchangeRateProvider (ConversionQueryBuilder .of ().setProviderNames (
179180 defaultProviderChain .toArray (new String [defaultProviderChain .size ()])).build ());
180181 }
181- ExchangeRateProvider provider = MONETARY_CONVERSION_SPI
182+ ExchangeRateProvider provider = getMonetaryConversionsSpi ()
182183 .getExchangeRateProvider (ConversionQueryBuilder .of ().setProviderNames (providers ).build ());
183184 return Optional .ofNullable (provider )
184185 .orElseThrow (() -> new MonetaryException ("No such rate provider: " + Arrays .toString (providers )));
@@ -218,7 +219,7 @@ public static ExchangeRateProvider getExchangeRateProvider(
218219 * @throws IllegalArgumentException if no such {@link ExchangeRateProvider} is available.
219220 */
220221 public static ExchangeRateProvider getExchangeRateProvider (ConversionQuery conversionQuery ){
221- return Optional .ofNullable (MONETARY_CONVERSION_SPI ).orElseThrow (() -> new MonetaryException (
222+ return Optional .ofNullable (getMonetaryConversionsSpi () ).orElseThrow (() -> new MonetaryException (
222223 "No MonetaryConversionsSingletonSpi loaded, query functionality is not available." ))
223224 .getExchangeRateProvider (conversionQuery );
224225 }
@@ -230,7 +231,7 @@ public static ExchangeRateProvider getExchangeRateProvider(ConversionQuery conve
230231 * @return true, if a rate provider is accessible from {@link #getExchangeRateProvider(ConversionQuery)}}.
231232 */
232233 public static boolean isExchangeRateProviderAvailable (ConversionQuery conversionQuery ){
233- return Optional .ofNullable (MONETARY_CONVERSION_SPI )
234+ return Optional .ofNullable (getMonetaryConversionsSpi () )
234235 .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
235236 "loaded, " +
236237 "query functionality is not " +
@@ -247,14 +248,14 @@ public static boolean isExchangeRateProviderAvailable(ConversionQuery conversion
247248 * @return all supported provider ids, never {@code null}.
248249 */
249250 public static Collection <String > getConversionProviderNames (){
250- Collection <String > providers = Optional .ofNullable (MONETARY_CONVERSION_SPI ).orElseThrow (
251+ Collection <String > providers = Optional .ofNullable (getMonetaryConversionsSpi () ).orElseThrow (
251252 () -> new MonetaryException (
252253 "No MonetaryConversionsSingletonSpi loaded, query functionality is not available." ))
253254 .getProviderNames ();
254255 if (Objects .isNull (providers )){
255256 Logger .getLogger (MonetaryConversions .class .getName ()).warning (
256257 "No supported rate/conversion providers returned by SPI: " +
257- MONETARY_CONVERSION_SPI .getClass ().getName ());
258+ getMonetaryConversionsSpi () .getClass ().getName ());
258259 return Collections .emptySet ();
259260 }
260261 return providers ;
@@ -266,12 +267,12 @@ public static Collection<String> getConversionProviderNames(){
266267 * @return the default provider, never {@code null}.
267268 */
268269 public static List <String > getDefaultConversionProviderChain (){
269- List <String > defaultChain = Optional .ofNullable (MONETARY_CONVERSION_SPI ).orElseThrow (
270+ List <String > defaultChain = Optional .ofNullable (getMonetaryConversionsSpi () ).orElseThrow (
270271 () -> new MonetaryException (
271272 "No MonetaryConversionsSingletonSpi loaded, query functionality is not available." ))
272273 .getDefaultProviderChain ();
273274 Objects .requireNonNull (defaultChain , "No default provider chain provided by SPI: " +
274- MONETARY_CONVERSION_SPI .getClass ().getName ());
275+ getMonetaryConversionsSpi () .getClass ().getName ());
275276 return defaultChain ;
276277 }
277278
0 commit comments