Search in sources :

Example 51 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method bind.

/**
 * Bind to the server using a SaslRequest object.
 *
 * @param request The SaslRequest POJO containing all the needed parameters
 * @return A LdapResponse containing the result
 * @throws LdapException if some error occurred
 */
public BindResponse bind(SaslRequest request) throws LdapException {
    if (request == null) {
        String msg = I18n.msg(I18n.MSG_03204_NULL_REQUEST);
        LOG.debug(msg);
        throw new IllegalArgumentException(msg);
    }
    BindFuture bindFuture = bindAsync(request);
    // Get the result from the future
    try {
        // Read the response, waiting for it if not available immediately
        // Get the response, blocking
        BindResponse bindResponse = bindFuture.get(timeout, TimeUnit.MILLISECONDS);
        if (bindResponse == null) {
            // We didn't received anything : this is an error
            if (LOG.isErrorEnabled()) {
                LOG.error(I18n.err(I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind"));
            }
            throw new LdapException(TIME_OUT_ERROR);
        }
        if (bindResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
            authenticated.set(true);
            // Everything is fine, return the response
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse));
            }
        } else {
            // We have had an error
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03201_BIND_FAIL, bindResponse));
            }
        }
        return bindResponse;
    } catch (Exception ie) {
        // Catch all other exceptions
        LOG.error(NO_RESPONSE_ERROR, ie);
        throw new LdapException(NO_RESPONSE_ERROR, ie);
    }
}
Also used : BindFuture(org.apache.directory.ldap.client.api.future.BindFuture) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Example 52 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method modify.

/**
 * {@inheritDoc}
 */
@Override
public ModifyResponse modify(ModifyRequest modRequest) throws LdapException {
    if (modRequest == null) {
        String msg = "Cannot process a null modifyRequest";
        LOG.debug(msg);
        throw new IllegalArgumentException(msg);
    }
    ModifyFuture modifyFuture = modifyAsync(modRequest);
    // Get the result from the future
    try {
        // Read the response, waiting for it if not available immediately
        // Get the response, blocking
        ModifyResponse modifyResponse = modifyFuture.get(timeout, TimeUnit.MILLISECONDS);
        if (modifyResponse == null) {
            // We didn't received anything : this is an error
            if (LOG.isErrorEnabled()) {
                LOG.error(I18n.err(I18n.ERR_03203_OP_FAILED_TIMEOUT, "Modify"));
            }
            throw new LdapException(TIME_OUT_ERROR);
        }
        if (modifyResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
            // Everything is fine, return the response
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03224_MODIFY_SUCCESSFUL, modifyResponse));
            }
        } else {
            if (modifyResponse instanceof ModifyNoDResponse) {
                // A NoticeOfDisconnect : deserves a special treatment
                throw new LdapException(modifyResponse.getLdapResult().getDiagnosticMessage());
            }
            // We have had an error
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03223_MODIFY_FAILED, modifyResponse));
            }
        }
        return modifyResponse;
    } catch (Exception ie) {
        // Catch all other exceptions
        LOG.error(NO_RESPONSE_ERROR, ie);
        // Send an abandon request
        if (!modifyFuture.isCancelled()) {
            abandon(modRequest.getMessageId());
        }
        throw new LdapException(ie.getMessage(), ie);
    }
}
Also used : ModifyFuture(org.apache.directory.ldap.client.api.future.ModifyFuture) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) ModifyResponse(org.apache.directory.api.ldap.model.message.ModifyResponse) ModifyNoDResponse(org.apache.directory.api.ldap.model.message.extended.ModifyNoDResponse)

Example 53 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method writeRequest.

/**
 * a reusable code block to be used in various bind methods
 */
private void writeRequest(Request request) throws LdapException {
    // Send the request to the server
    WriteFuture writeFuture = ldapSession.write(request);
    long localTimeout = timeout;
    while (localTimeout > 0) {
        // Wait only 100 ms
        boolean done = writeFuture.awaitUninterruptibly(100);
        if (done) {
            return;
        }
        // Wait for the message to be sent to the server
        if (!ldapSession.isConnected()) {
            // We didn't received anything : this is an error
            if (LOG.isErrorEnabled()) {
                LOG.error(I18n.err(I18n.ERR_03207_SOMETHING_WRONG_HAPPENED));
            }
            Exception exception = (Exception) ldapSession.removeAttribute(EXCEPTION_KEY);
            if (exception != null) {
                if (exception instanceof LdapException) {
                    throw (LdapException) exception;
                } else {
                    throw new InvalidConnectionException(exception.getMessage(), exception);
                }
            }
            throw new InvalidConnectionException("Error while sending some message : the session has been closed");
        }
        localTimeout -= 100;
    }
    if (LOG.isErrorEnabled()) {
        LOG.error(I18n.err(I18n.ERR_03208_TIMEOUT));
    }
    throw new LdapException(TIME_OUT_ERROR);
}
Also used : InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) WriteFuture(org.apache.mina.core.future.WriteFuture) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Example 54 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method lookup.

/**
 * {@inheritDoc}
 */
@Override
public Entry lookup(Dn dn, Control[] controls, String... attributes) throws LdapException {
    Entry entry = null;
    try {
        SearchRequest searchRequest = new SearchRequestImpl();
        searchRequest.setBase(dn);
        searchRequest.setFilter(LdapConstants.OBJECT_CLASS_STAR);
        searchRequest.setScope(SearchScope.OBJECT);
        searchRequest.addAttributes(attributes);
        searchRequest.setDerefAliases(AliasDerefMode.DEREF_ALWAYS);
        if ((controls != null) && (controls.length > 0)) {
            searchRequest.addAllControls(controls);
        }
        try (Cursor<Response> cursor = search(searchRequest)) {
            // Read the response
            if (cursor.next()) {
                // cursor will always hold SearchResultEntry objects cause there is no ManageDsaITControl passed with search request
                entry = ((SearchResultEntry) cursor.get()).getEntry();
            }
            // Pass through the SaerchResultDone, or stop
            // if we have other responses
            cursor.next();
        }
    } catch (CursorException e) {
        throw new LdapException(e.getMessage(), e);
    } catch (IOException ioe) {
        throw new LdapException(ioe.getMessage(), ioe);
    }
    return entry;
}
Also used : DeleteResponse(org.apache.directory.api.ldap.model.message.DeleteResponse) IntermediateResponse(org.apache.directory.api.ldap.model.message.IntermediateResponse) Response(org.apache.directory.api.ldap.model.message.Response) ModifyDnResponse(org.apache.directory.api.ldap.model.message.ModifyDnResponse) CompareNoDResponse(org.apache.directory.api.ldap.model.message.extended.CompareNoDResponse) AddNoDResponse(org.apache.directory.api.ldap.model.message.extended.AddNoDResponse) ModifyNoDResponse(org.apache.directory.api.ldap.model.message.extended.ModifyNoDResponse) BindNoDResponse(org.apache.directory.api.ldap.model.message.extended.BindNoDResponse) ResultCodeEnum.processResponse(org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse) ExtendedResponse(org.apache.directory.api.ldap.model.message.ExtendedResponse) ExtendedNoDResponse(org.apache.directory.api.ldap.model.message.extended.ExtendedNoDResponse) CompareResponse(org.apache.directory.api.ldap.model.message.CompareResponse) AddResponse(org.apache.directory.api.ldap.model.message.AddResponse) ModifyResponse(org.apache.directory.api.ldap.model.message.ModifyResponse) ModifyDnNoDResponse(org.apache.directory.api.ldap.model.message.extended.ModifyDnNoDResponse) DeleteNoDResponse(org.apache.directory.api.ldap.model.message.extended.DeleteNoDResponse) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) SearchNoDResponse(org.apache.directory.api.ldap.model.message.extended.SearchNoDResponse) SearchRequest(org.apache.directory.api.ldap.model.message.SearchRequest) Entry(org.apache.directory.api.ldap.model.entry.Entry) SearchResultEntry(org.apache.directory.api.ldap.model.message.SearchResultEntry) DefaultEntry(org.apache.directory.api.ldap.model.entry.DefaultEntry) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) SearchRequestImpl(org.apache.directory.api.ldap.model.message.SearchRequestImpl) IOException(java.io.IOException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Example 55 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method bind.

/**
 * {@inheritDoc}
 */
@Override
public BindResponse bind(BindRequest bindRequest) throws LdapException {
    if (bindRequest == null) {
        String msg = "Cannot process a null bindRequest";
        LOG.debug(msg);
        throw new IllegalArgumentException(msg);
    }
    BindFuture bindFuture = bindAsync(bindRequest);
    // Get the result from the future
    try {
        // Read the response, waiting for it if not available immediately
        // Get the response, blocking
        BindResponse bindResponse = bindFuture.get(timeout, TimeUnit.MILLISECONDS);
        if (bindResponse == null) {
            // We didn't received anything : this is an error
            if (LOG.isErrorEnabled()) {
                LOG.error(I18n.err(I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind"));
            }
            throw new LdapException(TIME_OUT_ERROR);
        }
        if (bindResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
            authenticated.set(true);
            // Everything is fine, return the response
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse));
            }
        } else {
            // We have had an error
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03201_BIND_FAIL, bindResponse));
            }
        }
        return bindResponse;
    } catch (Exception ie) {
        // Catch all other exceptions
        LOG.error(NO_RESPONSE_ERROR, ie);
        throw new LdapException(NO_RESPONSE_ERROR, ie);
    }
}
Also used : BindFuture(org.apache.directory.ldap.client.api.future.BindFuture) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Aggregations

LdapException (org.apache.directory.api.ldap.model.exception.LdapException)361 LdapConnection (org.apache.directory.ldap.client.api.LdapConnection)161 CursorException (org.apache.directory.api.ldap.model.cursor.CursorException)111 ArrayList (java.util.ArrayList)94 FinderException (org.apache.directory.fortress.core.FinderException)73 Modification (org.apache.directory.api.ldap.model.entry.Modification)70 Entry (org.apache.directory.api.ldap.model.entry.Entry)68 IOException (java.io.IOException)57 DefaultModification (org.apache.directory.api.ldap.model.entry.DefaultModification)57 DefaultEntry (org.apache.directory.api.ldap.model.entry.DefaultEntry)53 SearchCursor (org.apache.directory.api.ldap.model.cursor.SearchCursor)51 UpdateException (org.apache.directory.fortress.core.UpdateException)41 LdapInvalidDnException (org.apache.directory.api.ldap.model.exception.LdapInvalidDnException)35 Dn (org.apache.directory.api.ldap.model.name.Dn)34 SEPASecurityException (it.unibo.arces.wot.sepa.commons.exceptions.SEPASecurityException)29 LdapAuthenticationException (org.apache.directory.api.ldap.model.exception.LdapAuthenticationException)25 AttributeType (org.apache.directory.api.ldap.model.schema.AttributeType)25 Attribute (org.apache.directory.api.ldap.model.entry.Attribute)23 DecoderException (org.apache.directory.api.asn1.DecoderException)22 LdapNoPermissionException (org.apache.directory.api.ldap.model.exception.LdapNoPermissionException)22