On Thu, Apr 28, 2011 at 7:28 PM, Stefan Seelmann <seelmann@apache.org> wrote:
> This is not an easy choice.
> The problme is that the user might be puzzled to see that a
> LdapConnection.search( SearchRequest ) returns a cursor<SearchResponse> but
> that the LdapConnection.search( base, filter, scope, attrs... ) returns a
> cursor<Entry>.
> Using send( Request ) instead first makes the API lighter (we don't have to
> create one send() method per type of request, it can be hidden in the
> LdapConnection class) and it's also for advanced users.

Another idea: We have two interfaces: LdapConnection and
LdapAsyncConnection. What about a third interface (e.g.
AdvancedLdapConnection, need to find a better name) which extends
LdapConnections. Then we can move all the methods for advanced users
to this new interface. Then the LdapConnection interface is much
smaller. We still can have a single LdapNetworkConnection class that
implements all three interfaces.


This is what I was thinking. More so like a SimpleLdapConnection which can wrap the LowLevelConnection to expose the simple easy to use methods that sit on top of the low level protocol aligned operations.