Search in sources :

Example 11 with AbandonRequest

use of org.apache.directory.api.ldap.model.message.AbandonRequest in project directory-ldap-api by apache.

the class LdapNetworkConnection method abandon.

// ------------------------ The LDAP operations ------------------------//
/**
 * {@inheritDoc}
 */
@Override
public void abandon(int messageId) {
    if (messageId < 0) {
        String msg = "Cannot abandon a negative message ID";
        LOG.debug(msg);
        throw new IllegalArgumentException(msg);
    }
    AbandonRequest abandonRequest = new AbandonRequestImpl();
    abandonRequest.setAbandoned(messageId);
    abandonInternal(abandonRequest);
}
Also used : AbandonRequest(org.apache.directory.api.ldap.model.message.AbandonRequest) AbandonRequestImpl(org.apache.directory.api.ldap.model.message.AbandonRequestImpl)

Example 12 with AbandonRequest

use of org.apache.directory.api.ldap.model.message.AbandonRequest in project directory-ldap-api by apache.

the class QuirkySchemaTest method createFakeConnection.

private LdapConnection createFakeConnection(final String schemaFileName) {
    return new LdapConnection() {

        @Override
        public void unBind() throws LdapException {
        }

        @Override
        public void setTimeOut(long timeOut) {
        }

        @Override
        public void setSchemaManager(SchemaManager schemaManager) {
        }

        @Override
        public void setBinaryAttributeDetector(BinaryAttributeDetector binaryAttributeDetecter) {
        }

        @Override
        public SearchCursor search(SearchRequest searchRequest) throws LdapException {
            return null;
        }

        @Override
        public EntryCursor search(String baseDn, String filter, SearchScope scope, String... attributes) throws LdapException {
            return null;
        }

        @Override
        public EntryCursor search(Dn baseDn, String filter, SearchScope scope, String... attributes) throws LdapException {
            return null;
        }

        @Override
        public void rename(Dn entryDn, Rdn newRdn, boolean deleteOldRdn) throws LdapException {
        }

        @Override
        public void rename(String entryDn, String newRdn, boolean deleteOldRdn) throws LdapException {
        }

        @Override
        public void rename(Dn entryDn, Rdn newRdn) throws LdapException {
        }

        @Override
        public void rename(String entryDn, String newRdn) throws LdapException {
        }

        @Override
        public void moveAndRename(String entryDn, String newDn, boolean deleteOldRdn) throws LdapException {
        }

        @Override
        public void moveAndRename(Dn entryDn, Dn newDn, boolean deleteOldRdn) throws LdapException {
        }

        @Override
        public void moveAndRename(String entryDn, String newDn) throws LdapException {
        }

        @Override
        public void moveAndRename(Dn entryDn, Dn newDn) throws LdapException {
        }

        @Override
        public void move(Dn entryDn, Dn newSuperiorDn) throws LdapException {
        }

        @Override
        public void move(String entryDn, String newSuperiorDn) throws LdapException {
        }

        @Override
        public ModifyDnResponse modifyDn(ModifyDnRequest modDnRequest) throws LdapException {
            return null;
        }

        @Override
        public ModifyResponse modify(ModifyRequest modRequest) throws LdapException {
            return null;
        }

        @Override
        public void modify(Entry entry, ModificationOperation modOp) throws LdapException {
        }

        @Override
        public void modify(String dn, Modification... modifications) throws LdapException {
        }

        @Override
        public void modify(Dn dn, Modification... modifications) throws LdapException {
        }

        @Override
        public Entry lookup(String dn, Control[] controls, String... attributes) throws LdapException {
            return lookup(new Dn(dn));
        }

        @Override
        public Entry lookup(String dn, String... attributes) throws LdapException {
            return lookup(new Dn(dn));
        }

        @Override
        public Entry lookup(Dn dn, Control[] controls, String... attributes) throws LdapException {
            return lookup(dn);
        }

        @Override
        public Entry lookup(Dn dn, String... attributes) throws LdapException {
            return lookup(dn);
        }

        @Override
        public Entry lookup(String dn) throws LdapException {
            return lookup(new Dn(dn));
        }

        @Override
        public Entry lookup(Dn dn) throws LdapException {
            if (dn.isRootDse()) {
                Entry entry = new DefaultEntry(dn);
                entry.add(SchemaConstants.SUBSCHEMA_SUBENTRY_AT, SCHEMA_DN);
                return entry;
            } else if (dn.toString().equals(SCHEMA_DN)) {
                Entry entry = loadSchemaEntry(schemaFileName);
                return entry;
            } else {
                throw new UnsupportedOperationException("Unexpected DN " + dn);
            }
        }

        @Override
        public void loadSchemaRelaxed() throws LdapException {
        }

        @Override
        public void loadSchema() throws LdapException {
        }

        @Override
        public boolean isRequestCompleted(int messageId) {
            return true;
        }

        @Override
        public boolean isControlSupported(String controlOID) throws LdapException {
            return true;
        }

        @Override
        public boolean isConnected() {
            return true;
        }

        @Override
        public boolean isAuthenticated() {
            return false;
        }

        @Override
        public List<String> getSupportedControls() throws LdapException {
            return null;
        }

        @Override
        public SchemaManager getSchemaManager() {
            return null;
        }

        @Override
        public Entry getRootDse(String... attributes) throws LdapException {
            return lookup(Dn.ROOT_DSE);
        }

        @Override
        public Entry getRootDse() throws LdapException {
            return lookup(Dn.ROOT_DSE);
        }

        @Override
        public LdapApiService getCodecService() {
            return null;
        }

        @Override
        public BinaryAttributeDetector getBinaryAttributeDetector() {
            return null;
        }

        @Override
        public ExtendedResponse extended(ExtendedRequest extendedRequest) throws LdapException {
            return null;
        }

        @Override
        public ExtendedResponse extended(Oid oid, byte[] value) throws LdapException {
            return null;
        }

        @Override
        public ExtendedResponse extended(Oid oid) throws LdapException {
            return null;
        }

        @Override
        public ExtendedResponse extended(String oid, byte[] value) throws LdapException {
            return null;
        }

        @Override
        public ExtendedResponse extended(String oid) throws LdapException {
            return null;
        }

        @Override
        public boolean exists(Dn dn) throws LdapException {
            return false;
        }

        @Override
        public boolean exists(String dn) throws LdapException {
            return false;
        }

        @Override
        public boolean doesFutureExistFor(int messageId) {
            return false;
        }

        @Override
        public DeleteResponse delete(DeleteRequest deleteRequest) throws LdapException {
            return null;
        }

        @Override
        public void delete(Dn dn) throws LdapException {
        }

        @Override
        public void delete(String dn) throws LdapException {
        }

        @Override
        public boolean connect() throws LdapException {
            return true;
        }

        @Override
        public CompareResponse compare(CompareRequest compareRequest) throws LdapException {
            return null;
        }

        @Override
        public boolean compare(Dn dn, String attributeName, byte[] value) throws LdapException {
            return false;
        }

        @Override
        public boolean compare(Dn dn, String attributeName, String value) throws LdapException {
            return false;
        }

        @Override
        public boolean compare(String dn, String attributeName, byte[] value) throws LdapException {
            return false;
        }

        @Override
        public boolean compare(String dn, String attributeName, String value) throws LdapException {
            return false;
        }

        @Override
        public void close() throws IOException {
        }

        @Override
        public BindResponse bind(BindRequest bindRequest) throws LdapException {
            return null;
        }

        @Override
        public void bind(Dn name, String credentials) throws LdapException {
        }

        @Override
        public void bind(Dn name) throws LdapException {
        }

        @Override
        public void bind(String name, String credentials) throws LdapException {
        }

        @Override
        public void bind(String name) throws LdapException {
        }

        @Override
        public void bind() throws LdapException {
        }

        @Override
        public void anonymousBind() throws LdapException {
        }

        @Override
        public AddResponse add(AddRequest addRequest) throws LdapException {
            return null;
        }

        @Override
        public void add(Entry entry) throws LdapException {
        }

        @Override
        public void abandon(AbandonRequest abandonRequest) {
        }

        @Override
        public void abandon(int messageId) {
        }

        @Override
        public boolean compare(String dn, String attributeName, Value value) throws LdapException {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean compare(Dn dn, String attributeName, Value value) throws LdapException {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public BindResponse bind(SaslRequest saslRequest) throws LdapException {
            // TODO Auto-generated method stub
            return null;
        }
    };
}
Also used : SearchRequest(org.apache.directory.api.ldap.model.message.SearchRequest) Modification(org.apache.directory.api.ldap.model.entry.Modification) BindRequest(org.apache.directory.api.ldap.model.message.BindRequest) AbandonRequest(org.apache.directory.api.ldap.model.message.AbandonRequest) DefaultEntry(org.apache.directory.api.ldap.model.entry.DefaultEntry) Dn(org.apache.directory.api.ldap.model.name.Dn) DefaultSchemaManager(org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager) SchemaManager(org.apache.directory.api.ldap.model.schema.SchemaManager) ModifyDnRequest(org.apache.directory.api.ldap.model.message.ModifyDnRequest) ModifyRequest(org.apache.directory.api.ldap.model.message.ModifyRequest) Oid(org.apache.directory.api.asn1.util.Oid) BinaryAttributeDetector(org.apache.directory.api.ldap.codec.api.BinaryAttributeDetector) AddRequest(org.apache.directory.api.ldap.model.message.AddRequest) DefaultEntry(org.apache.directory.api.ldap.model.entry.DefaultEntry) Entry(org.apache.directory.api.ldap.model.entry.Entry) LdifEntry(org.apache.directory.api.ldap.model.ldif.LdifEntry) CompareRequest(org.apache.directory.api.ldap.model.message.CompareRequest) ModificationOperation(org.apache.directory.api.ldap.model.entry.ModificationOperation) ExtendedRequest(org.apache.directory.api.ldap.model.message.ExtendedRequest) SearchScope(org.apache.directory.api.ldap.model.message.SearchScope) Value(org.apache.directory.api.ldap.model.entry.Value) Rdn(org.apache.directory.api.ldap.model.name.Rdn) DeleteRequest(org.apache.directory.api.ldap.model.message.DeleteRequest)

Example 13 with AbandonRequest

use of org.apache.directory.api.ldap.model.message.AbandonRequest in project directory-ldap-api by apache.

the class InitAbandonRequest method action.

/**
 * {@inheritDoc}
 */
public void action(LdapMessageContainer<AbandonRequestDecorator> container) throws DecoderException {
    // Create the AbandonRequest LdapMessage instance and store it in the container
    AbandonRequest internalAbandonRequest = new AbandonRequestImpl();
    internalAbandonRequest.setMessageId(container.getMessageId());
    AbandonRequestDecorator abandonRequest = new AbandonRequestDecorator(container.getLdapCodecService(), internalAbandonRequest);
    container.setMessage(abandonRequest);
    // The current TLV should be a integer
    // We get it and store it in MessageId
    TLV tlv = container.getCurrentTLV();
    BerValue value = tlv.getValue();
    if ((value == null) || (value.getData() == null)) {
        String msg = I18n.err(I18n.ERR_04075);
        LOG.error(msg);
        // This will generate a PROTOCOL_ERROR
        throw new DecoderException(msg);
    }
    try {
        int abandonnedMessageId = IntegerDecoder.parse(value, 0, Integer.MAX_VALUE);
        abandonRequest.setAbandoned(abandonnedMessageId);
        if (IS_DEBUG) {
            LOG.debug("AbandonMessage Id has been decoded : {}", Integer.valueOf(abandonnedMessageId));
        }
        container.setGrammarEndAllowed(true);
        return;
    } catch (IntegerDecoderException ide) {
        LOG.error(I18n.err(I18n.ERR_04076, Strings.dumpBytes(value.getData()), ide.getMessage()));
        // This will generate a PROTOCOL_ERROR
        throw new DecoderException(ide.getMessage(), ide);
    }
}
Also used : IntegerDecoderException(org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException) DecoderException(org.apache.directory.api.asn1.DecoderException) BerValue(org.apache.directory.api.asn1.ber.tlv.BerValue) IntegerDecoderException(org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException) AbandonRequest(org.apache.directory.api.ldap.model.message.AbandonRequest) AbandonRequestImpl(org.apache.directory.api.ldap.model.message.AbandonRequestImpl) AbandonRequestDecorator(org.apache.directory.api.ldap.codec.decorators.AbandonRequestDecorator) TLV(org.apache.directory.api.asn1.ber.tlv.TLV)

Example 14 with AbandonRequest

use of org.apache.directory.api.ldap.model.message.AbandonRequest in project directory-ldap-api by apache.

the class MessageDecorator method getDecorator.

/**
 * Gets the decorator associated with a given message
 *
 * @param codec The LdapApiService to use
 * @param decoratedMessage The message to decorate
 * @return The decorator instance
 */
public static MessageDecorator<? extends Message> getDecorator(LdapApiService codec, Message decoratedMessage) {
    if (decoratedMessage instanceof MessageDecorator) {
        return (MessageDecorator<?>) decoratedMessage;
    }
    MessageDecorator<?> decorator;
    switch(decoratedMessage.getType()) {
        case ABANDON_REQUEST:
            decorator = new AbandonRequestDecorator(codec, (AbandonRequest) decoratedMessage);
            break;
        case ADD_REQUEST:
            decorator = new AddRequestDecorator(codec, (AddRequest) decoratedMessage);
            break;
        case ADD_RESPONSE:
            decorator = new AddResponseDecorator(codec, (AddResponse) decoratedMessage);
            break;
        case BIND_REQUEST:
            decorator = new BindRequestDecorator(codec, (BindRequest) decoratedMessage);
            break;
        case BIND_RESPONSE:
            decorator = new BindResponseDecorator(codec, (BindResponse) decoratedMessage);
            break;
        case COMPARE_REQUEST:
            decorator = new CompareRequestDecorator(codec, (CompareRequest) decoratedMessage);
            break;
        case COMPARE_RESPONSE:
            decorator = new CompareResponseDecorator(codec, (CompareResponse) decoratedMessage);
            break;
        case DEL_REQUEST:
            decorator = new DeleteRequestDecorator(codec, (DeleteRequest) decoratedMessage);
            break;
        case DEL_RESPONSE:
            decorator = new DeleteResponseDecorator(codec, (DeleteResponse) decoratedMessage);
            break;
        case EXTENDED_REQUEST:
            decorator = codec.decorate((ExtendedRequest) decoratedMessage);
            break;
        case EXTENDED_RESPONSE:
            decorator = codec.decorate((ExtendedResponse) decoratedMessage);
            break;
        case INTERMEDIATE_RESPONSE:
            decorator = new IntermediateResponseDecorator(codec, (IntermediateResponse) decoratedMessage);
            break;
        case MODIFY_REQUEST:
            decorator = new ModifyRequestDecorator(codec, (ModifyRequest) decoratedMessage);
            break;
        case MODIFY_RESPONSE:
            decorator = new ModifyResponseDecorator(codec, (ModifyResponse) decoratedMessage);
            break;
        case MODIFYDN_REQUEST:
            decorator = new ModifyDnRequestDecorator(codec, (ModifyDnRequest) decoratedMessage);
            break;
        case MODIFYDN_RESPONSE:
            decorator = new ModifyDnResponseDecorator(codec, (ModifyDnResponse) decoratedMessage);
            break;
        case SEARCH_REQUEST:
            decorator = new SearchRequestDecorator(codec, (SearchRequest) decoratedMessage);
            break;
        case SEARCH_RESULT_DONE:
            decorator = new SearchResultDoneDecorator(codec, (SearchResultDone) decoratedMessage);
            break;
        case SEARCH_RESULT_ENTRY:
            decorator = new SearchResultEntryDecorator(codec, (SearchResultEntry) decoratedMessage);
            break;
        case SEARCH_RESULT_REFERENCE:
            decorator = new SearchResultReferenceDecorator(codec, (SearchResultReference) decoratedMessage);
            break;
        case UNBIND_REQUEST:
            decorator = new UnbindRequestDecorator(codec, (UnbindRequest) decoratedMessage);
            break;
        default:
            return null;
    }
    Map<String, Control> controls = decoratedMessage.getControls();
    if (controls != null) {
        for (Control control : controls.values()) {
            decorator.addControl(control);
        }
    }
    return decorator;
}
Also used : ModifyRequestDecorator(org.apache.directory.api.ldap.codec.decorators.ModifyRequestDecorator) SearchRequest(org.apache.directory.api.ldap.model.message.SearchRequest) DeleteRequestDecorator(org.apache.directory.api.ldap.codec.decorators.DeleteRequestDecorator) SearchResultEntryDecorator(org.apache.directory.api.ldap.codec.decorators.SearchResultEntryDecorator) AbandonRequest(org.apache.directory.api.ldap.model.message.AbandonRequest) BindRequest(org.apache.directory.api.ldap.model.message.BindRequest) DeleteResponseDecorator(org.apache.directory.api.ldap.codec.decorators.DeleteResponseDecorator) SearchResultReference(org.apache.directory.api.ldap.model.message.SearchResultReference) BindResponseDecorator(org.apache.directory.api.ldap.codec.decorators.BindResponseDecorator) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) ModifyRequest(org.apache.directory.api.ldap.model.message.ModifyRequest) AbandonRequestDecorator(org.apache.directory.api.ldap.codec.decorators.AbandonRequestDecorator) AddResponseDecorator(org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator) AddRequest(org.apache.directory.api.ldap.model.message.AddRequest) IntermediateResponseDecorator(org.apache.directory.api.ldap.codec.decorators.IntermediateResponseDecorator) IntermediateResponse(org.apache.directory.api.ldap.model.message.IntermediateResponse) Control(org.apache.directory.api.ldap.model.message.Control) BindRequestDecorator(org.apache.directory.api.ldap.codec.decorators.BindRequestDecorator) UnbindRequestDecorator(org.apache.directory.api.ldap.codec.decorators.UnbindRequestDecorator) CompareRequestDecorator(org.apache.directory.api.ldap.codec.decorators.CompareRequestDecorator) ModifyDnRequestDecorator(org.apache.directory.api.ldap.codec.decorators.ModifyDnRequestDecorator) ModifyDnResponse(org.apache.directory.api.ldap.model.message.ModifyDnResponse) SearchResultReferenceDecorator(org.apache.directory.api.ldap.codec.decorators.SearchResultReferenceDecorator) ModifyResponse(org.apache.directory.api.ldap.model.message.ModifyResponse) UnbindRequest(org.apache.directory.api.ldap.model.message.UnbindRequest) CompareResponse(org.apache.directory.api.ldap.model.message.CompareResponse) SearchResultDone(org.apache.directory.api.ldap.model.message.SearchResultDone) ModifyDnRequest(org.apache.directory.api.ldap.model.message.ModifyDnRequest) AddResponse(org.apache.directory.api.ldap.model.message.AddResponse) CompareResponseDecorator(org.apache.directory.api.ldap.codec.decorators.CompareResponseDecorator) CompareRequest(org.apache.directory.api.ldap.model.message.CompareRequest) DeleteResponse(org.apache.directory.api.ldap.model.message.DeleteResponse) ModifyResponseDecorator(org.apache.directory.api.ldap.codec.decorators.ModifyResponseDecorator) ModifyDnResponseDecorator(org.apache.directory.api.ldap.codec.decorators.ModifyDnResponseDecorator) ExtendedResponse(org.apache.directory.api.ldap.model.message.ExtendedResponse) ExtendedRequest(org.apache.directory.api.ldap.model.message.ExtendedRequest) SearchResultDoneDecorator(org.apache.directory.api.ldap.codec.decorators.SearchResultDoneDecorator) AddRequestDecorator(org.apache.directory.api.ldap.codec.decorators.AddRequestDecorator) DeleteRequest(org.apache.directory.api.ldap.model.message.DeleteRequest) SearchRequestDecorator(org.apache.directory.api.ldap.codec.decorators.SearchRequestDecorator) SearchResultEntry(org.apache.directory.api.ldap.model.message.SearchResultEntry)

Example 15 with AbandonRequest

use of org.apache.directory.api.ldap.model.message.AbandonRequest in project directory-ldap-api by apache.

the class AbandonRequestTest method testRequestWith1ControlBase64Value.

/**
 * Test parsing of a request with a (optional) Control element with Base64 value
 */
@Test
public void testRequestWith1ControlBase64Value() {
    Dsmlv2Parser parser = null;
    try {
        parser = newParser();
        parser.setInput(AbandonRequestTest.class.getResource("request_with_1_control_base64_value.xml").openStream(), "UTF-8");
        parser.parse();
    } catch (Exception e) {
        fail(e.getMessage());
    }
    AbandonRequest abandonRequest = (AbandonRequest) parser.getBatchRequest().getCurrentRequest();
    Map<String, Control> controls = abandonRequest.getControls();
    assertEquals(1, abandonRequest.getControls().size());
    Control control = controls.get("1.2.840.113556.1.4.643");
    assertNotNull(control);
    assertTrue(control.isCritical());
    assertEquals("1.2.840.113556.1.4.643", control.getOid());
    assertEquals("DSMLv2.0 rocks!!", Strings.utf8ToString(((DsmlControl<?>) control).getValue()));
}
Also used : DsmlControl(org.apache.directory.api.dsmlv2.DsmlControl) DsmlControl(org.apache.directory.api.dsmlv2.DsmlControl) Control(org.apache.directory.api.ldap.model.message.Control) AbandonRequest(org.apache.directory.api.ldap.model.message.AbandonRequest) Dsmlv2Parser(org.apache.directory.api.dsmlv2.Dsmlv2Parser) Test(org.junit.Test) AbstractTest(org.apache.directory.api.dsmlv2.AbstractTest)

Aggregations

AbandonRequest (org.apache.directory.api.ldap.model.message.AbandonRequest)17 Test (org.junit.Test)13 AbstractTest (org.apache.directory.api.dsmlv2.AbstractTest)9 Dsmlv2Parser (org.apache.directory.api.dsmlv2.Dsmlv2Parser)9 Control (org.apache.directory.api.ldap.model.message.Control)9 AbandonRequestDecorator (org.apache.directory.api.ldap.codec.decorators.AbandonRequestDecorator)6 AbandonRequestImpl (org.apache.directory.api.ldap.model.message.AbandonRequestImpl)6 DecoderException (org.apache.directory.api.asn1.DecoderException)5 DsmlControl (org.apache.directory.api.dsmlv2.DsmlControl)5 ByteBuffer (java.nio.ByteBuffer)4 EncoderException (org.apache.directory.api.asn1.EncoderException)4 Asn1Decoder (org.apache.directory.api.asn1.ber.Asn1Decoder)4 LdapMessageContainer (org.apache.directory.api.ldap.codec.api.LdapMessageContainer)4 AbstractCodecServiceTest (org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)4 CodecControl (org.apache.directory.api.ldap.codec.api.CodecControl)3 BatchRequestDsml (org.apache.directory.api.dsmlv2.request.BatchRequestDsml)2 AddRequest (org.apache.directory.api.ldap.model.message.AddRequest)2 BindRequest (org.apache.directory.api.ldap.model.message.BindRequest)2 CompareRequest (org.apache.directory.api.ldap.model.message.CompareRequest)2 DeleteRequest (org.apache.directory.api.ldap.model.message.DeleteRequest)2