@Override
    public PersonAttributes getPerson(final String uid, final Set<PersonAttributes> resultPeople, final PersonAttributeDaoFilter filter) {
        if (!this.isEnabled()) {
            return null;
        }
        val personAttributesMap = groovyObject.getAttributesForUser(Objects.requireNonNull(uid));
        if (personAttributesMap != null) {
            LOGGER.debug("Creating person attributes with the username [{}] and attributes [{}]", uid, personAttributesMap);
            val personAttributes = toMultivaluedMap(personAttributesMap);
            return new SimplePersonAttributes(uid, personAttributes);
        }
        return null;
    }
An implementation of the {@link PersonAttributeDao} that is able to resolve attributes
based on an external Groovy script, Groovy object, or Java object. Changes to the groovy script can be auto-detected
in certain use cases.

@author Misagh Moayyed
@since 7.1.0
support/cas-server-support-person-directory-core/src/main/java/org/apereo/cas/persondir/groovy/GroovyPersonAttributeDao.java