Class LdapConnectionTemplate

    • Constructor Detail

      • LdapConnectionTemplate

        public LdapConnectionTemplate​(LdapConnectionPool connectionPool)
        Creates a new instance of LdapConnectionTemplate.
        Parameters:
        connectionPool - The pool to obtain connections from.
    • Method Detail

      • add

        public AddResponse add​(Dn dn,
                               Attribute... attributes)
        Adds an entry specified by a Dn and an array of Attribute's to the LDAP server.
        Specified by:
        add in interface LdapConnectionOperations
        Parameters:
        dn - The distinguished name of the new entry
        attributes - The attributes of the new entry
        Returns:
        An AddResponse
      • add

        public AddResponse add​(Dn dn,
                               RequestBuilder<AddRequest> requestBuilder)
        Adds an entry specified by a Dn, to be filled out by a RequestBuilder, to the LDAP server.
        Specified by:
        add in interface LdapConnectionOperations
        Parameters:
        dn - The distinguished name of the new entry
        requestBuilder - The request builder
        Returns:
        An AddResponse
      • authenticate

        public PasswordWarning authenticate​(Dn userDn,
                                            char[] password)
                                     throws PasswordException
        Attempts to authenticate the supplied credentials. If authentication fails, a PasswordException is thrown. If successful, the response is checked for warnings, and if present, a PasswordWarning is returned. Otherwise, null is returned.
        Specified by:
        authenticate in interface LdapConnectionOperations
        Parameters:
        userDn - The distinguished name of the user
        password - The password
        Returns:
        A PasswordWarning or null
        Throws:
        PasswordException - If authentication fails
      • delete

        public DeleteResponse delete​(Dn dn)
        Deletes an entry specified by Dn from the LDAP server.
        Specified by:
        delete in interface LdapConnectionOperations
        Parameters:
        dn - The distinguished name of the entry
        Returns:
        A DeleteResponse
      • delete

        public DeleteResponse delete​(Dn dn,
                                     RequestBuilder<DeleteRequest> requestBuilder)
        Deletes an entry specified by Dn, and whose request is configured by a RequestBuilder, from the LDAP server.
        Specified by:
        delete in interface LdapConnectionOperations
        Parameters:
        dn - The distinguished name of the entry
        requestBuilder - The RequestBuilder
        Returns:
        A DeleteResponse
      • execute

        public <T> T execute​(ConnectionCallback<T> connectionCallback)
        Executes the connectionCallback, supplying it a managed connection.
        Specified by:
        execute in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        connectionCallback - The callback
        Returns:
        Whatever the callback returns
      • lookup

        public <T> T lookup​(Dn dn,
                            EntryMapper<T> entryMapper)
        Performs a lookup, and supplies the matching entry to the entryMapper.
        Specified by:
        lookup in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        dn - The distinguished name of the entry
        entryMapper - The mapper from entry to model object
        Returns:
        Whatever the entryMapper returns
      • lookup

        public <T> T lookup​(Dn dn,
                            String[] attributes,
                            EntryMapper<T> entryMapper)
        Performs a lookup, requesting attributes, and supplies the matching entry to the entryMapper.
        Specified by:
        lookup in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        dn - The distinguished name of the entry
        attributes - The attributes to be fetched
        entryMapper - The mapper from entry to model object
        Returns:
        Whatever the entryMapper returns
      • modifyPassword

        public void modifyPassword​(Dn userDn,
                                   char[] oldPassword,
                                   char[] newPassword,
                                   boolean asAdmin)
                            throws PasswordException
        Modifies the password for userDn from oldPassword to newPassword, optionally using an admin account. If asAdmin is true, then the operation is performed in admin context which means oldPassword is may be null.
        Specified by:
        modifyPassword in interface LdapConnectionOperations
        Parameters:
        userDn - The distinguished name of the user
        oldPassword - The users old password (optional if asAdmin is true)
        newPassword - The users new password
        asAdmin - If true, execute in admin context
        Throws:
        PasswordException - If the password modification fails
      • modify

        public ModifyResponse modify​(Dn dn,
                                     RequestBuilder<ModifyRequest> requestBuilder)
        Modifies an entry specified by Dn, and whose request is configured by a RequestBuilder, on the LDAP server.
        Specified by:
        modify in interface LdapConnectionOperations
        Parameters:
        dn - The distinguished name of the entry
        requestBuilder - The RequestBuilder
        Returns:
        A ModifyResponse
      • newAddRequest

        public AddRequest newAddRequest​(Entry entry)
        Returns a new AddRequest for the entry.
        Specified by:
        newAddRequest in interface ModelFactory
        Parameters:
        entry - The Entry to add
        Returns:
        The resulting AddRequest
      • newAttribute

        public Attribute newAttribute​(String name)
        Returns a new Attribute for with the provided name and a null value. This is useful for clearing out an Attribute with a ModifyRequest, replace function.
        Specified by:
        newAttribute in interface ModelFactory
        Parameters:
        name - The attribute's name
        Returns:
        The resulting Attribute
      • newAttribute

        public Attribute newAttribute​(String name,
                                      byte[]... values)
        Returns a new Attribute for with the provided name and value(s).
        Specified by:
        newAttribute in interface ModelFactory
        Parameters:
        name - The attribute's name
        values - The attribute's values
        Returns:
        The resulting Attribute
      • newAttribute

        public Attribute newAttribute​(String name,
                                      String... values)
        Returns a new Attribute for with the provided name and value(s).
        Specified by:
        newAttribute in interface ModelFactory
        Parameters:
        name - The attribute's name
        values - The attribute's values
        Returns:
        The resulting Attribute
      • newAttribute

        public Attribute newAttribute​(String name,
                                      Value... values)
        Returns a new Attribute for with the provided name and value(s).
        Specified by:
        newAttribute in interface ModelFactory
        Parameters:
        name - The attribute's name
        values - The attribute's values
        Returns:
        The resulting Attribute
      • newDeleteRequest

        public DeleteRequest newDeleteRequest​(Dn dn)
        Returns a new DeleteRequest for the dn.
        Specified by:
        newDeleteRequest in interface ModelFactory
        Parameters:
        dn - The Dn for the Entry to delete
        Returns:
        The resulting DeleteRequest
      • newDn

        public Dn newDn​(String dn)
        Returns a Dn that represents dn.
        Specified by:
        newDn in interface ModelFactory
        Parameters:
        dn - The Entry's Dn
        Returns:
        The resulting Dn
      • newEntry

        public Entry newEntry​(String dn)
        Returns a Entry with the specified dn.
        Specified by:
        newEntry in interface ModelFactory
        Parameters:
        dn - The Entry's Dn
        Returns:
        The resulting Entry
      • newEntry

        public Entry newEntry​(Dn dn)
        Returns a Entry with the specified dn.
        Specified by:
        newEntry in interface ModelFactory
        Parameters:
        dn - The Entry's Dn
        Returns:
        The resulting Entry
      • newModifyRequest

        public ModifyRequest newModifyRequest​(String dn)
        Returns a new ModifyRequest for the dn.
        Specified by:
        newModifyRequest in interface ModelFactory
        Parameters:
        dn - The Dn of the entry to modify
        Returns:
        The resulting ModifyRequest
      • newModifyRequest

        public ModifyRequest newModifyRequest​(Dn dn)
        Returns a new ModifyRequest for the dn.
        Specified by:
        newModifyRequest in interface ModelFactory
        Parameters:
        dn - The DN of the entry to modify
        Returns:
        The resulting ModifyRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(String baseDn,
                                              FilterBuilder filter,
                                              SearchScope scope)
        Returns a new SearchRequest over baseDn in scope matching filter returning all normal attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(String baseDn,
                                              String filter,
                                              SearchScope scope)
        Returns a new SearchRequest over baseDn in scope matching filter returning all normal attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(Dn baseDn,
                                              FilterBuilder filter,
                                              SearchScope scope)
        Returns a new SearchRequest over baseDn in scope matching filter returning all normal attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(Dn baseDn,
                                              String filter,
                                              SearchScope scope)
        Returns a new SearchRequest over baseDn in scope matching filter returning all normal attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(String baseDn,
                                              FilterBuilder filter,
                                              SearchScope scope,
                                              String... attributes)
        Returns a new SearchRequest over baseDn in scope matching filter returning attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(String baseDn,
                                              String filter,
                                              SearchScope scope,
                                              String... attributes)
        Returns a new SearchRequest over baseDn in scope matching filter returning attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(Dn baseDn,
                                              FilterBuilder filter,
                                              SearchScope scope,
                                              String... attributes)
        Returns a new SearchRequest over baseDn in scope matching filter returning attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        Returns:
        The resulting SearchRequest
      • newSearchRequest

        public SearchRequest newSearchRequest​(Dn baseDn,
                                              String filter,
                                              SearchScope scope,
                                              String... attributes)
        Returns a new SearchRequest over baseDn in scope matching filter returning attributes for each matching entry.
        Specified by:
        newSearchRequest in interface ModelFactory
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        Returns:
        The resulting SearchRequest
      • responseOrException

        public <T extends ResultResponse> T responseOrException​(T response)
        Checks the supplied response for its result code, and if not ResultCodeEnum#SUCCESS, an exception is thrown. This method is intended to be used inline:
         template.responseOrException( template.delete( dn ) );
         
        Specified by:
        responseOrException in interface LdapConnectionOperations
        Type Parameters:
        T - The type of response
        Parameters:
        response - The response to check for success
        Returns:
        The supplied response
      • search

        public <T> List<T> search​(String baseDn,
                                  FilterBuilder filter,
                                  SearchScope scope,
                                  String[] attributes,
                                  EntryMapper<T> entryMapper)
        Searches for the entries matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        search in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.search(SearchRequest, EntryMapper)
      • search

        public <T> List<T> search​(String baseDn,
                                  String filter,
                                  SearchScope scope,
                                  String[] attributes,
                                  EntryMapper<T> entryMapper)
        Searches for the entries matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        search in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.search(SearchRequest, EntryMapper)
      • search

        public <T> List<T> search​(Dn baseDn,
                                  FilterBuilder filter,
                                  SearchScope scope,
                                  String[] attributes,
                                  EntryMapper<T> entryMapper)
        Searches for the entries matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        search in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.search(SearchRequest, EntryMapper)
      • search

        public <T> List<T> search​(Dn baseDn,
                                  String filter,
                                  SearchScope scope,
                                  String[] attributes,
                                  EntryMapper<T> entryMapper)
        Searches for the entries matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        search in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.search(SearchRequest, EntryMapper)
      • search

        public <T> List<T> search​(SearchRequest searchRequest,
                                  EntryMapper<T> entryMapper)
        Searches for the entries matching the supplied searchRequest, feeding the result into the entryMapper.
        Specified by:
        search in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        searchRequest - The search request
        entryMapper - The mapper
        Returns:
        The mapped entries
      • searchFirst

        public <T> T searchFirst​(String baseDn,
                                 String filter,
                                 SearchScope scope,
                                 String[] attributes,
                                 EntryMapper<T> entryMapper)
        Searches for the first entry matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        searchFirst in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.searchFirst(SearchRequest, EntryMapper)
      • searchFirst

        public <T> T searchFirst​(Dn baseDn,
                                 FilterBuilder filter,
                                 SearchScope scope,
                                 String[] attributes,
                                 EntryMapper<T> entryMapper)
        Searches for the first entry matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        searchFirst in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.searchFirst(SearchRequest, EntryMapper)
      • searchFirst

        public <T> T searchFirst​(Dn baseDn,
                                 String filter,
                                 SearchScope scope,
                                 String[] attributes,
                                 EntryMapper<T> entryMapper)
        Searches for the first entry matching the supplied criteria, feeding the result into the entryMapper, querying only the requested attributes.
        Specified by:
        searchFirst in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        baseDn - The base DN from which to start the search
        filter - The filter selecting the entries
        scope - The scope to look from
        attributes - The list of AttributeType to return
        entryMapper - The mapper
        Returns:
        The mapped entries
        See Also:
        LdapConnectionOperations.searchFirst(SearchRequest, EntryMapper)
      • searchFirst

        public <T> T searchFirst​(SearchRequest searchRequest,
                                 EntryMapper<T> entryMapper)
        Searches for the first entry matching the supplied searchRequest, feeding the result into the entryMapper. This is basically the same as LdapConnectionOperations.search(SearchRequest, EntryMapper), but is optimized by modifying the searchRequest to set its size limit to 1. The searchRequest is returned to its original size limit before this method returns (or throws an exception).
        Specified by:
        searchFirst in interface LdapConnectionOperations
        Type Parameters:
        T - The type of the mapped entry
        Parameters:
        searchRequest - The search request
        entryMapper - The mapper
        Returns:
        The mapped entry
      • setModelFactory

        public void setModelFactory​(ModelFactory modelFactory)
        Sets the modelFactory implementation for this facade.
        Parameters:
        modelFactory - The model factory implementation
      • setPasswordPolicyResponder

        public void setPasswordPolicyResponder​(PasswordPolicyResponder passwordPolicyResponder)
        Sets the passwordPolicyResponder implementation for this facade.
        Parameters:
        passwordPolicyResponder - The password policy responder implementation