Cleanup MutableOffsetMap a bit 37/102137/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 17 Aug 2022 15:41:57 +0000 (17:41 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 17 Aug 2022 15:42:22 +0000 (17:42 +0200)
Use instanceof patterns and guarantee @NonNull clone().

Change-Id: I40efddbf0d248427cd9d01cd13ef26db94b0377a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
common/util/src/main/java/org/opendaylight/yangtools/util/MutableOffsetMap.java

index 4a020cca484b008126ecc90fb1add1de83656a0c..1c7e478e3028f970969457a073025b31b82837ca 100644 (file)
@@ -182,15 +182,13 @@ public abstract class MutableOffsetMap<K, V> extends AbstractMap<K, V> implement
      * @throws NullPointerException if {@code map} is null
      */
     public static <K, V> @NonNull MutableOffsetMap<K, V> unorderedCopyOf(final Map<K, V> map) {
-        if (map instanceof Unordered) {
-            return ((Unordered<K, V>) map).clone();
-        }
-        if (map instanceof ImmutableOffsetMap) {
-            final ImmutableOffsetMap<K, V> om = (ImmutableOffsetMap<K, V>) map;
+        if (map instanceof Unordered<K, V> unordered) {
+            return unordered.clone();
+        } else if (map instanceof ImmutableOffsetMap<K, V> om) {
             return new Unordered<>(om.offsets(), om.objects());
+        } else {
+            return new Unordered<>(map);
         }
-
-        return new Unordered<>(map);
     }
 
     /**
@@ -435,9 +433,8 @@ public abstract class MutableOffsetMap<K, V> extends AbstractMap<K, V> implement
 
     @SuppressWarnings("unchecked")
     @Override
-    public MutableOffsetMap<K, V> clone() {
+    public @NonNull MutableOffsetMap<K, V> clone() {
         final MutableOffsetMap<K, V> ret;
-
         try {
             ret = (MutableOffsetMap<K, V>) super.clone();
         } catch (CloneNotSupportedException e) {
@@ -476,10 +473,8 @@ public abstract class MutableOffsetMap<K, V> extends AbstractMap<K, V> implement
             if (noNewKeys() && offsets.equals(om.offsets())) {
                 return Arrays.deepEquals(objects, om.objects());
             }
-        } else if (obj instanceof MutableOffsetMap<?, ?> om) {
-            if (offsets.equals(om.offsets)) {
-                return Arrays.deepEquals(objects, om.objects) && equalNewKeys(om);
-            }
+        } else if (obj instanceof MutableOffsetMap<?, ?> om && offsets.equals(om.offsets)) {
+            return Arrays.deepEquals(objects, om.objects) && equalNewKeys(om);
         }
 
         // Fall back to brute map compare