Skip to content

Commit 20b9c10

Browse files
authored
Merge pull request #388 from kewne/fix_ecb_config
fix: Add default to ECB loader config
2 parents 3e24bff + 07e10e4 commit 20b9c10

File tree

9 files changed

+91
-119
lines changed

9 files changed

+91
-119
lines changed

moneta-convert/moneta-convert-ecb/src/main/java/org/javamoney/moneta/convert/ecb/ECBAbstractRateProvider.java

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,25 @@
1515
*/
1616
package org.javamoney.moneta.convert.ecb;
1717

18+
import org.javamoney.moneta.convert.ExchangeRateBuilder;
19+
import org.javamoney.moneta.spi.AbstractRateProvider;
20+
import org.javamoney.moneta.spi.DefaultNumberValue;
21+
import org.javamoney.moneta.spi.loader.LoadDataInformation;
22+
import org.javamoney.moneta.spi.loader.LoaderService;
23+
import org.javamoney.moneta.spi.loader.LoaderService.LoaderListener;
24+
import org.xml.sax.InputSource;
25+
import org.xml.sax.XMLReader;
26+
27+
import javax.money.CurrencyUnit;
28+
import javax.money.Monetary;
29+
import javax.money.MonetaryException;
30+
import javax.money.convert.ConversionQuery;
31+
import javax.money.convert.CurrencyConversionException;
32+
import javax.money.convert.ExchangeRate;
33+
import javax.money.convert.ProviderContext;
34+
import javax.money.spi.Bootstrap;
35+
import javax.xml.parsers.SAXParser;
36+
import javax.xml.parsers.SAXParserFactory;
1837
import java.io.InputStream;
1938
import java.math.MathContext;
2039
import java.nio.charset.StandardCharsets;
@@ -31,25 +50,6 @@
3150
import java.util.stream.Collectors;
3251
import java.util.stream.Stream;
3352

34-
import javax.money.CurrencyUnit;
35-
import javax.money.Monetary;
36-
import javax.money.MonetaryException;
37-
import javax.money.convert.ConversionQuery;
38-
import javax.money.convert.CurrencyConversionException;
39-
import javax.money.convert.ExchangeRate;
40-
import javax.money.convert.ProviderContext;
41-
import javax.money.spi.Bootstrap;
42-
import javax.xml.parsers.SAXParser;
43-
import javax.xml.parsers.SAXParserFactory;
44-
45-
import org.javamoney.moneta.convert.ExchangeRateBuilder;
46-
import org.javamoney.moneta.spi.AbstractRateProvider;
47-
import org.javamoney.moneta.spi.DefaultNumberValue;
48-
import org.javamoney.moneta.spi.loader.LoaderService;
49-
import org.javamoney.moneta.spi.loader.LoaderService.LoaderListener;
50-
import org.xml.sax.InputSource;
51-
import org.xml.sax.XMLReader;
52-
5353
/**
5454
* Base to all Europe Central Bank implementation.
5555
*
@@ -90,12 +90,23 @@ abstract class ECBAbstractRateProvider extends AbstractRateProvider implements
9090
saxParserFactory.setNamespaceAware(false);
9191
saxParserFactory.setValidating(false);
9292
LoaderService loader = Bootstrap.getService(LoaderService.class);
93+
if (!loader.isResourceRegistered(getDataId())) {
94+
loader.registerData(getDefaultLoadData());
95+
}
9396
loader.addLoaderListener(this, getDataId());
9497
loader.loadDataAsync(getDataId());
9598
}
9699

97100
protected abstract String getDataId();
98101

102+
/**
103+
* Gets the default data loading configuration.
104+
*
105+
* This configuration is used if no other is provided.
106+
* @return the configuration
107+
*/
108+
protected abstract LoadDataInformation getDefaultLoadData();
109+
99110
@Override
100111
public void newDataLoaded(String resourceId, InputStream is) {
101112
final int oldSize = this.rates.size();
@@ -243,4 +254,4 @@ private class RateResult {
243254
}
244255
}
245256

246-
}
257+
}

moneta-convert/moneta-convert-ecb/src/main/java/org/javamoney/moneta/convert/ecb/ECBCurrentRateProvider.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@
1515
*/
1616
package org.javamoney.moneta.convert.ecb;
1717

18+
import org.javamoney.moneta.spi.loader.LoadDataInformation;
19+
import org.javamoney.moneta.spi.loader.LoadDataInformationBuilder;
20+
import org.javamoney.moneta.spi.loader.LoaderService;
21+
1822
import javax.money.convert.ConversionContext;
1923
import javax.money.convert.ProviderContext;
2024
import javax.money.convert.ProviderContextBuilder;
2125
import javax.money.convert.RateType;
26+
import java.net.URI;
27+
import java.util.Map;
2228

2329
/**
2430
* This class implements an {@link javax.money.convert.ExchangeRateProvider} that loads data from
@@ -51,4 +57,16 @@ public ECBCurrentRateProvider() {
5157
public String getDataId() {
5258
return DATA_ID;
5359
}
54-
}
60+
61+
@Override
62+
protected LoadDataInformation getDefaultLoadData() {
63+
return new LoadDataInformationBuilder()
64+
.withResourceId(getDataId())
65+
.withUpdatePolicy(LoaderService.UpdatePolicy.SCHEDULED)
66+
.withProperties(Map.of("period", "03:00"))
67+
.withBackupResource(URI.create("org/javamoney/moneta/convert/ecb/defaults/eurofxref-daily.xml"))
68+
.withResourceLocations(URI.create("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"))
69+
.withStartRemote(true)
70+
.build();
71+
}
72+
}

moneta-convert/moneta-convert-ecb/src/main/java/org/javamoney/moneta/convert/ecb/ECBHistoric90RateProvider.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,15 @@
1515
*/
1616
package org.javamoney.moneta.convert.ecb;
1717

18+
import org.javamoney.moneta.spi.loader.LoadDataInformation;
19+
import org.javamoney.moneta.spi.loader.LoadDataInformationBuilder;
20+
import org.javamoney.moneta.spi.loader.LoaderService;
21+
1822
import javax.money.convert.ProviderContext;
1923
import javax.money.convert.ProviderContextBuilder;
2024
import javax.money.convert.RateType;
25+
import java.net.URI;
26+
import java.util.Map;
2127

2228
/**
2329
* <p>
@@ -57,4 +63,16 @@ public String getDataId() {
5763
}
5864

5965

60-
}
66+
@Override
67+
protected LoadDataInformation getDefaultLoadData() {
68+
return new LoadDataInformationBuilder()
69+
.withResourceId(getDataId())
70+
.withUpdatePolicy(LoaderService.UpdatePolicy.SCHEDULED)
71+
.withProperties(Map.of("period", "03:00"))
72+
.withBackupResource(URI.create("org/javamoney/moneta/convert/ecb/defaults/eurofxref-hist-90d.xml"))
73+
.withResourceLocations(URI.create("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml"))
74+
.withStartRemote(true)
75+
.build();
76+
}
77+
78+
}

moneta-convert/moneta-convert-ecb/src/main/java/org/javamoney/moneta/convert/ecb/ECBHistoricRateProvider.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@
1515
*/
1616
package org.javamoney.moneta.convert.ecb;
1717

18+
import org.javamoney.moneta.spi.loader.LoadDataInformation;
19+
import org.javamoney.moneta.spi.loader.LoadDataInformationBuilder;
20+
import org.javamoney.moneta.spi.loader.LoaderService;
21+
1822
import javax.money.convert.ConversionContext;
1923
import javax.money.convert.ProviderContext;
2024
import javax.money.convert.ProviderContextBuilder;
2125
import javax.money.convert.RateType;
26+
import java.net.URI;
27+
import java.util.Map;
2228

2329
/**
2430
* <p>
@@ -64,4 +70,18 @@ public String getDataId() {
6470
}
6571

6672

67-
}
73+
@Override
74+
protected LoadDataInformation getDefaultLoadData() {
75+
return new LoadDataInformationBuilder()
76+
.withResourceId(getDataId())
77+
.withUpdatePolicy(LoaderService.UpdatePolicy.SCHEDULED)
78+
.withProperties(Map.of("period", "24:00",
79+
"delay", "01:00",
80+
"at", "07:00"))
81+
.withBackupResource(URI.create("org/javamoney/moneta/convert/ecb/defaults/eurofxref-hist.xml"))
82+
.withResourceLocations(URI.create("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml"))
83+
.withStartRemote(true)
84+
.build();
85+
}
86+
87+
}

moneta-convert/moneta-convert-ecb/src/main/resources/javamoney.properties

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,4 @@
1515
# Default MathContext for Money
1616
#-------------------------------
1717

18-
# ResourceLoader-Configuration (optional)
19-
# ECB Rates
20-
{-1}load.ECBCurrentRateProvider.type=SCHEDULED
21-
{-1}load.ECBCurrentRateProvider.period=03:00
22-
{-1}load.ECBCurrentRateProvider.resource=org/javamoney/moneta/convert/ecb/defaults/eurofxref-daily.xml
23-
{-1}load.ECBCurrentRateProvider.urls=https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
24-
{-1}load.ECBCurrentRateProvider.startRemote=true
25-
26-
{-1}load.ECBHistoric90RateProvider.type=SCHEDULED
27-
{-1}load.ECBHistoric90RateProvider.period=03:00
28-
#{-1}load.ECBHistoric90RateProvider.at=12:00
29-
{-1}load.ECBHistoric90RateProvider.resource=org/javamoney/moneta/convert/ecb/defaults/eurofxref-hist-90d.xml
30-
{-1}load.ECBHistoric90RateProvider.urls=https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml
31-
{-1}load.ECBHistoric90RateProvider.startRemote=true
32-
33-
{-1}load.ECBHistoricRateProvider.type=SCHEDULED
34-
{-1}load.ECBHistoricRateProvider.period=24:00
35-
{-1}load.ECBHistoricRateProvider.delay=01:00
36-
{-1}load.ECBHistoricRateProvider.at=07:00
37-
{-1}load.ECBHistoricRateProvider.resource=org/javamoney/moneta/convert/ecb/defaults/eurofxref-hist.xml
38-
{-1}load.ECBHistoricRateProvider.urls=https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml
39-
{-1}load.ECBHistoricRateProvider.startRemote=false
4018
{-1}ecb.digit.fraction=6

moneta-convert/moneta-convert-ecb/src/main/resources/javamoney.properties~

Lines changed: 0 additions & 69 deletions
This file was deleted.

moneta-convert/moneta-convert-ecb/src/test/java/org/javamoney/moneta/convert/ecb/ECBHistoric90RateProviderTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ public class ECBHistoric90RateProviderTest {
6363
@BeforeClass
6464
public static void setup() throws InterruptedException {
6565
provider = getExchangeRateProvider(ExchangeRateType.ECB_HIST90);
66-
Thread.sleep(10_000L);
6766
}
6867

6968
@Test
@@ -245,4 +244,4 @@ public final LocalDate[] withDaysBetween(LocalDate begin, LocalDate end) {
245244
return dates.toArray(new LocalDate[dates.size()]);
246245

247246
}
248-
}
247+
}

moneta-convert/moneta-convert-ecb/src/test/java/org/javamoney/moneta/convert/ecb/ECBHistoricRateProviderTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ public class ECBHistoricRateProviderTest {
5151
@BeforeTest
5252
public void setup() throws InterruptedException {
5353
provider = getExchangeRateProvider(ExchangeRateType.ECB_HIST);
54-
Thread.sleep(20_000L);
5554
}
5655

5756
@Test

moneta-core/src/main/java/org/javamoney/moneta/spi/LazyBoundCurrencyConversion.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ public ExchangeRate getExchangeRate(MonetaryAmount amount) {
5959
return this.rateProvider.getExchangeRate(ConversionQueryBuilder
6060
.of(conversionQuery).setBaseCurrency(amount.getCurrency())
6161
.build());
62-
// return this.rateProvider.getExchangeRate(amount.getCurrency(),
63-
// getCurrency());
6462
}
6563

6664
@Override

0 commit comments

Comments
 (0)