public interface MonetaryConversionsSpi
MonetaryConversions singleton accessor. It should be registered as a
service using the JDK ServiceLoader. Hereby only one instance can be
registered at a time.ExchangeRateProvider instances, e.g. by registering them as CDI
beans. An EE container can register an according
MonetaryConversionsSpi that manages the different application
contexts transparently. In a SE environment this class is expected to behave
like an ordinary singleton, loading its SPIs from the ServiceLoader.
Instances of this class must be thread safe. It is not a requirement that they are serializable.
Only one instance can be registered using the ServiceLoader. When
registering multiple instances the MonetaryConversions accessor will
not work.
| Modifier and Type | Method and Description |
|---|---|
CurrencyConversion |
getConversion(CurrencyUnit termCurrency,
ConversionContext conversionContext,
java.lang.String... providers)
Access an instance of
CurrencyConversion. |
java.util.List<java.lang.String> |
getDefaultProviderChain()
Get the default provider chain used.
|
ExchangeRateProvider |
getExchangeRateProvider(java.lang.String... providers)
Access an instance of
ExchangeRateProvider. |
ProviderContext |
getProviderContext(java.lang.String provider)
Get the
ProviderContext for a provider. |
java.util.Collection<java.lang.String> |
getProviderNames()
Get all currently registered provider names.
|
boolean |
isProviderAvailable(java.lang.String provider)
Allows to quickly check, if a
ProviderContext is supported. |
CurrencyConversion getConversion(CurrencyUnit termCurrency, ConversionContext conversionContext, java.lang.String... providers)
CurrencyConversion.termCurrency - the terminating or target currency, not nullconversionContext - The ConversionContext required, not nullproviders - The providers to be used, in order of precedence, for building
a provider chain. At least one provider must be passed.java.lang.IllegalArgumentException - if a provider could not be found or not at least one provider
name is passed.isProviderAvailable(String)java.util.List<java.lang.String> getDefaultProviderChain()
null and not empty.ExchangeRateProvider getExchangeRateProvider(java.lang.String... providers)
ExchangeRateProvider.providers - The providers to be used, in order of precedence, for building
a provider chain. At least one provider must be passed.ExchangeRateProvider built up with the given sub
providers, never nulljava.lang.IllegalArgumentException - if a provider could not be found or not at least one provider
name is passed.isProviderAvailable(String)ProviderContext getProviderContext(java.lang.String provider)
ProviderContext for a provider.provider - the provider name, not null.ProviderContext, not null.java.lang.IllegalArgumentException - if no such provider is registered.java.util.Collection<java.lang.String> getProviderNames()
ProviderContext.getProviderName()boolean isProviderAvailable(java.lang.String provider)
ProviderContext is supported.provider - The provider required, not nulltrue, if the rate is supported, meaning an according
ExchangeRateProvider or CurrencyConversion can be
loaded.getConversion(CurrencyUnit, ConversionContext, String...),
getExchangeRateProvider(String...)