Skip to content
Snippets Groups Projects
Commit 06a7f6fd authored by Dominik František Bučík's avatar Dominik František Bučík
Browse files

chore: merge branch 'dBucik/replace_modifier_remove_duplicates' into 'main'

fix: :bug: claim modifiers in arrays retain only unique values

See merge request !397
parents e4ab4473 5d2750d5
Branches
Tags
1 merge request!397fix: 🐛 claim modifiers in arrays retain only unique values
Pipeline #444679 passed
...@@ -303,18 +303,22 @@ public class PerunUserInfoCacheLoader extends CacheLoader<UserInfoCacheKey, User ...@@ -303,18 +303,22 @@ public class PerunUserInfoCacheLoader extends CacheLoader<UserInfoCacheKey, User
return TextNode.valueOf(modifier.modify(claimInJson.asText())); return TextNode.valueOf(modifier.modify(claimInJson.asText()));
} else if (claimInJson.isArray()) { } else if (claimInJson.isArray()) {
ArrayNode arrayNode = (ArrayNode) claimInJson; ArrayNode arrayNode = (ArrayNode) claimInJson;
ArrayNode newArrayNode = JsonNodeFactory.instance.arrayNode(); Set<TextNode> uniqueValues = new HashSet<>();
for (int i = 0; i < arrayNode.size(); i++) { for (int i = 0; i < arrayNode.size(); i++) {
JsonNode item = arrayNode.get(i); JsonNode item = arrayNode.get(i);
if (item.isTextual()) { if (item.isTextual()) {
String original = item.asText(); String original = item.asText();
String modified = modifier.modify(original); String modified = modifier.modify(original);
if (!modifier.isReplaceOldValue()) { if (!modifier.isReplaceOldValue()) {
newArrayNode.add(TextNode.valueOf(original)); uniqueValues.add(TextNode.valueOf(original));
} }
newArrayNode.add(TextNode.valueOf(modified)); uniqueValues.add(TextNode.valueOf(modified));
} }
} }
ArrayNode newArrayNode = JsonNodeFactory.instance.arrayNode();
for (TextNode child : uniqueValues) {
newArrayNode.add(child);
}
return newArrayNode; return newArrayNode;
} else { } else {
log.warn("Original value is neither string nor array of strings - cannot modify values"); log.warn("Original value is neither string nor array of strings - cannot modify values");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment