X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FUnsignedLongSet.java;h=59393a3ee0c4699e06093a2e3750170625a01257;hb=99f80f27bee37bb23e345420bf14bb7bb4793c28;hp=daf958a987eece6b262bf1d729ac2ce012d31c45;hpb=ec1d15d2b52cb8f378ff685c2c3400b71c5ec360;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/UnsignedLongSet.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/UnsignedLongSet.java index daf958a987..59393a3ee0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/UnsignedLongSet.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/UnsignedLongSet.java @@ -12,10 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; -import com.google.common.collect.Collections2; -import com.google.common.collect.Range; import com.google.common.collect.RangeSet; -import com.google.common.primitives.UnsignedLong; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; @@ -23,7 +20,7 @@ import java.util.Collections; import java.util.NavigableSet; import java.util.TreeSet; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Mutable; +import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.concepts.WritableObjects; /** @@ -39,45 +36,29 @@ import org.opendaylight.yangtools.concepts.WritableObjects; abstract class UnsignedLongSet { @Beta @VisibleForTesting - public static final class Entry implements Comparable, Mutable { - // Note: mutable to allow efficient merges. - long lowerBits; - long upperBits; + public static final class Entry implements Comparable, Immutable { + public final long lowerBits; + public final long upperBits; private Entry(final long lowerBits, final long upperBits) { this.lowerBits = lowerBits; this.upperBits = upperBits; } - static Entry of(final long longBits) { + static @NonNull Entry of(final long longBits) { return of(longBits, longBits); } - static Entry of(final long lowerBits, final long upperBits) { + static @NonNull Entry of(final long lowerBits, final long upperBits) { return new Entry(lowerBits, upperBits); } - @VisibleForTesting - public UnsignedLong lower() { - return UnsignedLong.fromLongBits(lowerBits); + @NonNull Entry withLower(final long newLowerBits) { + return of(newLowerBits, upperBits); } - @VisibleForTesting - public UnsignedLong upper() { - return UnsignedLong.fromLongBits(upperBits); - } - - boolean contains(final long longBits) { - return Long.compareUnsigned(lowerBits, longBits) <= 0 && Long.compareUnsigned(upperBits, longBits) >= 0; - } - - Entry copy() { - return new Entry(lowerBits, upperBits); - } - - // Provides compatibility with RangeSet using [lower, upper + 1) - Range toUnsigned() { - return Range.closedOpen(UnsignedLong.fromLongBits(lowerBits), UnsignedLong.fromLongBits(upperBits + 1)); + @NonNull Entry withUpper(final long newUpperBits) { + return of(lowerBits, newUpperBits); } // These two methods provide the same serialization format as the one we've used to serialize @@ -139,21 +120,23 @@ abstract class UnsignedLongSet { public final boolean contains(final long longBits) { final var head = ranges.floor(Entry.of(longBits)); - return head != null && head.contains(longBits); + return head != null + && Long.compareUnsigned(head.lowerBits, longBits) <= 0 + && Long.compareUnsigned(head.upperBits, longBits) >= 0; } public final boolean isEmpty() { return ranges.isEmpty(); } - public final int size() { + public final int rangeSize() { return ranges.size(); } public abstract @NonNull ImmutableUnsignedLongSet immutableCopy(); public final @NonNull MutableUnsignedLongSet mutableCopy() { - return new MutableUnsignedLongSet(new TreeSet<>(Collections2.transform(ranges, Entry::copy))); + return new MutableUnsignedLongSet(new TreeSet<>(ranges)); } public final @NonNull NavigableSet ranges() {