You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2020/02/12 15:27:35 UTC

[sling-org-apache-sling-feature-cpconverter] branch master updated: SLING-9066 - separating collecting of affected entries from updating of collection to prevent ConcurrentModificationException (#27)

This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git


The following commit(s) were added to refs/heads/master by this push:
     new 0fcea95  SLING-9066 - separating collecting of affected entries from updating of collection to prevent ConcurrentModificationException (#27)
0fcea95 is described below

commit 0fcea95f110e3caaefb42c2d0c98103badbdcaac
Author: Dominik Süß <su...@adobe.com>
AuthorDate: Wed Feb 12 16:27:25 2020 +0100

    SLING-9066 - separating collecting of affected entries from updating of collection to prevent ConcurrentModificationException (#27)
---
 .../feature/cpconverter/vltpkg/VaultPackageAssembler.java      | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
index 71c7613..05ee5a1 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
@@ -34,6 +34,8 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -198,14 +200,18 @@ public class VaultPackageAssembler implements EntryHandler, FileFilter {
     }
 
     public void updateDependencies(Map<PackageId, Set<Dependency>> mutableContentsIds) {
+        Map<Dependency, Set<Dependency>> matches = new HashMap<>();
         for (Dependency dependency : dependencies) {
             for (java.util.Map.Entry<PackageId, Set<Dependency>> mutableContentId : mutableContentsIds.entrySet()) {
                 if (dependency.matches(mutableContentId.getKey())) {
-                    dependencies.remove(dependency);
-                    dependencies.addAll(mutableContentId.getValue());
+                    matches.put(dependency, mutableContentId.getValue());
                 }
             }
         }
+        for(java.util.Map.Entry<Dependency, Set<Dependency>>  match : matches.entrySet()) {
+            dependencies.remove(match.getKey());
+            dependencies.addAll(match.getValue());
+        }
     }
 
     public File createPackage() throws IOException {