Merge pull request #32 from tjwatson/parallelStreams

Stop using parallel stream
diff --git a/atomos.examples/atomos.examples.jaxrs/pom.xml b/atomos.examples/atomos.examples.jaxrs/pom.xml
index 9284f77..f14e51e 100644
--- a/atomos.examples/atomos.examples.jaxrs/pom.xml
+++ b/atomos.examples/atomos.examples.jaxrs/pom.xml
@@ -157,7 +157,6 @@
                             <additionalInitializeAtBuildTime>org.apache.cxf.bus.managers.DestinationFactoryManagerImpl</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.apache.cxf.bus.managers.ConduitInitiatorManagerImpl</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.apache.cxf.bus.managers.BindingFactoryManagerImpl</additionalInitializeAtBuildTime>
-                            <!-- <additionalInitializeAtBuildTime>org.apache.felix.atomos.impl.runtime.base</additionalInitializeAtBuildTime> -->
                         </additionalInitializeAtBuildTime>
                         <resourceConfigurationFiles>
                             <resourceConfigurationFile>additionalResourceConfig.json</resourceConfigurationFile>
@@ -175,7 +174,6 @@
                             <reflectionConfigurationFile>reflectConfig_jetty.json</reflectionConfigurationFile>
                             <reflectionConfigurationFile>reflectAgentConfig.json</reflectionConfigurationFile>
                         </reflectionConfigurationFiles>
-                        <!-- <mainClass>org.apache.felix.atomos.launch.AtomosLauncher</mainClass> -->
                     </nativeImage>
                 </configuration>
                 <executions>
diff --git a/atomos.maven/src/main/java/org/apache/felix/atomos/maven/LauncherBuilderUtil.java b/atomos.maven/src/main/java/org/apache/felix/atomos/maven/LauncherBuilderUtil.java
index c7ceb68..e1fa0c0 100644
--- a/atomos.maven/src/main/java/org/apache/felix/atomos/maven/LauncherBuilderUtil.java
+++ b/atomos.maven/src/main/java/org/apache/felix/atomos/maven/LauncherBuilderUtil.java
@@ -109,6 +109,7 @@
                     .anyMatch(s -> a.getArtifactId().matches(s));
             })//
             .map(a -> a.getFile().toPath())//
+            .sorted()//
             .collect(Collectors.toList());
 
         PathCollectorPluginConfig dc = new PathCollectorPluginConfig()
diff --git a/atomos.runtime/src/main/java/org/apache/felix/atomos/impl/runtime/base/AtomosRuntimeBase.java b/atomos.runtime/src/main/java/org/apache/felix/atomos/impl/runtime/base/AtomosRuntimeBase.java
index 70699d8..f21e784 100644
--- a/atomos.runtime/src/main/java/org/apache/felix/atomos/impl/runtime/base/AtomosRuntimeBase.java
+++ b/atomos.runtime/src/main/java/org/apache/felix/atomos/impl/runtime/base/AtomosRuntimeBase.java
@@ -32,6 +32,7 @@
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -675,7 +676,7 @@
 
         protected final Set<AtomosContentBase> findAtomosContents()
         {
-            Set<AtomosContentBase> bootBundles = new HashSet<>();
+            Set<AtomosContentBase> bootBundles = new LinkedHashSet<>();
 
             // first get the modules from the boot ModuleLayer (Java 9+ JPMS)
             findBootModuleLayerAtomosContents(bootBundles);
diff --git a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/ContextImpl.java b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/ContextImpl.java
index 961981f..48d33cc 100644
--- a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/ContextImpl.java
+++ b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/ContextImpl.java
@@ -198,7 +198,7 @@
     @Override
     public Stream<Path> getFiles(FileType... fileType)
     {
-        return paths.entrySet().parallelStream().filter(
+        return paths.entrySet().stream().filter(
             e -> List.of(fileType).stream().filter(Objects::nonNull).anyMatch(
                 t -> t.equals(e.getValue()))).map(Entry::getKey);
     }
diff --git a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/LauncherImpl.java b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/LauncherImpl.java
index 7a595e1..ad2b2d7 100644
--- a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/LauncherImpl.java
+++ b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/LauncherImpl.java
@@ -133,7 +133,7 @@
             //      }
         }
 
-        List<ComponentDescription> cds = list.parallelStream().map(cmd -> {
+        List<ComponentDescription> cds = list.stream().map(cmd -> {
             cmd.validate();
             return new ComponentDescriptionImpl(cmd);
 
@@ -345,7 +345,7 @@
 
     private <T extends SubstratePlugin<?>> Stream<T> orderdPluginsBy(Class<T> clazz)
     {
-        return plugins.parallelStream()//
+        return plugins.stream()//
             .filter(clazz::isInstance)//
             .map(clazz::cast)//
             .sorted((p1, p2) -> p1.ranking(clazz) - p2.ranking(clazz));
diff --git a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/collector/PathCollectorPlugin.java b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/collector/PathCollectorPlugin.java
index 8768b47..4856773 100644
--- a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/collector/PathCollectorPlugin.java
+++ b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/collector/PathCollectorPlugin.java
@@ -62,7 +62,7 @@
             }
 
         };
-        config.paths().parallelStream().forEach(p -> {
+        config.paths().forEach(p -> {
             try
             {
                 Files.walkFileTree(p, v);
diff --git a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/shade/ShadePreHolder.java b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/shade/ShadePreHolder.java
index b57cbb7..02b8ad4 100644
--- a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/shade/ShadePreHolder.java
+++ b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/shade/ShadePreHolder.java
@@ -65,7 +65,7 @@
 
     List<JarFile> all()
     {
-        return source.entrySet().parallelStream().flatMap(
+        return source.entrySet().stream().flatMap(
             c -> c.getValue().stream()).collect(Collectors.toList());
     }
 
@@ -76,7 +76,7 @@
 
     JarFile any()
     {
-        return source.entrySet().parallelStream().map(
+        return source.entrySet().stream().map(
             c -> c.getValue().stream().findAny()).findAny().get().get();
     }
 
@@ -92,7 +92,7 @@
 
     long size()
     {
-        return source.entrySet().parallelStream().flatMap(
+        return source.entrySet().stream().flatMap(
             c -> c.getValue().stream()).count();
     }
 
diff --git a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/index/IndexPlugin.java b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/index/IndexPlugin.java
index 2b4d1eb..2311486 100644
--- a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/index/IndexPlugin.java
+++ b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/index/IndexPlugin.java
@@ -79,7 +79,7 @@
 
     JarOutputStream jos;
 
-    private ArrayList<IndexInfo> sis;
+    private ArrayList<IndexInfo> indexInfos;
     private Map<String, Boolean> uniquePaths;
 
     private Path substrateJar;
@@ -178,7 +178,7 @@
         }).map(JarEntry::getName).collect(Collectors.toList());
 
         info.setFiles(files);
-        sis.add(info);
+        indexInfos.add(info);
     }
 
     @Override
@@ -203,21 +203,23 @@
 
             final List<String> bundleIndexLines = new ArrayList<>();
             final Collection<String> resources = new LinkedHashSet<>();
-            sis.forEach(s -> {
-                if (s.getBundleSymbolicName() != null)
-                {
+            indexInfos.stream() //
+                .filter((i) -> i.getBundleSymbolicName() != null) //
+                .sorted((i1, i2) -> i1.getBundleSymbolicName().compareTo(
+                    i2.getBundleSymbolicName())) //
+                .forEach((i) -> {
                     bundleIndexLines.add(ATOMOS_BUNDLE_SEPARATOR);
-                    bundleIndexLines.add(s.getId());
-                    bundleIndexLines.add(s.getBundleSymbolicName());
-                    bundleIndexLines.add(s.getVersion());
-                    s.getFiles().forEach(f -> {
+                    bundleIndexLines.add(i.getId());
+                    bundleIndexLines.add(i.getBundleSymbolicName());
+                    bundleIndexLines.add(i.getVersion());
+                    i.getFiles().forEach(f -> {
                         bundleIndexLines.add(f);
                         if (!isClass(f))
                         {
                             if (Boolean.FALSE == uniquePaths.get(f))
                             {
                                 resources.add(
-                                    ATOMOS_BUNDLES_BASE_PATH + s.getId() + "/" + f);
+                                    ATOMOS_BUNDLES_BASE_PATH + i.getId() + "/" + f);
                             }
                             if (!f.endsWith("/") && !"META-INF/MANIFEST.MF".equals(f))
                             {
@@ -225,8 +227,8 @@
                             }
                         }
                     });
-                }
-            });
+                });
+
             ByteArrayOutputStream indexBytes;
             try (final ByteArrayOutputStream out = new ByteArrayOutputStream();
                 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out)))
@@ -319,7 +321,7 @@
             }
         }
         counter = new AtomicLong(0);
-        sis = new ArrayList<>();
+        indexInfos = new ArrayList<>();
         uniquePaths = new HashMap<>();
     }