public static <T extends PrincipalResolver> T newPersonDirectoryPrincipalResolver(
        final ConfigurableApplicationContext applicationContext,
        final PrincipalFactory principalFactory,
        final PersonAttributeDao attributeRepository,
        final AttributeMerger attributeMerger,
        final Class<T> resolverClass,
        final ServicesManager servicesManager,
        final AttributeDefinitionStore attributeDefinitionStore,
        final AttributeRepositoryResolver attributeRepositoryResolver,
        final PersonDirectoryPrincipalResolverProperties... personDirectory) {

        val context = buildPrincipalResolutionContext(applicationContext, principalFactory, attributeRepository, attributeMerger,
            servicesManager, attributeDefinitionStore, attributeRepositoryResolver, personDirectory);
        return newPersonDirectoryPrincipalResolver(resolverClass, context);
    }
New person directory principal resolver.

@param <T>                      the type parameter
@param applicationContext       the application context
@param principalFactory         the principal factory
@param attributeRepository      the attribute repository
@param attributeMerger          the attribute merger
@param resolverClass            the resolver class
@param servicesManager          the services manager
@param attributeDefinitionStore the attribute definition store
@param personDirectory          the person directory
@return the resolver
support/cas-server-support-person-directory-core/src/main/java/org/apereo/cas/authentication/principal/resolvers/PersonDirectoryPrincipalResolver.java