2015-06-19 18 views
5

Utilizzando la nuova versione 1.0 di JavaMoney API con reference implementation, proviamo a interrompere il caricamento del caricatore di risorse dal caricamento di altri ExchangeRateProvider ignorando javamoney.properties.Sovrascrivere le proprietà in 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 

Tuttavia, il registro mi dice che sono ancora in corso di caricamento:

jun 19, 2015 8:27:58 AM org.javamoney.moneta.internal.convert.AbstractECBRateProvider newDataLoaded 
INFO: Loaded ECBCurrentRateProvider exchange rates for days:1 

Dall'interfaccia LoaderService 'MAI PIU' innesca il caricamento della risorsa locale (e non il telecomando), ma ho anche provato "PIZZA".

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 
} 
... 

Quello che abbiamo notato è che nel costruttore delle ExchangeProviders in org.javamoney.moneta.internal.convert, v'è una chiamata a 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()); 
} 

Questa è la come per caso 'OnStartup' nel metodo registerData in DefaultLoaderService:

switch (updatePolicy) { 
     case NEVER: 
      loadDataLocal(resourceId); 
      break; 
     case ONSTARTUP: 
      loadDataAsync(resourceId); 
      break; 
     case SCHEDULED: 
      addScheduledLoad(res); 
      break; 
     case LAZY: 
     default: 
      break; 
    } 

questo potrebbe essere un motivo per cui è caricato, non importa quello che ho messo nel mio javamoney.pr operties?

Come disattivare del tutto gli altri ExchangeRateProvider? Vogliamo solo utilizzare la nostra custom ExchangeRateProvider.

risposta

4

Sembra che abbiamo un problema qui. Potete presentare un problema con Jira nel nostro progetto java.net/javamoney (e controllare se questo problema è già stato archiviato :)). Abbiamo in programma di pubblicare una patch release dei prossimi giorni, quindi potremmo risolvere anche questo.

Grazie mille! Anatole

+0

Grazie per la risposta! Ho presentato una Jira: https://java.net/jira/browse/JAVAMONEY-131. – Truls

Problemi correlati