Class LdapNetworkConnection

    • Constructor Detail

      • LdapNetworkConnection

        public LdapNetworkConnection()
        Create a new instance of a LdapConnection on localhost, port 389.
      • LdapNetworkConnection

        public LdapNetworkConnection​(LdapConnectionConfig config)
        Creates a new instance of LdapConnection with the given connection configuration.
        Parameters:
        config - the configuration of the LdapConnection
      • LdapNetworkConnection

        public LdapNetworkConnection​(boolean useSsl)
        Create a new instance of a LdapConnection on localhost, port 389 if the SSL flag is off, or 636 otherwise.
        Parameters:
        useSsl - A flag to tell if it's a SSL connection or not.
      • LdapNetworkConnection

        public LdapNetworkConnection​(boolean useSsl,
                                     LdapApiService ldapApiService)
        Creates a new LdapNetworkConnection instance
        Parameters:
        useSsl - If we are going to create a secure connection or not
        ldapApiService - The LDAP API Service to use
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server)
        Create a new instance of a LdapConnection on a given server, using the default port (389).
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     LdapApiService ldapApiService)
        Creates a new LdapNetworkConnection instance
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        ldapApiService - The LDAP API Service to use
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     boolean useSsl)
        Create a new instance of a LdapConnection on a given server, using the default port (389) if the SSL flag is off, or 636 otherwise.
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        useSsl - A flag to tell if it's a SSL connection or not.
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     boolean useSsl,
                                     LdapApiService ldapApiService)
        Creates a new LdapNetworkConnection instance
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        useSsl - A flag to tell if it's a SSL connection or not.
        ldapApiService - The LDAP API Service to use
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     int port)
        Create a new instance of a LdapConnection on a given server and a given port. We don't use ssl.
        Parameters:
        server - The server we want to be connected to
        port - The port the server is listening to
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     int port,
                                     LdapApiService ldapApiService)
        Create a new instance of a LdapConnection on a given server and a given port. We don't use ssl.
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        port - The port the server is listening on
        ldapApiService - The LDAP API Service to use
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     int port,
                                     boolean useSsl)
        Create a new instance of a LdapConnection on a given server, and a give port. We set the SSL flag accordingly to the last parameter.
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        port - The port the server is listening to
        useSsl - A flag to tell if it's a SSL connection or not.
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     int port,
                                     TrustManager... trustManagers)
        Create a new instance of a LdapConnection on a given server, and a give port. This SSL connection will use the provided TrustManagers
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        port - The port the server is listening to
        trustManagers - The TrustManager to use
      • LdapNetworkConnection

        public LdapNetworkConnection​(String server,
                                     int port,
                                     boolean useSsl,
                                     LdapApiService ldapApiService)
        Create a new instance of a LdapConnection on a given server and a given port. We don't use ssl.
        Parameters:
        server - The server we want to be connected to. If null or empty, we will default to LocalHost.
        port - The port the server is listening on
        useSsl - A flag to tell if it's a SSL connection or not.
        ldapApiService - The LDAP API Service to use
    • Method Detail

      • isConnected

        public boolean isConnected()
        Check if the connection is established
        Specified by:
        isConnected in interface LdapConnection
        Returns:
        true if the connection is established
      • isSecured

        public boolean isSecured()
        Tells if the connection is using a secured channel
        Returns:
        true if the session is using a secured channel
      • exceptionCaught

        public Throwable exceptionCaught()
        tell if an exception was caught while processing the request or a response.
        Specified by:
        exceptionCaught in interface LdapConnection
        Returns:
        The exception if there was one thrown while processing a request or a response
      • getTimeout

        public long getTimeout​(long configuredTimeout,
                               int searchTimeLimitInSeconds)
        Get the largest timeout from the search time limit and the connection timeout.
        Parameters:
        configuredTimeout - Timeout configured in LdapNetworkConnection
        searchTimeLimitInSeconds - Search timeout
        Returns:
        The largest timeout
      • tryConnect

        public org.apache.mina.core.future.ConnectFuture tryConnect()
                                                             throws LdapException
        Process the connect.
        Returns:
        A Future that can be used to check the status of the connection
        Throws:
        LdapException - If we weren't able to connect
      • addAsync

        public AddFuture addAsync​(Entry entry)
                           throws LdapException
        Add an entry to the server asynchronously. This is a non blocking add : the user has to get for the response from the returned Future.
        Specified by:
        addAsync in interface LdapAsyncConnection
        Parameters:
        entry - The entry to add
        Returns:
        the add operation's future
        Throws:
        LdapException - if some error occurred
      • abandon

        public void abandon​(int messageId)
        Abandons a request submitted to the server for performing a particular operation. The abandonRequest is always non-blocking, because no response is expected
        Specified by:
        abandon in interface LdapConnection
        Parameters:
        messageId - the ID of the request message sent to the server
      • abandon

        public void abandon​(AbandonRequest abandonRequest)
        An abandon request essentially with the request message ID of the operation to be canceled and/or potentially some controls and timeout (the controls and timeout are not mandatory). The abandonRequest is always non-blocking, because no response is expected.
        Specified by:
        abandon in interface LdapConnection
        Parameters:
        abandonRequest - the abandon operation's request
      • bindAsync

        public BindFuture bindAsync​(String name)
                             throws LdapException
        Asynchronous unauthenticated authentication bind
        Parameters:
        name - The name we use to authenticate the user. It must be a valid Dn
        Returns:
        The BindResponse LdapResponse
        Throws:
        LdapException - if some error occurred
      • bindAsync

        public BindFuture bindAsync​(Dn name)
                             throws LdapException
        Asynchronous unauthenticated authentication Bind on a server.
        Parameters:
        name - The name we use to authenticate the user. It must be a valid Dn
        Returns:
        The BindResponse LdapResponse
        Throws:
        LdapException - if some error occurred
      • bindAsync

        public BindFuture bindAsync​(Dn name,
                                    String credentials)
                             throws LdapException
        Simple asynchronous Bind on a server.
        Specified by:
        bindAsync in interface LdapAsyncConnection
        Parameters:
        name - The name we use to authenticate the user, it must be a valid Dn
        credentials - The password, it can't be null
        Returns:
        the bind operation's future
        Throws:
        LdapException - if some error occurred
      • bindSaslPlain

        public BindResponse bindSaslPlain​(String authcid,
                                          String credentials)
                                   throws LdapException
        SASL PLAIN Bind on a server.
        Parameters:
        authcid - The Authentication identity
        credentials - The password. It can't be null
        Returns:
        The BindResponse LdapResponse
        Throws:
        LdapException - if some error occurred
      • bindSaslPlain

        public BindResponse bindSaslPlain​(String authzid,
                                          String authcid,
                                          String credentials)
                                   throws LdapException
        SASL PLAIN Bind on a server.
        Parameters:
        authzid - The Authorization identity
        authcid - The Authentication identity
        credentials - The password. It can't be null
        Returns:
        The BindResponse LdapResponse
        Throws:
        LdapException - if some error occurred
      • bindSaslCramMd5

        public BindResponse bindSaslCramMd5​(String userName,
                                            String credentials)
                                     throws LdapException
        Bind to the server using the SASL CRAM-MD5 mechanism.
        Parameters:
        userName - The user name
        credentials - The user credentials
        Returns:
        A LdapResponse containing the result
        Throws:
        LdapException - if some error occurred
      • bindSaslDigestMd5

        public BindResponse bindSaslDigestMd5​(String userName,
                                              String credentials)
                                       throws LdapException
        Bind to the server using the SASL DIGEST-MD5 mechanism.
        Parameters:
        userName - The user name
        credentials - The user credentials
        Returns:
        A LdapResponse containing the result
        Throws:
        LdapException - if some error occurred
      • bind

        public BindResponse bind​(SaslCramMd5Request request)
                          throws LdapException
        Bind to the server using a CramMd5Request object.
        Parameters:
        request - The CramMd5Request POJO containing all the needed parameters
        Returns:
        A LdapResponse containing the result
        Throws:
        LdapException - if some error occurred
      • bindAsync

        public BindFuture bindAsync​(SaslRequest request)
                             throws LdapException
        Do an asynchronous bind, based on a SaslPlainRequest.
        Parameters:
        request - The SaslPlainRequest POJO containing all the needed parameters
        Returns:
        The bind operation's future
        Throws:
        LdapException - if some error occurred
      • bind

        public BindResponse bind​(SaslDigestMd5Request request)
                          throws LdapException
        Bind to the server using a DigestMd5Request object.
        Parameters:
        request - The DigestMd5Request POJO containing all the needed parameters
        Returns:
        A LdapResponse containing the result
        Throws:
        LdapException - if some error occurred
      • bind

        public BindResponse bind​(SaslGssApiRequest request)
                          throws LdapException
        Bind to the server using a GssApiRequest object.
        Parameters:
        request - The GssApiRequest POJO containing all the needed parameters
        Returns:
        A LdapResponse containing the result
        Throws:
        LdapException - if some error occurred
      • bind

        public BindResponse bind​(SaslExternalRequest request)
                          throws LdapException
        Bind to the server using a SaslExternalRequest object.
        Parameters:
        request - The SaslExternalRequest POJO containing all the needed parameters
        Returns:
        A LdapResponse containing the result
        Throws:
        LdapException - if some error occurred
      • bindAsync

        public BindFuture bindAsync​(SaslGssApiRequest request)
                             throws LdapException
        Do an asynchronous bind, based on a GssApiRequest.
        Parameters:
        request - The GssApiRequest POJO containing all the needed parameters
        Returns:
        The bind operation's future
        Throws:
        LdapException - if some error occurred
      • search

        public EntryCursor search​(Dn baseDn,
                                  String filter,
                                  SearchScope scope,
                                  String... attributes)
                           throws LdapException
        Do a search, on the base object, using the given filter and scope. The SearchRequest parameters default to
        • DerefAlias : ALWAYS
        • SizeLimit : none
        • TimeLimit : none
        • TypesOnly : false
        Specified by:
        search in interface LdapConnection
        Parameters:
        baseDn - The base for the search. It must be a valid distinguished name and can't be emtpy
        filter - The filter to use for this search. It can't be empty
        scope - The search scope : OBJECT, ONELEVEL or SUBTREE
        attributes - The attributes to use for this search
        Returns:
        An EntryCursor on the result.
        Throws:
        LdapException - if some error occurred
      • search

        public EntryCursor search​(String baseDn,
                                  String filter,
                                  SearchScope scope,
                                  String... attributes)
                           throws LdapException
        Do a search, on the base object, using the given filter and scope. The SearchRequest parameters default to
        • DerefAlias : ALWAYS
        • SizeLimit : none
        • TimeLimit : none
        • TypesOnly : false
        Specified by:
        search in interface LdapConnection
        Parameters:
        baseDn - The base for the search. It must be a valid distinguished name, and can't be emtpy
        filter - The filter to use for this search. It can't be empty
        scope - The search scope : OBJECT, ONELEVEL or SUBTREE
        attributes - The attributes to use for this search
        Returns:
        An EntryCursor on the result.
        Throws:
        LdapException - if some error occurred
      • searchAsync

        public SearchFuture searchAsync​(Dn baseDn,
                                        String filter,
                                        SearchScope scope,
                                        String... attributes)
                                 throws LdapException
        Do an asynchronous search, on the base object, using the given filter. The SearchRequest parameters default to :
         Scope : ONE
         DerefAlias : ALWAYS
         SizeLimit : none
         TimeLimit : none
         TypesOnly : false
         Attributes : all the user's attributes.
         This method is blocking.
         
        Specified by:
        searchAsync in interface LdapAsyncConnection
        Parameters:
        baseDn - The base for the search, it must be a valid Dn, and can't be empty
        filter - The filter to use for this search, it can't be empty
        scope - The search scope : OBJECT, ONELEVEL or SUBTREE
        attributes - The attributes for this search
        Returns:
        the search operation's future
        Throws:
        LdapException - if some error occurred
      • searchAsync

        public SearchFuture searchAsync​(String baseDn,
                                        String filter,
                                        SearchScope scope,
                                        String... attributes)
                                 throws LdapException
        Do an asynchronous search, on the base object, using the given filter. The SearchRequest parameters default to :
         Scope : ONE
         DerefAlias : ALWAYS
         SizeLimit : none
         TimeLimit : none
         TypesOnly : false
         Attributes : all the user's attributes.
         This method is blocking.
         
        Specified by:
        searchAsync in interface LdapAsyncConnection
        Parameters:
        baseDn - The base for the search, it must be a valid Dn, and can't be emtpy
        filter - The filter to use for this search, it can't be empty
        scope - The search scope : OBJECT, ONELEVEL or SUBTREE
        attributes - The attributes for this search
        Returns:
        the search operation's future
        Throws:
        LdapException - if some error occurred
      • searchAsync

        public SearchFuture searchAsync​(SearchRequest searchRequest)
                                 throws LdapException
        Do a search, on the base object, using the given filter. The SearchRequest parameters default to :
         Scope : ONE
         DerefAlias : ALWAYS
         SizeLimit : none
         TimeLimit : none
         TypesOnly : false
         Attributes : all the user's attributes.
         This method is blocking.
         
        Specified by:
        searchAsync in interface LdapAsyncConnection
        Parameters:
        searchRequest - The search request to send to the server
        Returns:
        the search operation's future
        Throws:
        LdapException - if some error occurred
      • search

        public SearchCursor search​(SearchRequest searchRequest,
                                   long localSearchTimeout)
                            throws LdapException
        Search operation with explicit specification of operation timeout. This is very useful for special-purpose search operations, such as connection liveliness test. In that case we want to make a very quick search with a very short timeout. We do not want to use the default search timeout in this case, as that is likely to be in order of seconds. That is too long for quick connection check. searchRequest.timeLimit is not going to work either, as it has very rough granularity (seconds).
        Throws:
        LdapException
      • setConnector

        public void setConnector​(org.apache.mina.core.service.IoConnector connector)
        Set the connector to use.
        Parameters:
        connector - The connector to use
      • setTimeOut

        public void setTimeOut​(long timeout)
        Set the timeout for the responses. We won't wait longer than this value.
        Specified by:
        setTimeOut in interface LdapConnection
        Parameters:
        timeout - The timeout, in milliseconds
      • exceptionCaught

        public void exceptionCaught​(org.apache.mina.core.session.IoSession session,
                                    Throwable cause)
                             throws Exception
        Handle the exception we got.
        Specified by:
        exceptionCaught in interface org.apache.mina.core.service.IoHandler
        Overrides:
        exceptionCaught in class org.apache.mina.core.service.IoHandlerAdapter
        Parameters:
        session - The session we got the exception on
        cause - The exception cause
        Throws:
        Exception - If we have had another exception
      • messageReceived

        public void messageReceived​(org.apache.mina.core.session.IoSession session,
                                    Object message)
                             throws Exception
        Handle the incoming LDAP messages. This is where we feed the cursor for search requests, or call the listener.
        Specified by:
        messageReceived in interface org.apache.mina.core.service.IoHandler
        Overrides:
        messageReceived in class org.apache.mina.core.service.IoHandlerAdapter
        Parameters:
        session - The session that received a message
        message - The received message
        Throws:
        Exception - If there is some error while processing the message
      • modify

        public void modify​(Entry entry,
                           ModificationOperation modOp)
                    throws LdapException
        Modifies all the attributes present in the entry by applying the same operation.
        Specified by:
        modify in interface LdapConnection
        Parameters:
        entry - the entry with the attributes to be modified
        modOp - the operation to be applied on all the attributes of the above entry
        Throws:
        LdapException - in case of modify operation failure or timeout happens
      • modify

        public void modify​(Dn dn,
                           Modification... modifications)
                    throws LdapException
        Applies all the modifications to the entry specified by its distinguished name.
        Specified by:
        modify in interface LdapConnection
        Parameters:
        dn - The entry's distinguished name
        modifications - The list of modifications to be applied
        Throws:
        LdapException - in case of modify operation failure or timeout happens
      • modify

        public void modify​(String dn,
                           Modification... modifications)
                    throws LdapException
        Applies all the modifications to the entry specified by its distinguished name.
        Specified by:
        modify in interface LdapConnection
        Parameters:
        dn - The entry's distinguished name, it must be a valid distinguished name.
        modifications - The list of modifications to be applied
        Throws:
        LdapException - in case of modify operation failure or timeout happens
      • modify

        public ModifyResponse modify​(ModifyRequest modRequest)
                              throws LdapException
        Performs an modify operation based on the modifications present in the modify request.
        Specified by:
        modify in interface LdapConnection
        Parameters:
        modRequest - the modify request object
        Returns:
        the modify operation's response
        Throws:
        LdapException - in case of modify operation failure or timeout happens
      • rename

        public void rename​(String entryDn,
                           String newRdn,
                           boolean deleteOldRdn)
                    throws LdapException
        Renames the given entryDn with new relative distinguished name and deletes the old relative distinguished name if deleteOldRdn is set to true.
        Specified by:
        rename in interface LdapConnection
        Parameters:
        entryDn - the target distinguished name.
        newRdn - new relative distinguished name for the target distinguished name.
        deleteOldRdn - flag to indicate whether to delete the old relative distinguished name
        Throws:
        LdapException - if some error occurred
        See Also:
        LdapConnection.rename(Dn, Rdn, boolean)
      • rename

        public void rename​(Dn entryDn,
                           Rdn newRdn,
                           boolean deleteOldRdn)
                    throws LdapException
        Renames the given entryDn with new relative distinguished name and deletes the old relative distinguished name if deleteOldRdn is set to true.
        Specified by:
        rename in interface LdapConnection
        Parameters:
        entryDn - the target distinguished name.
        newRdn - new relative distinguished name for the target distinguished name.
        deleteOldRdn - flag to indicate whether to delete the old relative distinguished name
        Throws:
        LdapException - if some error occurred
      • move

        public void move​(Dn entryDn,
                         Dn newSuperiorDn)
                  throws LdapException
        Moves the given entry distinguished name under the new superior distinguished name.
        Specified by:
        move in interface LdapConnection
        Parameters:
        entryDn - the distinguished name of the target entry
        newSuperiorDn - distinguished name of the new parent/superior
        Throws:
        LdapException - if some error occurred
      • moveAndRename

        public void moveAndRename​(Dn entryDn,
                                  Dn newDn,
                                  boolean deleteOldRdn)
                           throws LdapException
        Moves and renames the given entryDn. The old relative distinguished name will be deleted if requested.
        Specified by:
        moveAndRename in interface LdapConnection
        Parameters:
        entryDn - The original entry distinguished name.
        newDn - The new entry distinguished name.
        deleteOldRdn - Tells if the old relative distinguished name must be removed
        Throws:
        LdapException - if some error occurred
      • moveAndRename

        public void moveAndRename​(String entryDn,
                                  String newDn,
                                  boolean deleteOldRdn)
                           throws LdapException
        Moves and renames the given entryDn. The old relative distinguished name will be deleted if requested.
        Specified by:
        moveAndRename in interface LdapConnection
        Parameters:
        entryDn - The original entry distinguished name.
        newDn - The new entry distinguished name.
        deleteOldRdn - Tells if the old relative distinguished name must be removed
        Throws:
        LdapException - if some error occurred
      • delete

        public void delete​(String dn)
                    throws LdapException
        Deletes the entry with the given distinguished name.
        Specified by:
        delete in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name, it must be a valid distinguished name.
        Throws:
        LdapException - If the distinguished name is not valid or if the deletion failed
      • delete

        public void delete​(Dn dn)
                    throws LdapException
        Deletes the entry with the given distinguished name.
        Specified by:
        delete in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name
        Throws:
        LdapException - If the distinguished name is not valid or if the deletion failed
      • deleteTree

        public void deleteTree​(Dn dn)
                        throws LdapException
        deletes the entry with the given Dn, and all its children
        Parameters:
        dn - the target entry's Dn
        Throws:
        LdapException - If the Dn is not valid or if the deletion failed
      • deleteTree

        public void deleteTree​(String dn)
                        throws LdapException
        deletes the entry with the given Dn, and all its children
        Parameters:
        dn - the target entry's Dn as a String
        Throws:
        LdapException - If the Dn is not valid or if the deletion failed
      • compare

        public boolean compare​(String dn,
                               String attributeName,
                               String value)
                        throws LdapException
        Compares whether a given attribute's value matches that of the existing value of the attribute present in the entry with the given distinguished name.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name, it must be a valid distinguished name.
        attributeName - the attribute's name
        value - a String value with which the target entry's attribute value to be compared with
        Returns:
        true if the value matches, false otherwise
        Throws:
        LdapException - if some error occurred
      • compare

        public boolean compare​(String dn,
                               String attributeName,
                               byte[] value)
                        throws LdapException
        Compares whether a given attribute's value matches that of the existing value of the attribute present in the entry with the given distinguished name.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name, it must be a valid distinguished name.
        attributeName - the attribute's name
        value - a byte[] value with which the target entry's attribute value to be compared with
        Returns:
        true if the value matches, false otherwise
        Throws:
        LdapException - if some error occurred
      • compare

        public boolean compare​(String dn,
                               String attributeName,
                               Value value)
                        throws LdapException
        Compares whether a given attribute's value matches that of the existing value of the attribute present in the entry with the given distinguished name.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name, it must be a valid distinguished name.
        attributeName - the attribute's name
        value - a Value<?> value with which the target entry's attribute value to be compared with
        Returns:
        true if the value matches, false otherwise
        Throws:
        LdapException - if some error occurred
      • compare

        public boolean compare​(Dn dn,
                               String attributeName,
                               String value)
                        throws LdapException
        Compares whether a given attribute's value matches that of the existing value of the attribute present in the entry with the given distinguished name.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name
        attributeName - the attribute's name
        value - a String value with which the target entry's attribute value to be compared with
        Returns:
        true if the value matches, false otherwise
        Throws:
        LdapException - if some error occurred
      • compare

        public boolean compare​(Dn dn,
                               String attributeName,
                               byte[] value)
                        throws LdapException
        Compares whether a given attribute's value matches that of the existing value of the attribute present in the entry with the given distinguished name.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name
        attributeName - the attribute's name
        value - a byte[] value with which the target entry's attribute value to be compared with
        Returns:
        true if the value matches, false otherwise
        Throws:
        LdapException - if some error occurred
      • compare

        public boolean compare​(Dn dn,
                               String attributeName,
                               Value value)
                        throws LdapException
        Compares whether a given attribute's value matches that of the existing value of the attribute present in the entry with the given distinguished name.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        dn - the target entry's distinguished name
        attributeName - the attribute's name
        value - a Value<?> value with which the target entry's attribute value to be compared with
        Returns:
        true if the value matches, false otherwise
        Throws:
        LdapException - if some error occurred
      • compare

        public CompareResponse compare​(CompareRequest compareRequest)
                                throws LdapException
        Compares an entry's attribute's value with that of the given value.
        Specified by:
        compare in interface LdapConnection
        Parameters:
        compareRequest - the compare request which contains the target distinguished name, attribute name and value
        Returns:
        compare operation's response
        Throws:
        LdapException - if some error occurred
      • extended

        public ExtendedResponse extended​(Oid oid,
                                         byte[] value)
                                  throws LdapException
        Sends a extended operation request to the server with the given OID and value.
        Specified by:
        extended in interface LdapConnection
        Parameters:
        oid - the object identifier of the extended operation
        value - value to be used by the extended operation, can be a null value
        Returns:
        extended operation's response
        Throws:
        LdapException - if some error occurred
      • exists

        public boolean exists​(String dn)
                       throws LdapException
        Tells if an entry exists in the server.
        Specified by:
        exists in interface LdapConnection
        Parameters:
        dn - The distinguished name of the entry to check for existence, must be a valid distinguished name.
        Returns:
        true if the entry exists, false otherwise. Note that if the entry exists but if the user does not have the permission to read it, false will also be returned
        Throws:
        LdapException - if some error occurred
      • exists

        public boolean exists​(Dn dn)
                       throws LdapException
        Tells if an Entry exists in the server.
        Specified by:
        exists in interface LdapConnection
        Parameters:
        dn - The distinguished name of the entry to check for existence
        Returns:
        true if the entry exists, false otherwise. Note that if the entry exists but if the user does not have the permission to read it, false will also be returned
        Throws:
        LdapException - if some error occurred
      • getRootDse

        public Entry getRootDse()
                         throws LdapException
        Get back the RooDSE from the connected server. All user and operational attributes are returned.
        Specified by:
        getRootDse in interface LdapConnection
        Returns:
        The Entry containing all the information about the rootDSE
        Throws:
        LdapException - If the rootDSE can't be read
      • getRootDse

        public Entry getRootDse​(String... attributes)
                         throws LdapException
        Get back the RooDSE from the connected server. The user can provide the list of attributes he wants to get back. Sending "*" will return all the user attributes, sending "+" will return all the operational attributes.
        Specified by:
        getRootDse in interface LdapConnection
        Parameters:
        attributes - The list of attributes to return
        Returns:
        The Entry containing all the information about the rootDSE
        Throws:
        LdapException - If the rootDSE can't be read
      • lookup

        public Entry lookup​(Dn dn)
                     throws LdapException
        Searches for an entry having the given distinguished name..
        Specified by:
        lookup in interface LdapConnection
        Parameters:
        dn - the distinguished name of the entry to be fetched
        Returns:
        the Entry with the given distinguished name or null if no entry exists with that distinguished name.
        Throws:
        LdapException - in case of any problems while searching for the distinguished name or if the returned response contains a referral
        See Also:
        LdapConnection.lookup(Dn, String...)
      • lookup

        public Entry lookup​(String dn)
                     throws LdapException
        Searches for an entry having the given distinguished name.
        Specified by:
        lookup in interface LdapConnection
        Parameters:
        dn - the distinguished name of the entry to be fetched
        Returns:
        the Entry with the given distinguished name or null if no entry exists with that distinguished name.
        Throws:
        LdapException - in case of any problems while searching for the distinguished name or if the returned response contains a referral
        See Also:
        LdapConnection.lookup(String, String...)
      • lookup

        public Entry lookup​(Dn dn,
                            String... attributes)
                     throws LdapException
        Searches for an entry having the given distinguished name.
        Specified by:
        lookup in interface LdapConnection
        Parameters:
        dn - the distinguished name of the entry to be fetched
        attributes - the attributes to be returned along with entry
        Returns:
        the Entry with the given distinguished name or null if no entry exists with that distinguished name.
        Throws:
        LdapException - in case of any problems while searching for the distinguished name or if the returned response contains a referral
      • lookup

        public Entry lookup​(Dn dn,
                            Control[] controls,
                            String... attributes)
                     throws LdapException
        Searches for an entry having the given distinguished name.
        Specified by:
        lookup in interface LdapConnection
        Parameters:
        dn - the distinguished name of the entry to be fetched
        controls - the controls to use
        attributes - the attributes to be returned along with entry
        Returns:
        the Entry with the given distinguished name or null if no entry exists with that distinguished name.
        Throws:
        LdapException - in case of any problems while searching for the distinguished name or if the returned response contains a referral
      • lookup

        public Entry lookup​(String dn,
                            String... attributes)
                     throws LdapException
        Searches for an entry having the given distinguished name.
        Specified by:
        lookup in interface LdapConnection
        Parameters:
        dn - the distinguished name of the entry to be fetched
        attributes - the attributes to be returned along with entry
        Returns:
        the Entry with the given distinguished name or null if no entry exists with that distinguished name.
        Throws:
        LdapException - in case of any problems while searching for the distinguished name or if the returned response contains a referral
        See Also:
        LdapConnection.lookup(Dn, String...)
      • lookup

        public Entry lookup​(String dn,
                            Control[] controls,
                            String... attributes)
                     throws LdapException
        Searches for an entry having the given distinguished name.
        Specified by:
        lookup in interface LdapConnection
        Parameters:
        dn - the distinguished name of the entry to be fetched
        controls - the controls to use
        attributes - the attributes to be returned along with entry
        Returns:
        the Entry with the given distinguished name or null if no entry exists with that distinguished name.
        Throws:
        LdapException - in case of any problems while searching for the distinguished name or if the returned response contains a referral
        See Also:
        LdapConnection.lookup(Dn, String...)
      • loadSchema

        public void loadSchema()
                        throws LdapException
        Loads all the default schemas that are bundled with the API.

        Note: This method enables all schemas prior to loading.
        Specified by:
        loadSchema in interface LdapConnection
        Throws:
        LdapException - in case of problems while loading the schema
      • loadSchemaRelaxed

        public void loadSchemaRelaxed()
                               throws LdapException
        Loads all the default schemas that are bundled with the API, in a relaxed mode.

        Note: This method enables all schemas prior to loading.
        The relaxed mode will allow inconsistencies in the schema.
        Specified by:
        loadSchemaRelaxed in interface LdapConnection
        Throws:
        LdapException - in case of problems while loading the schema
      • addSchema

        public void addSchema​(File schemaFile)
                       throws LdapException
        parses the given schema file present in OpenLDAP schema format and adds all the SchemaObjects present in it to the SchemaManager
        Parameters:
        schemaFile - the schema file in OpenLDAP schema format
        Throws:
        LdapException - in case of any errors while parsing
      • isRequestCompleted

        public boolean isRequestCompleted​(int messageId)
        Checks if a request has been completed, or not.
        Specified by:
        isRequestCompleted in interface LdapConnection
        Parameters:
        messageId - ID of the request
        Returns:
        true if the request has been completed, false is still being processed
      • doesFutureExistFor

        public boolean doesFutureExistFor​(int messageId)
        Checks if there is a ResponseFuture associated with the given message ID.
        Specified by:
        doesFutureExistFor in interface LdapConnection
        Parameters:
        messageId - ID of the request
        Returns:
        true if there is a non-null future exists, false otherwise
      • inputClosed

        public void inputClosed​(org.apache.mina.core.session.IoSession session)
                         throws Exception
        Specified by:
        inputClosed in interface org.apache.mina.core.service.IoHandler
        Overrides:
        inputClosed in class org.apache.mina.core.service.IoHandlerAdapter
        Throws:
        Exception
      • sessionCreated

        public void sessionCreated​(org.apache.mina.core.session.IoSession session)
                            throws Exception
        This method is called when a new session is created. We will store some informations that the session will need to process incoming requests.
        Specified by:
        sessionCreated in interface org.apache.mina.core.service.IoHandler
        Overrides:
        sessionCreated in class org.apache.mina.core.service.IoHandlerAdapter
        Parameters:
        session - the newly created session
        Throws:
        Exception
      • sessionClosed

        public void sessionClosed​(org.apache.mina.core.session.IoSession session)
                           throws Exception
        Specified by:
        sessionClosed in interface org.apache.mina.core.service.IoHandler
        Overrides:
        sessionClosed in class org.apache.mina.core.service.IoHandlerAdapter
        Throws:
        Exception
      • startTls

        public void startTls()
                      throws LdapException
        Sends the StartTLS extended request to server and adds a security layer upon receiving a response with successful result. Note that we will use the default LDAP connection.
        Throws:
        LdapException - If the StartTLS operation failed
      • bindSasl

        public BindFuture bindSasl​(SaslRequest saslRequest)
                            throws LdapException
        Process the SASL Bind. It's a dialog with the server, we will send a first BindRequest, receive a response and the, if this response is a challenge, continue by sending a new BindRequest with the requested informations.
        Parameters:
        saslRequest - The SASL request object containing all the needed parameters
        Returns:
        A BindResponse containing the result
        Throws:
        LdapException - if some error occurred
      • getSocketSessionConfig

        public org.apache.mina.transport.socket.SocketSessionConfig getSocketSessionConfig()
        Returns:
        the socketSessionConfig
      • setSocketSessionConfig

        public void setSocketSessionConfig​(org.apache.mina.transport.socket.SocketSessionConfig socketSessionConfig)
        Parameters:
        socketSessionConfig - the socketSessionConfig to set
      • event

        public void event​(org.apache.mina.core.session.IoSession session,
                          org.apache.mina.filter.FilterEvent event)
                   throws Exception
        Specified by:
        event in interface org.apache.mina.core.service.IoHandler
        Overrides:
        event in class org.apache.mina.core.service.IoHandlerAdapter
        Throws:
        Exception