@@ -56,8 +56,12 @@ public final class MonetaryConversions{
5656 * The SPI currently active, use {@link ServiceLoader} to register an
5757 * alternate implementation.
5858 */
59- private static final MonetaryConversionsSingletonSpi getMonetaryConversionsSpi () {
60- return Optional .of (Bootstrap .getService (MonetaryConversionsSingletonSpi .class )).get ();
59+ private static MonetaryConversionsSingletonSpi getMonetaryConversionsSpi () {
60+ return Optional .ofNullable (Bootstrap .getService (MonetaryConversionsSingletonSpi .class ))
61+ .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
62+ "loaded, " +
63+ "query functionality is not " +
64+ "available." ));
6165 }
6266
6367 /**
@@ -111,11 +115,7 @@ public static CurrencyConversion getConversion(String termCurrencyCode, String..
111115 * @throws IllegalArgumentException if the query defines {@link ExchangeRateProvider}s that are not available.
112116 */
113117 public static CurrencyConversion getConversion (ConversionQuery conversionQuery ){
114- return Optional .ofNullable (getMonetaryConversionsSpi ())
115- .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
116- "loaded, " +
117- "query functionality is not " +
118- "available." )).getConversion (conversionQuery );
118+ return getMonetaryConversionsSpi ().getConversion (conversionQuery );
119119 }
120120
121121 /**
@@ -125,11 +125,7 @@ public static CurrencyConversion getConversion(ConversionQuery conversionQuery){
125125 * @return true, if a conversion is accessible from {@link #getConversion(ConversionQuery)}.
126126 */
127127 public static boolean isConversionAvailable (ConversionQuery conversionQuery ){
128- return Optional .ofNullable (getMonetaryConversionsSpi ())
129- .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
130- "loaded, " +
131- "query functionality is not " +
132- "available." )).isConversionAvailable (conversionQuery );
128+ return getMonetaryConversionsSpi ().isConversionAvailable (conversionQuery );
133129 }
134130
135131 /**
@@ -141,11 +137,7 @@ public static boolean isConversionAvailable(ConversionQuery conversionQuery){
141137 * @return true, if a conversion is accessible from {@link #getConversion(String, String...)}.
142138 */
143139 public static boolean isConversionAvailable (String currencyCode , String ... providers ){
144- return Optional .ofNullable (getMonetaryConversionsSpi ())
145- .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
146- "loaded, " +
147- "query functionality is not " +
148- "available." ))
140+ return getMonetaryConversionsSpi ()
149141 .isConversionAvailable (Monetary .getCurrency (currencyCode ), providers );
150142 }
151143
@@ -157,11 +149,7 @@ public static boolean isConversionAvailable(String currencyCode, String... provi
157149 * @return true, if a conversion is accessible from {@link #getConversion(String, String...)}.
158150 */
159151 public static boolean isConversionAvailable (CurrencyUnit termCurrency , String ... providers ){
160- return Optional .ofNullable (getMonetaryConversionsSpi ())
161- .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
162- "loaded, " +
163- "query functionality is not " +
164- "available." ))
152+ return getMonetaryConversionsSpi ()
165153 .isConversionAvailable (termCurrency , providers );
166154 }
167155
@@ -203,7 +191,7 @@ public static ExchangeRateProvider getExchangeRateProvider(
203191
204192 List <ExchangeRateProviderSupplier > suppliers = new ArrayList <>();
205193 suppliers .add (Objects .requireNonNull (provider ));
206- Stream . of ( providers ). forEach ( suppliers :: add );
194+ suppliers . addAll ( Arrays . asList ( providers ) );
207195
208196 String [] array = suppliers .stream ()
209197 .map (ExchangeRateProviderSupplier ::get ).toArray (String []::new );
@@ -219,8 +207,7 @@ public static ExchangeRateProvider getExchangeRateProvider(
219207 * @throws IllegalArgumentException if no such {@link ExchangeRateProvider} is available.
220208 */
221209 public static ExchangeRateProvider getExchangeRateProvider (ConversionQuery conversionQuery ){
222- return Optional .ofNullable (getMonetaryConversionsSpi ()).orElseThrow (() -> new MonetaryException (
223- "No MonetaryConversionsSingletonSpi loaded, query functionality is not available." ))
210+ return getMonetaryConversionsSpi ()
224211 .getExchangeRateProvider (conversionQuery );
225212 }
226213
@@ -231,11 +218,7 @@ public static ExchangeRateProvider getExchangeRateProvider(ConversionQuery conve
231218 * @return true, if a rate provider is accessible from {@link #getExchangeRateProvider(ConversionQuery)}}.
232219 */
233220 public static boolean isExchangeRateProviderAvailable (ConversionQuery conversionQuery ){
234- return Optional .ofNullable (getMonetaryConversionsSpi ())
235- .orElseThrow (() -> new MonetaryException ("No MonetaryConversionsSingletonSpi " +
236- "loaded, " +
237- "query functionality is not " +
238- "available." ))
221+ return getMonetaryConversionsSpi ()
239222 .isExchangeRateProviderAvailable (conversionQuery );
240223 }
241224
@@ -248,10 +231,7 @@ public static boolean isExchangeRateProviderAvailable(ConversionQuery conversion
248231 * @return all supported provider ids, never {@code null}.
249232 */
250233 public static Collection <String > getConversionProviderNames (){
251- Collection <String > providers = Optional .ofNullable (getMonetaryConversionsSpi ()).orElseThrow (
252- () -> new MonetaryException (
253- "No MonetaryConversionsSingletonSpi loaded, query functionality is not available." ))
254- .getProviderNames ();
234+ Collection <String > providers = getMonetaryConversionsSpi ().getProviderNames ();
255235 if (Objects .isNull (providers )){
256236 Logger .getLogger (MonetaryConversions .class .getName ()).warning (
257237 "No supported rate/conversion providers returned by SPI: " +
@@ -267,9 +247,7 @@ public static Collection<String> getConversionProviderNames(){
267247 * @return the default provider, never {@code null}.
268248 */
269249 public static List <String > getDefaultConversionProviderChain (){
270- List <String > defaultChain = Optional .ofNullable (getMonetaryConversionsSpi ()).orElseThrow (
271- () -> new MonetaryException (
272- "No MonetaryConversionsSingletonSpi loaded, query functionality is not available." ))
250+ List <String > defaultChain = getMonetaryConversionsSpi ()
273251 .getDefaultProviderChain ();
274252 Objects .requireNonNull (defaultChain , "No default provider chain provided by SPI: " +
275253 getMonetaryConversionsSpi ().getClass ().getName ());
0 commit comments