X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FUnsignedLongSet.java;fp=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FUnsignedLongSet.java;h=b9bf8c33f3df8c889c9a3bc293a7179f9e8c0aa2;hb=8f21fe2e71d6260ffc6782f6f9e4d452f138ccb7;hp=e3fa6263e634a99078de115f7ba51314b76ebb60;hpb=968834bfb4d8ba02c11a8ff5e4dd102a6eddc6b3;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 e3fa6263e6..b9bf8c33f3 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,19 +12,17 @@ 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; -import java.util.Collection; 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; /** @@ -40,40 +38,43 @@ 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 { + final long lowerBits; + 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() { + public @NonNull UnsignedLong lower() { return UnsignedLong.fromLongBits(lowerBits); } @VisibleForTesting - public UnsignedLong upper() { + public @NonNull UnsignedLong upper() { return UnsignedLong.fromLongBits(upperBits); } - Entry copy() { - return new Entry(lowerBits, upperBits); + @NonNull Entry withLower(final long newLowerBits) { + return of(newLowerBits, upperBits); + } + + @NonNull Entry withUpper(final long newUpperBits) { + return of(lowerBits, newUpperBits); } // Provides compatibility with RangeSet using [lower, upper + 1) - Range toUnsigned() { + @NonNull Range toUnsigned() { return Range.closedOpen(UnsignedLong.fromLongBits(lowerBits), UnsignedLong.fromLongBits(upperBits + 1)); } @@ -152,7 +153,7 @@ abstract class UnsignedLongSet { public abstract @NonNull ImmutableUnsignedLongSet immutableCopy(); public final @NonNull MutableUnsignedLongSet mutableCopy() { - return new MutableUnsignedLongSet(new TreeSet<>(copiedRanges())); + return new MutableUnsignedLongSet(new TreeSet<>(ranges)); } public final @NonNull NavigableSet ranges() { @@ -163,10 +164,6 @@ abstract class UnsignedLongSet { return ranges; } - final @NonNull Collection copiedRanges() { - return Collections2.transform(ranges, Entry::copy); - } - @Override public final int hashCode() { return ranges.hashCode();