@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 ReferenceData combinedWith(ReferenceData other) { ReferenceData combined = underlying.combinedWith(other); return new HolidaySafeReferenceData(combined); }
public void test_combinedWith_other_other_clash() { ReferenceData combined = REF_DATA1.combinedWith(REF_DATA3); assertEquals(combined.getValue(ID1), VAL1); }
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_combinedWith_other_other_noClash() { ReferenceData test = REF_DATA1.combinedWith(REF_DATA2); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.getValue(ID2), VAL2); }
public void test_defaulting_combinedWith() { ReferenceData base1 = ImmutableReferenceData.of(ImmutableMap.of(HolidayCalendarIds.THU_FRI, HolidayCalendars.THU_FRI)); ReferenceData base2 = ImmutableReferenceData.of(ImmutableMap.of( HolidayCalendarIds.THU_FRI, HolidayCalendars.FRI_SAT, HolidayCalendarIds.FRI_SAT, HolidayCalendars.FRI_SAT)); ReferenceData testDefaulted = HolidayCalendars.defaultingReferenceData(base1); assertEquals(testDefaulted.getValue(HolidayCalendarIds.THU_FRI), HolidayCalendars.THU_FRI); assertEquals(testDefaulted.getValue(HolidayCalendarIds.FRI_SAT), DEFAULTED_FRI_SAT); assertEquals(testDefaulted.getValue(HolidayCalendarIds.GBLO), DEFAULTED_GBLO); ReferenceData testCombined = testDefaulted.combinedWith(base2); assertEquals(testCombined.getValue(HolidayCalendarIds.THU_FRI), HolidayCalendars.THU_FRI); // test1 takes precedence assertEquals(testCombined.getValue(HolidayCalendarIds.FRI_SAT), HolidayCalendars.FRI_SAT); // from test2 assertEquals(testCombined.getValue(HolidayCalendarIds.GBLO), DEFAULTED_GBLO); // from default ReferenceData testCombinedRevered = base2.combinedWith(testDefaulted); assertEquals(testCombinedRevered.getValue(HolidayCalendarIds.THU_FRI), HolidayCalendars.FRI_SAT); // test2 takes precedence assertEquals(testCombinedRevered.getValue(HolidayCalendarIds.FRI_SAT), HolidayCalendars.FRI_SAT); // from test2 assertEquals(testCombinedRevered.getValue(HolidayCalendarIds.GBLO), DEFAULTED_GBLO); // from default }