Merge pull request #8125 from eugenp/revert-8119-BAEL-3275-2

Revert "BAEL-3275: Using blocking queue for pub-sub"
This commit is contained in:
Eric Martin
2019-10-31 20:43:47 -05:00
committed by GitHub
parent db85c8f275
commit 3225470df5
20543 changed files with 1642750 additions and 0 deletions
@@ -0,0 +1,42 @@
package com.baeldung.rate;
import com.baeldung.rate.exception.ProviderNotFoundException;
import com.baeldung.rate.spi.ExchangeRateProvider;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;
public final class ExchangeRate {
private static final String DEFAULT_PROVIDER = "com.baeldung.rate.spi.YahooFinanceExchangeRateProvider";
//All providers
public static List<ExchangeRateProvider> providers() {
List<ExchangeRateProvider> services = new ArrayList<>();
ServiceLoader<ExchangeRateProvider> loader = ServiceLoader.load(ExchangeRateProvider.class);
loader.forEach(exchangeRateProvider -> {
services.add(exchangeRateProvider);
});
return services;
}
//Default provider
public static ExchangeRateProvider provider() {
return provider(DEFAULT_PROVIDER);
}
//provider by name
public static ExchangeRateProvider provider(String providerName) {
ServiceLoader<ExchangeRateProvider> loader = ServiceLoader.load(ExchangeRateProvider.class);
Iterator<ExchangeRateProvider> it = loader.iterator();
while (it.hasNext()) {
ExchangeRateProvider provider = it.next();
if (providerName.equals(provider.getClass().getName())) {
return provider;
}
}
throw new ProviderNotFoundException("Exchange Rate provider " + providerName + " not found");
}
}
@@ -0,0 +1,44 @@
package com.baeldung.rate.api;
import java.math.BigDecimal;
import java.time.LocalDate;
public class Quote {
private String currency;
private BigDecimal ask;
private BigDecimal bid;
private LocalDate date;
//...
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public BigDecimal getAsk() {
return ask;
}
public void setAsk(BigDecimal ask) {
this.ask = ask;
}
public BigDecimal getBid() {
return bid;
}
public void setBid(BigDecimal bid) {
this.bid = bid;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
}
@@ -0,0 +1,8 @@
package com.baeldung.rate.api;
import java.time.LocalDate;
import java.util.List;
public interface QuoteManager {
List<Quote> getQuotes(String baseCurrency, LocalDate date);
}
@@ -0,0 +1,13 @@
package com.baeldung.rate.exception;
public class ProviderNotFoundException extends RuntimeException {
public ProviderNotFoundException() {
super();
}
public ProviderNotFoundException(String message) {
super(message);
}
}
@@ -0,0 +1,7 @@
package com.baeldung.rate.spi;
import com.baeldung.rate.api.QuoteManager;
public interface ExchangeRateProvider {
QuoteManager create();
}