From b590981c53c26f4b1a8b6a0865ddc552e0a347b8 Mon Sep 17 00:00:00 2001 From: pujavs <43700552+pujavs@users.noreply.github.com> Date: Mon, 15 Aug 2022 22:16:42 +0530 Subject: [PATCH] fix: use iterator to correcly remove OC attribute (#2138) Co-authored-by: Yuriy Movchan --- .../main/java/io/jans/orm/impl/BaseEntryManager.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jans-orm/core/src/main/java/io/jans/orm/impl/BaseEntryManager.java b/jans-orm/core/src/main/java/io/jans/orm/impl/BaseEntryManager.java index 03951cee381..d56ce8c02b1 100644 --- a/jans-orm/core/src/main/java/io/jans/orm/impl/BaseEntryManager.java +++ b/jans-orm/core/src/main/java/io/jans/orm/impl/BaseEntryManager.java @@ -18,6 +18,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.IdentityHashMap; +import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -1063,9 +1064,13 @@ protected List createEntities(Class entryClass, List attributeEntry : attributesMap.entrySet()) { + for (Iterator> it = attributesMap.entrySet().iterator(); it.hasNext();) { + Entry attributeEntry = it.next(); + AttributeData entryAttribute = attributeEntry.getValue(); if (OBJECT_CLASS.equalsIgnoreCase(entryAttribute.getName())) { + it.remove(); + String[] objectClasses = entryAttribute.getStringValues(); if (ArrayHelper.isEmpty(objectClasses)) { continue; @@ -1086,9 +1091,6 @@ public int compare(String o1, String o2) { customObjectClasses.add(objectClass); } } - - attributesMap.remove(attributeEntry.getKey()); - continue; } }