@Override public ReferenceData getReferenceData() { return ReferenceData.standard(); } };
/** * Resolves this identifier to a holiday calendar using the specified reference data. * <p> * This returns an instance of {@link HolidayCalendar} that can perform calculations. * <p> * Resolved objects may be bound to data that changes over time, such as holiday calendars. * If the data changes, such as the addition of a new holiday, the resolved form will not be updated. * Care must be taken when placing the resolved form in a cache or persistence layer. * * @param refData the reference data, used to resolve the reference * @return the resolved holiday calendar * @throws ReferenceDataNotFoundException if the identifier is not found */ @Override public HolidayCalendar resolve(ReferenceData refData) { return refData.getValue(this); }
public void test_combinedWith_other_other_noClashSame() { ReferenceData test = REF_DATA1.combinedWith(REF_DATA12); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.getValue(ID2), VAL2); }
public void test_standard() { ReferenceData test = ReferenceData.standard(); assertEquals(test.containsValue(HolidayCalendarIds.NO_HOLIDAYS), true); assertEquals(test.containsValue(HolidayCalendarIds.SAT_SUN), true); assertEquals(test.containsValue(HolidayCalendarIds.FRI_SAT), true); assertEquals(test.containsValue(HolidayCalendarIds.THU_FRI), true); assertEquals(test.containsValue(HolidayCalendarIds.GBLO), true); }
public void test_empty() { ReferenceData test = ReferenceData.empty(); assertEquals(test.containsValue(ID1), false); assertThrows(() -> test.getValue(ID1), ReferenceDataNotFoundException.class); assertEquals(test.findValue(ID1), Optional.empty()); }
public void test_defaultMethods() { assertEquals(REF_DATA1.containsValue(ID1), true); assertEquals(REF_DATA1.containsValue(ID2), false); assertEquals(REF_DATA1.getValue(ID1), VAL1); assertThrows(() -> REF_DATA1.getValue(ID2), ReferenceDataNotFoundException.class); assertEquals(REF_DATA1.findValue(ID1), Optional.of(VAL1)); assertEquals(REF_DATA1.findValue(ID2), Optional.empty()); assertEquals(REF_DATA1.queryValueOrNull(ID1), VAL1); assertEquals(REF_DATA1.queryValueOrNull(ID2), null); assertEquals(ID1.queryValueOrNull(REF_DATA1), VAL1); assertEquals(ID2.queryValueOrNull(REF_DATA1), null); }
public void test_of_RD() { Map<ReferenceDataId<?>, Object> dataMap = ImmutableMap.of(ID1, VAL1, ID2, VAL2); ReferenceData test = ReferenceData.of(dataMap); assertEquals(test.containsValue(HolidayCalendarIds.NO_HOLIDAYS), true); assertEquals(test.containsValue(HolidayCalendarIds.SAT_SUN), true); assertEquals(test.containsValue(HolidayCalendarIds.FRI_SAT), true); assertEquals(test.containsValue(HolidayCalendarIds.THU_FRI), true); 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), ReferenceDataNotFoundException.class); assertEquals(test.findValue(ID3), Optional.empty()); }
public void test_of_single() { ReferenceData test = ImmutableReferenceData.of(ID1, VAL1); assertEquals(test.containsValue(HolidayCalendarIds.NO_HOLIDAYS), false); assertEquals(test.containsValue(HolidayCalendarIds.SAT_SUN), false); assertEquals(test.containsValue(HolidayCalendarIds.FRI_SAT), false); assertEquals(test.containsValue(HolidayCalendarIds.THU_FRI), false); 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), ReferenceDataNotFoundException.class); assertEquals(test.findValue(ID2), Optional.empty()); }
public void test_defaulting() { ReferenceData base = ImmutableReferenceData.of(ImmutableMap.of(HolidayCalendarIds.FRI_SAT, HolidayCalendars.FRI_SAT)); ReferenceData test = HolidayCalendars.defaultingReferenceData(base); assertEquals(test.getValue(HolidayCalendarIds.FRI_SAT), HolidayCalendars.FRI_SAT); assertEquals(test.getValue(HolidayCalendarIds.GBLO), DEFAULTED_GBLO); assertEquals(test.containsValue(HolidayCalendarIds.FRI_SAT), true); assertEquals(test.containsValue(HolidayCalendarIds.GBLO), true); assertEquals(test.containsValue(new TestingReferenceDataId("1")), false); }
public void test() { EtdFutureSecurity test = sut(); assertEquals(test.getVariant(), EtdVariant.MONTHLY); assertEquals(test.getType(), EtdType.FUTURE); assertEquals(test.getCurrency(), Currency.GBP); assertEquals(test.getUnderlyingIds(), ImmutableSet.of()); assertEquals(test.createProduct(REF_DATA), test); assertEquals( test.createTrade(TradeInfo.empty(), 1, 2, ReferenceData.empty()), EtdFutureTrade.of(TradeInfo.empty(), test, 1, 2)); assertEquals( test.createPosition(PositionInfo.empty(), 1, ReferenceData.empty()), EtdFuturePosition.ofNet(PositionInfo.empty(), test, 1)); assertEquals( test.createPosition(PositionInfo.empty(), 1, 2, ReferenceData.empty()), EtdFuturePosition.ofLongShort(PositionInfo.empty(), test, 1, 2)); }
@Override public <T> T queryValueOrNull(ReferenceDataId<T> id) { T value1 = refData1.queryValueOrNull(id); return value1 != null ? value1 : refData2.queryValueOrNull(id); }
public void test_minimal() { ReferenceData test = ReferenceData.minimal(); assertEquals(test.containsValue(HolidayCalendarIds.NO_HOLIDAYS), true); assertEquals(test.containsValue(HolidayCalendarIds.SAT_SUN), true); assertEquals(test.containsValue(HolidayCalendarIds.FRI_SAT), true); assertEquals(test.containsValue(HolidayCalendarIds.THU_FRI), true); assertEquals(test.containsValue(HolidayCalendarIds.GBLO), false); }
/** * Parses the contract specification from the row. * * @param row the CSV row to parse * @param type the ETD type * @return the contract specification * @throws IllegalArgumentException if the specification is not found */ public default EtdContractSpec parseEtdContractSpec(CsvRow row, EtdType type) { ExchangeId exchangeId = ExchangeId.of(row.getValue(EXCHANGE_FIELD)); EtdContractCode contractCode = EtdContractCode.of(row.getValue(CONTRACT_CODE_FIELD)); EtdContractSpecId specId = EtdIdUtils.contractSpecId(type, exchangeId, contractCode); return getReferenceData().findValue(specId).orElseThrow( () -> new IllegalArgumentException("ETD contract specification not found in reference data: " + specId)); }
@Override public ReferenceData combinedWith(ReferenceData other) { if (other instanceof ImmutableReferenceData) { ImmutableReferenceData otherData = (ImmutableReferenceData) other; // hash map so that keys can overlap, with this instance taking priority Map<ReferenceDataId<?>, Object> combined = new HashMap<>(); combined.putAll(otherData.values); combined.putAll(this.values); return new ImmutableReferenceData(combined); } return ReferenceData.super.combinedWith(other); }
@Override public boolean containsValue(ReferenceDataId<?> id) { return refData1.containsValue(id) || refData2.containsValue(id); }
public void test_combinedWith_other_other_noClash() { ReferenceData test = REF_DATA1.combinedWith(REF_DATA2); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.getValue(ID2), VAL2); }
public void test() { EtdOptionSecurity test = sut(); assertEquals(test.getVariant(), EtdVariant.MONTHLY); assertEquals(test.getType(), EtdType.OPTION); assertEquals(test.getCurrency(), Currency.GBP); assertEquals(test.getUnderlyingIds(), ImmutableSet.of()); assertEquals(test.createProduct(REF_DATA), test); assertEquals( test.createTrade(TradeInfo.empty(), 1, 2, ReferenceData.empty()), EtdOptionTrade.of(TradeInfo.empty(), test, 1, 2)); assertEquals( test.createPosition(PositionInfo.empty(), 1, ReferenceData.empty()), EtdOptionPosition.ofNet(PositionInfo.empty(), test, 1)); assertEquals( test.createPosition(PositionInfo.empty(), 1, 2, ReferenceData.empty()), EtdOptionPosition.ofLongShort(PositionInfo.empty(), test, 1, 2)); }
/** * Low-level method to query the reference data value associated with this identifier, * returning null if not found. * <p> * This is a low-level method that obtains the reference data value, returning null instead of an error. * Applications should use {@link ReferenceData#getValue(ReferenceDataId)} in preference to this method. * * @param refData the reference data to lookup the value in * @return the reference data value, null if not found */ public default T queryValueOrNull(ReferenceData refData) { return refData.queryValueOrNull(this); }
@Override public ReferenceData combinedWith(ReferenceData other) { ReferenceData combined = underlying.combinedWith(other); return new HolidaySafeReferenceData(combined); }