Skip to content

Commit da75646

Browse files
authored
Expand coverage of UseCollectionInterfaces to LinkedList, Stack, TreeMap, TreeSet and PriorityQueue (#718)
1 parent d01363c commit da75646

File tree

2 files changed

+338
-4
lines changed

2 files changed

+338
-4
lines changed

src/main/java/org/openrewrite/staticanalysis/UseCollectionInterfaces.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public Duration getEstimatedEffortPerOccurrence() {
6565
rspecRulesReplaceTypeMap.put("java.util.AbstractSequentialList", "java.util.List");
6666
rspecRulesReplaceTypeMap.put("java.util.ArrayList", "java.util.List");
6767
rspecRulesReplaceTypeMap.put("java.util.concurrent.CopyOnWriteArrayList", "java.util.List");
68+
rspecRulesReplaceTypeMap.put("java.util.LinkedList", "java.util.List");
69+
rspecRulesReplaceTypeMap.put("java.util.Stack", "java.util.List");
6870
rspecRulesReplaceTypeMap.put("java.util.Vector", "java.util.List");
6971
// Map
7072
rspecRulesReplaceTypeMap.put("java.util.AbstractMap", "java.util.Map");
@@ -73,17 +75,20 @@ public Duration getEstimatedEffortPerOccurrence() {
7375
rspecRulesReplaceTypeMap.put("java.util.Hashtable", "java.util.Map");
7476
rspecRulesReplaceTypeMap.put("java.util.IdentityHashMap", "java.util.Map");
7577
rspecRulesReplaceTypeMap.put("java.util.LinkedHashMap", "java.util.Map");
78+
rspecRulesReplaceTypeMap.put("java.util.TreeMap", "java.util.Map");
7679
rspecRulesReplaceTypeMap.put("java.util.WeakHashMap", "java.util.Map");
7780
// ConcurrentMap
7881
rspecRulesReplaceTypeMap.put("java.util.concurrent.ConcurrentHashMap", "java.util.concurrent.ConcurrentMap");
7982
rspecRulesReplaceTypeMap.put("java.util.concurrent.ConcurrentSkipListMap", "java.util.concurrent.ConcurrentMap");
8083
// Queue
8184
rspecRulesReplaceTypeMap.put("java.util.AbstractQueue", "java.util.Queue");
8285
rspecRulesReplaceTypeMap.put("java.util.concurrent.ConcurrentLinkedQueue", "java.util.Queue");
86+
rspecRulesReplaceTypeMap.put("java.util.PriorityQueue", "java.util.Queue");
8387
// Set
8488
rspecRulesReplaceTypeMap.put("java.util.AbstractSet", "java.util.Set");
8589
rspecRulesReplaceTypeMap.put("java.util.HashSet", "java.util.Set");
8690
rspecRulesReplaceTypeMap.put("java.util.LinkedHashSet", "java.util.Set");
91+
rspecRulesReplaceTypeMap.put("java.util.TreeSet", "java.util.Set");
8792
rspecRulesReplaceTypeMap.put("java.util.concurrent.CopyOnWriteArraySet", "java.util.Set");
8893
}
8994

@@ -279,6 +284,16 @@ private static class InterfaceIncompatibleMethodDetector extends JavaIsoVisitor<
279284
"addElement", "capacity", "copyInto", "elementAt", "elements", "ensureCapacity", "insertElementAt", "removeAllElements", "removeElement", "removeElementAt", "setElementAt", "setSize", "trimToSize"))));
280285
nonInterfaceMethods.put("java.util.ArrayList", unmodifiableSet(new HashSet<>(Arrays.asList(
281286
"ensureCapacity", "trimToSize"))));
287+
nonInterfaceMethods.put("java.util.LinkedList", unmodifiableSet(new HashSet<>(Arrays.asList(
288+
// These have been promoted to Java 21 SequencedCollection interface, but we don't check that here
289+
"addFirst", "addLast", "getFirst", "getLast", "removeFirst", "removeLast",
290+
"descendingIterator", "offerFirst", "offerLast", "peekFirst", "peekLast", "pollFirst", "pollLast", "pop", "push", "removeFirstOccurrence", "removeLastOccurrence"))));
291+
nonInterfaceMethods.put("java.util.Stack", unmodifiableSet(new HashSet<>(Arrays.asList(
292+
"empty", "peek", "pop", "push", "search"))));
293+
nonInterfaceMethods.put("java.util.TreeMap", unmodifiableSet(new HashSet<>(Arrays.asList(
294+
"ceilingEntry", "ceilingKey", "descendingKeySet", "descendingMap", "firstEntry", "firstKey", "floorEntry", "floorKey", "headMap", "higherEntry", "higherKey", "lastEntry", "lastKey", "lowerEntry", "lowerKey", "navigableKeySet", "pollFirstEntry", "pollLastEntry", "subMap", "tailMap"))));
295+
nonInterfaceMethods.put("java.util.TreeSet", unmodifiableSet(new HashSet<>(Arrays.asList(
296+
"ceiling", "descendingIterator", "descendingSet", "first", "floor", "headSet", "higher", "last", "lower", "pollFirst", "pollLast", "subSet", "tailSet"))));
282297
}
283298

284299
@Override

0 commit comments

Comments
 (0)