|
31 | 31 | import javax.money.MonetaryCurrencies; |
32 | 32 | import javax.money.convert.ConversionContextBuilder; |
33 | 33 | import javax.money.convert.ConversionQuery; |
| 34 | +import javax.money.convert.CurrencyConversionException; |
34 | 35 | import javax.money.convert.ExchangeRate; |
35 | 36 | import javax.money.convert.ProviderContext; |
36 | 37 | import javax.money.convert.RateType; |
@@ -98,6 +99,7 @@ public void newDataLoaded(String data, InputStream is){ |
98 | 99 |
|
99 | 100 | @Override |
100 | 101 | public ExchangeRate getExchangeRate(ConversionQuery query){ |
| 102 | + Objects.requireNonNull(query); |
101 | 103 | if(historicRates.isEmpty()){ |
102 | 104 | return null; |
103 | 105 | } |
@@ -140,12 +142,13 @@ private ExchangeRate createExchangeRate(ConversionQuery query, |
140 | 142 | ExchangeRate rate2 = getExchangeRate( |
141 | 143 | query.toBuilder().setBaseCurrency(MonetaryCurrencies.getCurrency(BASE_CURRENCY_CODE)) |
142 | 144 | .setTermCurrency(query.getCurrency()).build()); |
143 | | - if(Objects.nonNull(rate1) || Objects.nonNull(rate2)){ |
| 145 | + if(Objects.nonNull(rate1) && Objects.nonNull(rate2)){ |
144 | 146 | builder.setFactor(multiply(rate1.getFactor(), rate2.getFactor())); |
145 | 147 | builder.setRateChain(rate1, rate2); |
146 | 148 | return builder.build(); |
147 | 149 | } |
148 | | - return null; |
| 150 | + throw new CurrencyConversionException(query.getBaseCurrency(), |
| 151 | + query.getCurrency(), sourceRate.getConversionContext()); |
149 | 152 | } |
150 | 153 | } |
151 | 154 |
|
|
0 commit comments