diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchmem/AbstractMemSearchTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchmem/AbstractMemSearchTest.java index 6e57c3ad42..cd4e33b51d 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchmem/AbstractMemSearchTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchmem/AbstractMemSearchTest.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import javax.swing.*; +import org.apache.commons.collections4.IteratorUtils; import org.junit.After; import docking.action.DockingActionIf; @@ -46,7 +47,6 @@ import ghidra.test.AbstractProgramBasedTest; import ghidra.util.Msg; import ghidra.util.search.memory.MemSearchResult; import ghidra.util.table.GhidraTable; -import util.CollectionUtils; /** * Base class for memory search tests. @@ -192,7 +192,7 @@ public abstract class AbstractMemSearchTest extends AbstractProgramBasedTest { AddressSet addressSet = runSwing(() -> markers.getAddressSet()); AddressIterator it = addressSet.getAddresses(true); - List
list = CollectionUtils.asStream(it).collect(Collectors.toList()); + List
list = IteratorUtils.toList(it); assertListEqualUnordered("Search markers not correctly generated", expected, list); } diff --git a/Ghidra/Framework/Docking/src/test.slow/java/docking/widgets/filechooser/GhidraFileChooserTest.java b/Ghidra/Framework/Docking/src/test.slow/java/docking/widgets/filechooser/GhidraFileChooserTest.java index 9b3acfcfff..5204b269e3 100644 --- a/Ghidra/Framework/Docking/src/test.slow/java/docking/widgets/filechooser/GhidraFileChooserTest.java +++ b/Ghidra/Framework/Docking/src/test.slow/java/docking/widgets/filechooser/GhidraFileChooserTest.java @@ -36,7 +36,6 @@ import java.util.concurrent.atomic.AtomicReference; import javax.swing.*; import javax.swing.table.JTableHeader; -import org.apache.commons.collections4.IteratorUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; @@ -1754,8 +1753,7 @@ public class GhidraFileChooserTest extends AbstractDockingTest { CompletableFuture> results = showMultiSelectionChooser(files.parent, FILES_ONLY); - selectFiles(CollectionUtils.asIterable( - IteratorUtils.chainedIterator(files.files.iterator(), files.dirs.iterator()))); + selectFiles(CollectionUtils.asIterable(files.files, files.dirs)); pressOk(); assertChooserHidden(); @@ -1769,13 +1767,11 @@ public class GhidraFileChooserTest extends AbstractDockingTest { CompletableFuture> results = showMultiSelectionChooser(files.parent, GhidraFileChooserMode.FILES_AND_DIRECTORIES); - selectFiles(CollectionUtils.asIterable( - IteratorUtils.chainedIterator(files.files.iterator(), files.dirs.iterator()))); + selectFiles(CollectionUtils.asIterable(files.files, files.dirs)); pressOk(); assertChooserHidden(); - assertChosen(results, CollectionUtils.asIterable( - IteratorUtils.chainedIterator(files.files.iterator(), files.dirs.iterator()))); // dirs are dropped + assertChosen(results, CollectionUtils.asIterable(files.files, files.dirs)); // dirs are dropped } //================================================================================================== diff --git a/Ghidra/Framework/Generic/src/main/java/util/CollectionUtils.java b/Ghidra/Framework/Generic/src/main/java/util/CollectionUtils.java index 8e4c1651e2..48205ef2f3 100644 --- a/Ghidra/Framework/Generic/src/main/java/util/CollectionUtils.java +++ b/Ghidra/Framework/Generic/src/main/java/util/CollectionUtils.java @@ -398,6 +398,19 @@ public class CollectionUtils { return () -> iterator; } + /** + * Combines all collections passed-in into a pass-through not creating a new collection) + * Iterable. + * + * @param iterables the iterables to combine + * @return the iterable + */ + @SafeVarargs + public static Iterable asIterable(Iterable... iterables) { + Stream s = asStream(iterables); + return asIterable(s.iterator()); + } + /** * Turns the given iterator into a stream * diff --git a/Ghidra/Framework/Generic/src/test/java/util/CollectionUtilsTest.java b/Ghidra/Framework/Generic/src/test/java/util/CollectionUtilsTest.java index 6d3da36ef6..607b95089c 100644 --- a/Ghidra/Framework/Generic/src/test/java/util/CollectionUtilsTest.java +++ b/Ghidra/Framework/Generic/src/test/java/util/CollectionUtilsTest.java @@ -225,6 +225,21 @@ public class CollectionUtilsTest { assertEquals("One", iterator.next()); } + @Test + public void testAsIterable_Collections() { + + List original = Arrays.asList("One", "Two", "Three", "Four"); + Collection a = Arrays.asList(original.get(0), original.get(1)); + Collection b = Arrays.asList(original.get(2)); + Collection c = Collections.emptyList(); + Collection d = Arrays.asList(original.get(3)); + Iterable iterable = CollectionUtils.asIterable(a, b, c, d); + + List result = new ArrayList<>(); + iterable.forEach(s -> result.add(s)); + assertEquals(original, result); + } + @Test public void testAsList_UnknownToType() { List list = new ArrayList<>(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java index f755211924..52d90af6d4 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java @@ -163,7 +163,7 @@ class ImportGhidraToolsDialog extends DialogComponentProvider { Set extraTools = ToolUtils.getExtraApplicationTools(); Stream defaultToolNames = defaultTools.stream().map(ToolTemplate::getPath); - Stream extraToolNames = extraTools.parallelStream().map(ToolTemplate::getPath); + Stream extraToolNames = extraTools.stream().map(ToolTemplate::getPath); int elementCount = defaultTools.size() + extraTools.size(); tools = new String[elementCount];