Split ImmutableUnsignedLongSet.readFrom() 60/114860/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 7 Jan 2025 18:32:57 +0000 (19:32 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 8 Jan 2025 12:57:12 +0000 (13:57 +0100)
We have two methods of reading entries. Split them into separate
methods, making things a tad easier to follow.

Ditch use of ArrayList, as using Entry[] results in a better path
to ImmutableSortedSet.construct().

Change-Id: I0c91fc0b07d5b9e10f4ba03454ebff5237b20da3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ImmutableUnsignedLongSet.java

index 39348716f3e696f972b823547cdb1df031834a05..1602a3c8c718821f5d9e2161cdbcb2c8fefeabfb 100644 (file)
@@ -12,7 +12,6 @@ import com.google.common.collect.ImmutableSortedSet;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.NavigableSet;
 import java.util.TreeSet;
 import org.eclipse.jdt.annotation.NonNull;
@@ -58,21 +57,24 @@ public final class ImmutableUnsignedLongSet extends UnsignedLongSet implements I
         if (size == 0) {
             return EMPTY;
         }
+        return new ImmutableUnsignedLongSet(size <= ARRAY_MAX_ELEMENTS ? readArrayRanges(in, size)
+            : readTreeRanges(in, size));
+    }
+
+    private static ImmutableSortedSet<Entry> readArrayRanges(final DataInput in, final int size) throws IOException {
+        final var ranges = new Entry[size];
+        for (int i = 0; i < size; ++i) {
+            ranges[i] = Entry.readUnsigned(in);
+        }
+        return ImmutableSortedSet.copyOf(ranges);
+    }
 
-        final NavigableSet<Entry> ranges;
-        if (size <= ARRAY_MAX_ELEMENTS) {
-            final var entries = new ArrayList<Entry>(size);
-            for (int i = 0; i < size; ++i) {
-                entries.add(Entry.readUnsigned(in));
-            }
-            ranges = ImmutableSortedSet.copyOf(entries);
-        } else {
-            ranges = new TreeSet<>();
-            for (int i = 0; i < size; ++i) {
-                ranges.add(Entry.readUnsigned(in));
-            }
+    private static TreeSet<Entry> readTreeRanges(final DataInput in, final int size) throws IOException {
+        final var ranges = new TreeSet<Entry>();
+        for (int i = 0; i < size; ++i) {
+            ranges.add(Entry.readUnsigned(in));
         }
-        return new ImmutableUnsignedLongSet(ranges);
+        return ranges;
     }
 
     @Override