On 13/05/2020 18:06, Christopher Cudennec wrote:

Hi everyone!

We would like to implement our own handling of AbandonRequests (still trying to proxy another LDAP server 😉).

Can someone explain why AbandonRequests are not passed to handler classes? The code snippet below comes from LdapRequestHandler:

```

if ( message instanceof AbandonRequest )
{
return;
}

handle( ldapSession, message );

```

This makes it difficult for us to handle the request, i.e. sending it to the proxied master server. As this case is handled explicitly there must be a reason I guess.

Hi Christopher.

I see what you are trying to do, and this is a missing piece in our design.

Bottom line, yes, we should have added a abandon() method to the interceptor chain, for an implementor to be able to deal with that.


There is no real difficulties here, it's all about :

- creating an AbandonOperationContext class to store the request. This context will be passed through all the abandon() methods in interceptors

- add a abandon() method in the CoreSession interface and same thing in the OperationManager interface (and of course in their implementations)

- update the OperationEnum enum to add the Abandon operation in it

- deal with the session closure at some point in the chain (probably leaving it where it currently is, ie in the AbandonRequestHandler class). Something like :


public class AbandonRequestHandler extends LdapRequestHandler<AbandonRequest>
{
    /** The logger for this class */
    private static final Logger LOG = LoggerFactory.getLogger( AbandonRequestHandler.class );

    /**
     * {@inheritDoc}
     */
    public void handle( LdapSession session, AbandonRequest abandonRequest ) throws Exception
    {
        LOG.debug( "Handling request: {}", abandonRequest );
        int abandonedId = abandonRequest.getAbandoned();

        if ( abandonedId < 0 )
        {
            return;
        }

        // Call the underlying layer to inject the new entry
        CoreSession coreSession = session.getCoreSession();
        coreSession.abandon( abandonRequest );

        session.abandonOutstandingRequest( abandonedId );
    }
}

Cheers,

Christopher


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to