Используя новую версию 1.0 JavaMoney API с помощью reference implementation, мы пытаемся остановить загрузчик ресурсов от загрузки другого ExchangeRateProvider, переопределив javamoney.properties.Переопределение свойств в javamoney.properties?
{1}conversion.default-chain=MY-PROVIDER
# Turn off loading of the default Moneta ExchangeRateProviders.
{1}load.ECBCurrentRateProvider.type=NEVER
{1}load.ECBHistoric90RateProvider.type=NEVER
{1}load.ECBHistoricRateProvider.type=NEVER
{1}load.IMFRateProvider.type=NEVER
{1}load.AbstractECBRateProvider=NEVER
Однако, журнал говорит мне, что они все еще загружены:
jun 19, 2015 8:27:58 AM org.javamoney.moneta.internal.convert.AbstractECBRateProvider newDataLoaded
INFO: Loaded ECBCurrentRateProvider exchange rates for days:1
Из интерфейса LoaderService «НИКОГДА» не триггерами загружает локальный ресурс (а не пульт дистанционного управления), но я также попробовал «ЛАЗИ».
public interface LoaderService {
/**
* Platform RI: The update policy defines how and when the
* {@link LoaderService} tries to update the local cache with newest version of
* the registered data resources, accessing the configured remote
* {@link URI}s. By default no remote connections are done (
* {@link UpdatePolicy#NEVER}).
*
* @author Anatole Tresch
*/
public enum UpdatePolicy {
/**
* The resource will never be updated from remote, only the fallback URL
* will be evaluated.
*/
NEVER,
/**
* The resource will be loaded automatically from remote only once on
* startup.
*/
ONSTARTUP,
/**
* The resource will be loaded automatically from remote only once, when
* accessed the first time.
*/
LAZY,
/**
* The resource should be regularly reloaded based on a schedule.
*/
SCHEDULED
}
...
То, что мы уже отмечали, что в конструкторе ExchangeProviders в org.javamoney.moneta.internal.convert, есть призыв к loader.loadDataAsync:
AbstractECBRateProvider(ProviderContext context) {
super(context);
saxParserFactory.setNamespaceAware(false);
saxParserFactory.setValidating(false);
LoaderService loader = Bootstrap.getService(LoaderService.class);
loader.addLoaderListener(this, getDataId());
loader.loadDataAsync(getDataId());
}
Это такой же, как для случая «OnStartup» в методе registerData в DefaultLoaderService:
switch (updatePolicy) {
case NEVER:
loadDataLocal(resourceId);
break;
case ONSTARTUP:
loadDataAsync(resourceId);
break;
case SCHEDULED:
addScheduledLoad(res);
break;
case LAZY:
default:
break;
}
Может ли это быть причиной того, что он не будет загружен независимо от того, что я ставлю в моем javamoney.pr operties?
Как вообще отключить других ExchangeRateProviders? Мы только хотим использовать наш заказ ExchangeRateProvider.
Благодарим за отзыв! Я подал Jira: https://java.net/jira/browse/JAVAMONEY-131. – Truls