AttributeScriptContext.java

package access.manipulation;


import java.util.*;
import java.util.stream.Collectors;

public record AttributeScriptContext(Map<String, List<String>> attributes, String subjectId) {

    public List<String> get(String name) {
        return attributes.getOrDefault(name, List.of());
    }

    public void set(String name, List<String> values) {
        attributes.put(name, new ArrayList<>(values));
    }

    public void remove(String name) {
        attributes.remove(name);
    }

    public List<String> mapValues(String name, Map<String, String> mapping) {
        return get(name).stream()
                .map(mapping::get)
                .filter(Objects::nonNull)
                .toList();
    }
}