Object readResolve() { if (mapOfRanges.isEmpty()) { return of(); } else { return createRangeMap(); } }
@Override public ImmutableRangeMap<K, V> subRangeMap(Range<K> subRange) { if (range.isConnected(subRange)) { return outer.subRangeMap(subRange.intersection(range)); } else { return ImmutableRangeMap.of(); } } };
Object readResolve() { if (mapOfRanges.isEmpty()) { return of(); } else { return createRangeMap(); } }
Object readResolve() { if (mapOfRanges.isEmpty()) { return of(); } else { return createRangeMap(); } }
public void testSpanEmpty() { try { ImmutableRangeMap.of().span(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException expected) { } }
@Override public ImmutableRangeMap<K, V> subRangeMap(Range<K> subRange) { if (range.isConnected(subRange)) { return outer.subRangeMap(subRange.intersection(range)); } else { return ImmutableRangeMap.of(); } } };
@Override public ImmutableRangeMap<K, V> subRangeMap(final Range<K> range) { if (checkNotNull(range).isEmpty()) { return ImmutableRangeMap.of(); } else if (ranges.isEmpty() || range.encloses(span())) { return this; KeyAbsentBehavior.NEXT_HIGHER); if (lowerIndex >= upperIndex) { return ImmutableRangeMap.of();
/** * A builder for immutable range maps. Overlapping ranges are prohibited. * * @since 14.0 */ public static final class Builder<K extends Comparable<?>, V> { private final List<Entry<Range<K>, V>> entries; public Builder() { this.entries = Lists.newArrayList(); } /** * Associates the specified range with the specified value. * * @throws IllegalArgumentException if {@code range} is empty */ @CanIgnoreReturnValue public Builder<K, V> put(Range<K> range, V value) { checkNotNull(range); checkNotNull(value); checkArgument(!range.isEmpty(), "Range must not be empty, but was %s", range); entries.add(Maps.immutableEntry(range, value)); return this; } /** Copies all associations from the specified range map into this builder. */ @CanIgnoreReturnValue public Builder<K, V> putAll(RangeMap<K, ? extends V> rangeMap) { for (Entry<Range<K>, ? extends V> entry : rangeMap.asMapOfRanges().entrySet()) {
@Override public ImmutableRangeMap<K, V> subRangeMap(final Range<K> range) { if (checkNotNull(range).isEmpty()) { return ImmutableRangeMap.of(); } else if (ranges.isEmpty() || range.encloses(span())) { return this; KeyAbsentBehavior.NEXT_HIGHER); if (lowerIndex >= upperIndex) { return ImmutableRangeMap.of();
public void testSerialization() { ImmutableRangeMap<Integer, Integer> emptyRangeMap = ImmutableRangeMap.of(); SerializableTester.reserializeAndAssert(emptyRangeMap); ImmutableRangeMap<Integer, Integer> nonEmptyRangeMap = new ImmutableRangeMap.Builder<Integer, Integer>() .put(Range.closed(2, 4), 5) .put(Range.open(6, 7), 3) .put(Range.closedOpen(8, 10), 4) .put(Range.openClosed(15, 17), 2) .build(); ImmutableMap<Range<Integer>, Integer> test = nonEmptyRangeMap.asMapOfRanges(); for (Range<Integer> range : test.keySet()) { SerializableTester.reserializeAndAssert(range); } SerializableTester.reserializeAndAssert(test.keySet()); SerializableTester.reserializeAndAssert(nonEmptyRangeMap); }
@Value.Default default TimestampPartitioningMap<Integer> timestampToTransactionsTableSchemaVersion() { Range<Long> startOfTime = Range.atLeast(1L); return TimestampPartitioningMap.of(ImmutableRangeMap.of(startOfTime, 1)); }
@Test public void throwsIfInitialMapIsEmpty() { assertThatThrownBy(() -> TimestampPartitioningMap.of(ImmutableRangeMap.of())) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("its span does not cover precisely all timestamps"); }
@Test public void throwsIfInitialMapExceedsTimestampRange() { assertThatThrownBy(() -> TimestampPartitioningMap.of(ImmutableRangeMap.of(Range.atLeast(-42L), 1))) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("its span does not cover precisely all timestamps"); }
@Test public void throwsIfInitialMapDoesNotCoverFullRange() { assertThatThrownBy(() -> TimestampPartitioningMap.of(ImmutableRangeMap.of(Range.atLeast(42L), 1))) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("its span does not cover precisely all timestamps"); }
Object readResolve() { if (mapOfRanges.isEmpty()) { return of(); } else { return createRangeMap(); } }
Object readResolve() { if (mapOfRanges.isEmpty()) { return of(); } else { return createRangeMap(); } }
Object readResolve() { if (mapOfRanges.isEmpty()) { return of(); } else { return createRangeMap(); } }
@Override public ImmutableRangeMap<K, V> subRangeMap(Range<K> subRange) { if (range.isConnected(subRange)) { return outer.subRangeMap(subRange.intersection(range)); } else { return ImmutableRangeMap.of(); } } };
@Override public ImmutableRangeMap<K, V> subRangeMap(Range<K> subRange) { if (range.isConnected(subRange)) { return outer.subRangeMap(subRange.intersection(range)); } else { return ImmutableRangeMap.of(); } } };
@Override public ImmutableRangeMap<K, V> subRangeMap(Range<K> subRange) { if (range.isConnected(subRange)) { return outer.subRangeMap(subRange.intersection(range)); } else { return ImmutableRangeMap.of(); } } };