On Thu, Apr 28, 2011 at 8:08 PM, Emmanuel Lecharny <[email protected]> wrote: > On 4/28/11 6:28 PM, Stefan Seelmann 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. >> >> Thoughts? > > Hmmm, that would be shitty... I tried to apply this modification on the > existing code, but sadly, we have two different implementations, > LdapCoreSessionConnection and LdapNetworkConnection. The first implements > LdapConnection, the second one implements LdapAsyncConnection. > > Changing this would create a lot of problems... > > Maybe we should keep it simple : search( SearchRequest ) returning a > SearchCursor for advanced users, and search( base, filter, scope, attrs...) > returning a Cursor<Entry> for normal users. > > wdyt ?
Yes, I agree.
