/** * Checks if this market data contains a value for the specified identifier. * * @param id the identifier to find * @return true if the market data contains a value for the identifier */ public default boolean containsValue(MarketDataId<?> id) { return findValue(id).isPresent(); }
@Override @SuppressWarnings("unchecked") public <R> Optional<R> findValue(MarketDataId<R> id) { if (this.id.equals(id)) { return Optional.of((R) value); } return underlying.findValue(id); }
@Override public <T> T getValue(MarketDataId<T> id) { Optional<T> value1 = underlying1.findValue(id); return value1.isPresent() ? value1.get() : underlying2.getValue(id); }
@SuppressWarnings("unchecked") @Override public <T> Optional<MarketDataBox<T>> findValue(MarketDataId<T> id) { return underlying.findValue(id).map(v -> MarketDataBox.ofSingleValue(v)); }
/** * Gets the market data value associated with the specified identifier. * <p> * If this market data instance contains the identifier, the value will be returned. * Otherwise, an exception will be thrown. * * @param <T> the type of the market data value * @param id the identifier to find * @return the market data value * @throws MarketDataNotFoundException if the identifier is not found */ public default <T> T getValue(MarketDataId<T> id) { return findValue(id) .orElseThrow(() -> new MarketDataNotFoundException(Messages.format( "Market data not found for '{}' of type '{}'", id, id.getClass().getSimpleName()))); }
Optional<FxRate> rate = marketData.findValue(FxRateId.of(baseCurrency, counterCurrency, fxRatesSource)); if (rate.isPresent()) { return rate.get().fxRate(baseCurrency, counterCurrency); Optional<FxRate> rateBase1 = marketData.findValue(FxRateId.of(baseCurrency, triangulationCurrency, fxRatesSource)); Optional<FxRate> rateBase2 = marketData.findValue(FxRateId.of(triangulationCurrency, counterCurrency, fxRatesSource)); if (rateBase1.isPresent() && rateBase2.isPresent()) { return rateBase1.get().crossRate(rateBase2.get()).fxRate(baseCurrency, counterCurrency); Optional<FxRate> rateBase1 = marketData.findValue(FxRateId.of(baseCurrency, triangularBaseCcy, fxRatesSource)); Optional<FxRate> rateBase2 = marketData.findValue(FxRateId.of(triangularBaseCcy, counterCurrency, fxRatesSource)); if (rateBase1.isPresent() && rateBase2.isPresent()) { return rateBase1.get().crossRate(rateBase2.get()).fxRate(baseCurrency, counterCurrency); Optional<FxRate> rateCounter1 = marketData.findValue(FxRateId.of(baseCurrency, triangularCounterCcy, fxRatesSource)); Optional<FxRate> rateCounter2 = marketData.findValue(FxRateId.of(triangularCounterCcy, counterCurrency, fxRatesSource)); if (rateCounter1.isPresent() && rateCounter2.isPresent()) { return rateCounter1.get().crossRate(rateCounter2.get()).fxRate(baseCurrency, counterCurrency); marketData.findValue(FxRateId.of(triangularBaseCcy, triangularCounterCcy, fxRatesSource)); if (rateTriangular2.isPresent()) { return rateBase1.get().crossRate(rateTriangular2.get()).crossRate(rateCounter2.get())
public void test_of_3arg() { Map<MarketDataId<?>, Object> dataMap = ImmutableMap.of(ID1, VAL1); Map<ObservableId, LocalDateDoubleTimeSeries> tsMap = ImmutableMap.of(ID5, TIME_SERIES); MarketData test = MarketData.of(VAL_DATE, dataMap, tsMap); assertEquals(test.containsValue(ID1), true); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.findValue(ID1), Optional.of(VAL1)); assertEquals(test.containsValue(ID2), false); assertThrows(() -> test.getValue(ID2), MarketDataNotFoundException.class); assertEquals(test.findValue(ID2), Optional.empty()); assertEquals(test.getIds(), ImmutableSet.of(ID1)); assertEquals(test.getTimeSeries(ID4), LocalDateDoubleTimeSeries.empty()); assertEquals(test.getTimeSeries(ID5), TIME_SERIES); }
public void test_of_2arg() { Map<MarketDataId<?>, Object> dataMap = ImmutableMap.of(ID1, VAL1, ID2, VAL2); MarketData test = MarketData.of(VAL_DATE, dataMap); assertEquals(test.containsValue(ID1), true); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.findValue(ID1), Optional.of(VAL1)); assertEquals(test.containsValue(ID2), true); assertEquals(test.getValue(ID2), VAL2); assertEquals(test.findValue(ID2), Optional.of(VAL2)); assertEquals(test.containsValue(ID3), false); assertThrows(() -> test.getValue(ID3), MarketDataNotFoundException.class); assertEquals(test.findValue(ID3), Optional.empty()); assertEquals(test.getIds(), ImmutableSet.of(ID1, ID2)); assertEquals(test.findIds(ID1.getMarketDataName()), ImmutableSet.of(ID1)); assertEquals(test.findIds(new TestingName("Foo")), ImmutableSet.of()); assertEquals(test.getTimeSeries(ID4), LocalDateDoubleTimeSeries.empty()); assertEquals(test.getTimeSeries(ID5), LocalDateDoubleTimeSeries.empty()); }