@SuppressWarnings("MissingCasesInEnumSwitch")
    public static List<LdapEntryHandler> newLdaptiveEntryHandlers(final List<LdapSearchEntryHandlersProperties> properties) {
        val entryHandlers = new ArrayList<LdapEntryHandler>();
        properties.forEach(prop -> {
            switch (prop.getType()) {
                case ACTIVE_DIRECTORY -> {
                    val handler = new ActiveDirectoryLdapEntryHandler();
                    entryHandlers.add(handler);
                }
                case CASE_CHANGE -> {
                    val entryHandler = new CaseChangeEntryHandler();
                    val caseChange = prop.getCaseChange();
                    entryHandler.setAttributeNameCaseChange(CaseChangeEntryHandler.CaseChange.valueOf(caseChange.getAttributeNameCaseChange()));
                    entryHandler.setAttributeNames(caseChange.getAttributeNames().toArray(ArrayUtils.EMPTY_STRING_ARRAY));
                    entryHandler.setAttributeValueCaseChange(CaseChangeEntryHandler.CaseChange.valueOf(caseChange.getAttributeValueCaseChange()));
                    entryHandler.setDnCaseChange(CaseChangeEntryHandler.CaseChange.valueOf(caseChange.getDnCaseChange()));
                    entryHandlers.add(entryHandler);
                }
                case DN_ATTRIBUTE_ENTRY -> {
                    val entryHandler = new DnAttributeEntryHandler();
                    val dnAttribute = prop.getDnAttribute();
                    entryHandler.setAddIfExists(dnAttribute.isAddIfExists());
                    entryHandler.setDnAttributeName(dnAttribute.getDnAttributeName());
                    entryHandlers.add(entryHandler);
                }
                case MERGE -> {
                    val entryHandler = new MergeAttributeEntryHandler();
                    val mergeAttribute = prop.getMergeAttribute();
                    entryHandler.setAttributeNames(mergeAttribute.getAttributeNames().toArray(ArrayUtils.EMPTY_STRING_ARRAY));
                    entryHandler.setMergeAttributeName(mergeAttribute.getMergeAttributeName());
                    entryHandlers.add(entryHandler);
                }
                case OBJECT_GUID -> entryHandlers.add(new ObjectGuidHandler());
                case OBJECT_SID -> entryHandlers.add(new ObjectSidHandler());
            }
        });
        return entryHandlers;
    }
New list of ldap entry handlers derived from the supplied properties.

@param properties to inspect
@return the list of entry handlers
support/cas-server-support-ldap-core/src/main/java/org/apereo/cas/util/LdapUtils.java