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 null
conversionContext
- The ConversionContext
required, not null
providers
- 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 null
java.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 null
true
, if the rate is supported, meaning an according
ExchangeRateProvider
or CurrencyConversion
can be
loaded.getConversion(CurrencyUnit, ConversionContext, String...)
,
getExchangeRateProvider(String...)