Skip to content

Commit 4f832e7

Browse files
committed
Added support for @priority for ordering services in bootstrap.
Reformatted some files.
1 parent 2771a85 commit 4f832e7

16 files changed

+451
-514
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,11 @@
347347
<version>${jsr.version}</version>
348348
<scope>compile</scope>
349349
</dependency>
350+
<dependency>
351+
<groupId>javax.annotation</groupId>
352+
<artifactId>javax.annotation-api</artifactId>
353+
<version>1.2</version>
354+
</dependency>
350355
</dependencies>
351356

352357
<build>

src/main/java/org/javamoney/moneta/convert/internal/AbstractECBCurrentRateProvider.java

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@
4747

4848
/**
4949
* Base to all Europe Central Bank implementation.
50+
*
5051
* @author otaviojava
5152
*/
5253
abstract class AbstractECBCurrentRateProvider extends AbstractRateProvider implements
53-
LoaderListener {
54+
LoaderListener {
5455

5556
static final String BASE_CURRENCY_CODE = "EUR";
5657

@@ -62,15 +63,15 @@ abstract class AbstractECBCurrentRateProvider extends AbstractRateProvider imple
6263
/**
6364
* Historic exchange rates, rate timestamp as UTC long.
6465
*/
65-
private final Map<Long, Map<String, ExchangeRate>> historicRates = new ConcurrentHashMap<>();
66+
private final Map<Long, Map<String, ExchangeRate>> historicRates = new ConcurrentHashMap<>();
6667
/**
6768
* Parser factory.
6869
*/
6970
private SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
7071

7172
private Long recentKey;
7273

73-
public AbstractECBCurrentRateProvider(ProviderContext context) throws MalformedURLException{
74+
public AbstractECBCurrentRateProvider(ProviderContext context) throws MalformedURLException {
7475
super(context);
7576
saxParserFactory.setNamespaceAware(false);
7677
saxParserFactory.setValidating(false);
@@ -82,14 +83,13 @@ public AbstractECBCurrentRateProvider(ProviderContext context) throws MalformedU
8283
public abstract String getDataId();
8384

8485
@Override
85-
public void newDataLoaded(String data, InputStream is){
86+
public void newDataLoaded(String data, InputStream is) {
8687
final int oldSize = this.historicRates.size();
87-
try{
88+
try {
8889
SAXParser parser = saxParserFactory.newSAXParser();
8990
parser.parse(is, new RateReadingHandler(historicRates, getProviderContext()));
9091
recentKey = null;
91-
}
92-
catch(Exception e){
92+
} catch (Exception e) {
9393
LOGGER.log(Level.FINEST, "Error during data load.", e);
9494
}
9595
int newSize = this.historicRates.size();
@@ -98,98 +98,98 @@ public void newDataLoaded(String data, InputStream is){
9898

9999

100100
@Override
101-
public ExchangeRate getExchangeRate(ConversionQuery query){
102-
Objects.requireNonNull(query);
103-
if(historicRates.isEmpty()){
101+
public ExchangeRate getExchangeRate(ConversionQuery query) {
102+
Objects.requireNonNull(query);
103+
if (historicRates.isEmpty()) {
104104
return null;
105105
}
106106

107-
Long timeStampMillis = getMillisSeconds(query);
107+
Long timeStampMillis = getMillisSeconds(query);
108108
ExchangeRateBuilder builder = getBuilder(query, timeStampMillis);
109109

110110

111-
Map<String, ExchangeRate> targets = this.historicRates
112-
.get(timeStampMillis);
113-
if(Objects.isNull(targets)){
111+
Map<String, ExchangeRate> targets = this.historicRates
112+
.get(timeStampMillis);
113+
if (Objects.isNull(targets)) {
114114
return null;
115115
}
116-
ExchangeRate sourceRate = targets.get(query.getBaseCurrency()
117-
.getCurrencyCode());
118-
ExchangeRate target = targets
119-
.get(query.getCurrency().getCurrencyCode());
116+
ExchangeRate sourceRate = targets.get(query.getBaseCurrency()
117+
.getCurrencyCode());
118+
ExchangeRate target = targets
119+
.get(query.getCurrency().getCurrencyCode());
120120
return createExchangeRate(query, builder, sourceRate, target);
121121
}
122122

123-
private ExchangeRate createExchangeRate(ConversionQuery query,
124-
ExchangeRateBuilder builder, ExchangeRate sourceRate,
125-
ExchangeRate target) {
123+
private ExchangeRate createExchangeRate(ConversionQuery query,
124+
ExchangeRateBuilder builder, ExchangeRate sourceRate,
125+
ExchangeRate target) {
126126

127-
if(areBothBaseCurrencies(query)){
127+
if (areBothBaseCurrencies(query)) {
128128
builder.setFactor(DefaultNumberValue.ONE);
129129
return builder.build();
130-
} else if(BASE_CURRENCY_CODE.equals(query.getCurrency().getCurrencyCode())){
131-
if(Objects.isNull(sourceRate)){
130+
} else if (BASE_CURRENCY_CODE.equals(query.getCurrency().getCurrencyCode())) {
131+
if (Objects.isNull(sourceRate)) {
132132
return null;
133133
}
134134
return reverse(sourceRate);
135-
} else if (BASE_CURRENCY_CODE.equals(query.getBaseCurrency()
136-
.getCurrencyCode())) {
135+
} else if (BASE_CURRENCY_CODE.equals(query.getBaseCurrency()
136+
.getCurrencyCode())) {
137137
return target;
138-
} else{
138+
} else {
139139
// Get Conversion base as derived rate: base -> EUR -> term
140140
ExchangeRate rate1 = getExchangeRate(
141141
query.toBuilder().setTermCurrency(MonetaryCurrencies.getCurrency(BASE_CURRENCY_CODE)).build());
142142
ExchangeRate rate2 = getExchangeRate(
143143
query.toBuilder().setBaseCurrency(MonetaryCurrencies.getCurrency(BASE_CURRENCY_CODE))
144144
.setTermCurrency(query.getCurrency()).build());
145-
if(Objects.nonNull(rate1) && Objects.nonNull(rate2)){
145+
if (Objects.nonNull(rate1) && Objects.nonNull(rate2)) {
146146
builder.setFactor(multiply(rate1.getFactor(), rate2.getFactor()));
147147
builder.setRateChain(rate1, rate2);
148148
return builder.build();
149149
}
150-
throw new CurrencyConversionException(query.getBaseCurrency(),
151-
query.getCurrency(), sourceRate.getConversionContext());
150+
throw new CurrencyConversionException(query.getBaseCurrency(),
151+
query.getCurrency(), sourceRate.getConversionContext());
152152
}
153-
}
153+
}
154154

155-
private boolean areBothBaseCurrencies(ConversionQuery query) {
156-
return BASE_CURRENCY_CODE.equals(query.getBaseCurrency().getCurrencyCode()) &&
155+
private boolean areBothBaseCurrencies(ConversionQuery query) {
156+
return BASE_CURRENCY_CODE.equals(query.getBaseCurrency().getCurrencyCode()) &&
157157
BASE_CURRENCY_CODE.equals(query.getCurrency().getCurrencyCode());
158-
}
159-
160-
private Long getMillisSeconds(ConversionQuery query) {
161-
if (Objects.nonNull(query.getTimestamp())) {
162-
LocalDate timeStamp = query.getTimestamp().toLocalDate();
163-
164-
Date date = Date.from(timeStamp.atStartOfDay()
165-
.atZone(ZoneId.systemDefault()).toInstant());
166-
Long timeStampMillis = date.getTime();
167-
return timeStampMillis;
168-
} else {
169-
return getRecentKey();
170-
}
171-
}
172-
173-
private Long getRecentKey() {
174-
if(Objects.isNull(recentKey)) {
175-
Comparator<Long> reversed = Comparator.<Long>naturalOrder().reversed();
176-
recentKey = historicRates.keySet().stream().sorted(reversed).findFirst().get();
177-
}
178-
return recentKey;
179-
}
180-
181-
private ExchangeRateBuilder getBuilder(ConversionQuery query,
182-
Long timeStampMillis) {
183-
ExchangeRateBuilder builder = new ExchangeRateBuilder(
158+
}
159+
160+
private Long getMillisSeconds(ConversionQuery query) {
161+
if (Objects.nonNull(query.getTimestamp())) {
162+
LocalDate timeStamp = query.getTimestamp().toLocalDate();
163+
164+
Date date = Date.from(timeStamp.atStartOfDay()
165+
.atZone(ZoneId.systemDefault()).toInstant());
166+
Long timeStampMillis = date.getTime();
167+
return timeStampMillis;
168+
} else {
169+
return getRecentKey();
170+
}
171+
}
172+
173+
private Long getRecentKey() {
174+
if (Objects.isNull(recentKey)) {
175+
Comparator<Long> reversed = Comparator.<Long>naturalOrder().reversed();
176+
recentKey = historicRates.keySet().stream().sorted(reversed).findFirst().get();
177+
}
178+
return recentKey;
179+
}
180+
181+
private ExchangeRateBuilder getBuilder(ConversionQuery query,
182+
Long timeStampMillis) {
183+
ExchangeRateBuilder builder = new ExchangeRateBuilder(
184184
ConversionContextBuilder.create(getProviderContext(), RateType.HISTORIC)
185-
.setTimestampMillis(timeStampMillis).build());
185+
.setTimestampMillis(timeStampMillis).build());
186186
builder.setBase(query.getBaseCurrency());
187187
builder.setTerm(query.getCurrency());
188-
return builder;
189-
}
188+
return builder;
189+
}
190190

191-
private ExchangeRate reverse(ExchangeRate rate){
192-
if(Objects.isNull(rate)){
191+
private ExchangeRate reverse(ExchangeRate rate) {
192+
if (Objects.isNull(rate)) {
193193
throw new IllegalArgumentException("Rate null is not reversable.");
194194
}
195195
return new ExchangeRateBuilder(rate).setRate(rate).setBase(rate.getCurrency()).setTerm(rate.getBaseCurrency())

src/main/java/org/javamoney/moneta/convert/internal/ECBCurrentRateProvider.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public class ECBCurrentRateProvider extends AbstractECBCurrentRateProvider {
4545
ProviderContextBuilder.of("ECB", RateType.DEFERRED).set("providerDescription", "European Central Bank")
4646
.set("days", 1).build();
4747

48-
public ECBCurrentRateProvider() throws MalformedURLException {
49-
super(CONTEXT);
50-
}
48+
public ECBCurrentRateProvider() throws MalformedURLException {
49+
super(CONTEXT);
50+
}
5151

52-
@Override
53-
public String getDataId() {
54-
return DATA_ID;
55-
}
52+
@Override
53+
public String getDataId() {
54+
return DATA_ID;
55+
}
5656

5757
}

src/main/java/org/javamoney/moneta/convert/internal/ECBHistoric90RateProvider.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,20 @@
4343
public class ECBHistoric90RateProvider extends AbstractECBCurrentRateProvider {
4444

4545

46-
private static final String DATA_ID = ECBHistoric90RateProvider.class.getSimpleName();
46+
private static final String DATA_ID = ECBHistoric90RateProvider.class.getSimpleName();
4747

4848
private static final ProviderContext CONTEXT =
4949
ProviderContextBuilder.of("ECB-HIST90", RateType.HISTORIC, RateType.DEFERRED)
5050
.set("providerDescription", "European Central Bank (last 90 days)").set("days", 90).build();
5151

52-
public ECBHistoric90RateProvider() throws MalformedURLException {
53-
super(CONTEXT);
54-
}
52+
public ECBHistoric90RateProvider() throws MalformedURLException {
53+
super(CONTEXT);
54+
}
5555

56-
@Override
57-
public String getDataId() {
58-
return DATA_ID;
59-
}
56+
@Override
57+
public String getDataId() {
58+
return DATA_ID;
59+
}
6060

6161

6262
}

src/main/java/org/javamoney/moneta/convert/internal/ECBHistoricRateProvider.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
*/
4444
public class ECBHistoricRateProvider extends AbstractECBCurrentRateProvider {
4545

46-
/**
46+
/**
4747
* The data id used for the LoaderService.
4848
*/
4949
private static final String DATA_ID = ECBHistoricRateProvider.class.getSimpleName();
@@ -56,17 +56,14 @@ public class ECBHistoricRateProvider extends AbstractECBCurrentRateProvider {
5656
.set("providerDescription", "European Central Bank").set("days", 1500).build();
5757

5858

59-
public ECBHistoricRateProvider() throws MalformedURLException {
60-
super(CONTEXT);
61-
}
62-
63-
@Override
64-
public String getDataId() {
65-
return DATA_ID;
66-
}
67-
68-
59+
public ECBHistoricRateProvider() throws MalformedURLException {
60+
super(CONTEXT);
61+
}
6962

63+
@Override
64+
public String getDataId() {
65+
return DATA_ID;
66+
}
7067

7168

7269
}

src/main/java/org/javamoney/moneta/convert/internal/IMFRateProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void newDataLoaded(String data, InputStream is) {
130130
}
131131

132132
@SuppressWarnings("unchecked")
133-
private void loadRatesTSV(InputStream inputStream) throws IOException, ParseException {
133+
private void loadRatesTSV(InputStream inputStream) throws IOException, ParseException {
134134
Map<CurrencyUnit, List<ExchangeRate>> newCurrencyToSdr = new HashMap<>();
135135
Map<CurrencyUnit, List<ExchangeRate>> newSdrToCurrency = new HashMap<>();
136136
NumberFormat f = new DecimalFormat("#0.0000000000");

0 commit comments

Comments
 (0)