Skip to content
Snippets Groups Projects
Verified Commit 5d2750d5 authored by Dominik Frantisek Bucik's avatar Dominik Frantisek Bucik
Browse files

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

parent 79d3865b
No related branches found
No related tags found
1 merge request!397fix: 🐛 claim modifiers in arrays retain only unique values
Pipeline #444674 passed
......@@ -303,18 +303,22 @@ public class PerunUserInfoCacheLoader extends CacheLoader<UserInfoCacheKey, User
return TextNode.valueOf(modifier.modify(claimInJson.asText()));
} else if (claimInJson.isArray()) {
ArrayNode arrayNode = (ArrayNode) claimInJson;
ArrayNode newArrayNode = JsonNodeFactory.instance.arrayNode();
Set<TextNode> uniqueValues = new HashSet<>();
for (int i = 0; i < arrayNode.size(); i++) {
JsonNode item = arrayNode.get(i);
if (item.isTextual()) {
String original = item.asText();
String modified = modifier.modify(original);
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;
} else {
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.
Finish editing this message first!
Please register or to comment