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];