directory-api mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Fisher <dfis...@vt.edu>
Subject Re: Paged Results Control
Date Thu, 30 Jun 2011 13:37:17 GMT
It's likely that I'm just coding it wrong since there aren't any docs or
samples that I can find.
This code successfully sends the control to the LDAP:

    PagedResultsImpl pri = new PagedResultsImpl();
    pri.setCritical(true);
    pri.setSize(1);
    PagedResultsDecorator prd = new
PagedResultsDecorator(LdapApiServiceFactory.getSingleton(), pri);

    SearchRequest request = new SearchRequestImpl();
    request.setScope(SearchScope.SUBTREE);
    request.setBase(new Dn("dc=vt,dc=edu"));
    request.setFilter("(uid=*)");
    request.addAllControls(new Control[] {prd, });

However, I can't get the cookie out of the response. The returned control is
of type OpaqueControl, which seems to indicate that the codec service
doesn't support this control.

--Daniel Fisher

On Wed, Jun 29, 2011 at 9:15 AM, Pierre-Arnaud Marcelot <pa@marcelot.net>wrote:

> Actually this is a little more complex...
>
> Initially Studio was only based on JNDI and some of its APIs have been
> spread all over the place.
> When, we decided to include the LDAP API and offer the choice to select the
> type of network provider (either JNDI or Apache Directory LDAP API), we
> evaluated the impact on the existing code.
> It was huge... And we decided to wrap/convert a few elements of the LDAP
> API to the JNDI API, as a first step at least...
>
> This is especially true for the controls interface which is present in a
> significant number of classes in Studio.
>
> This is why you're not finding a direct reference to the PagedResultsImpl
> class in Studio's code. Controls are converted from and to JNDI controls as
> OpaqueControl instances in the convertControls() methods of the
> org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper
> class.
>
> We use the JNDI PagedResultsControl in the
> org.apache.directory.studio.connection.core.StudioPagedResultsControl class
> where it's wrapped.
>
> I'm going to test your code on my OpenLDAP server to see if I get the same
> results.
>
> Regards,
> Pierre-Arnaud
>
> On 29 juin 2011, at 14:28, Daniel Fisher wrote:
>
> > I'm testing OpenLDAP 2.4.23 with bdb. Paged results work fine with JNDI
> and
> > JLDAP, so I'm confident the server is configured correctly. I glanced at
> the
> > studio code, but I didn't see anything that wasn't using or delegating to
> a
> > JNDI PagedResultsControl. Can you point me to some source that uses
> > org.apache.directory.shared.ldap.model.message.controls.PagedResultsImpl
> > ? Thanks.
> >
> > --Daniel Fisher
> >
> > On Wed, Jun 29, 2011 at 3:02 AM, Pierre-Arnaud Marcelot <pa@marcelot.net
> >wrote:
> >
> >> Hi Daniel,
> >>
> >> Studio's current trunk embeds the LDAP API as a replacement for JNDI
> (you
> >> can select the one you want on a connection basis).
> >> I've tested a Paged Search using it on an OpenLDAP 2.4.24 server and it
> >> worked fine.
> >> It showed me the required number of results and I was able to move
> through
> >> pages.
> >>
> >> Although, it didn't work on all database backends, like the "cn=config"
> >> database for instance.
> >> It appears only "bdb" and "hdb" database backends support this control.
> [1]
> >>
> >> Which database backend are you using for your "dc=vt,dc=edu" database  ?
> >>
> >> Regards,
> >> Pierre-Arnaud
> >>
> >> [1] —
> http://www.openldap.org/lists/openldap-software/200402/msg00508.html
> >>
> >>
> >> On 28 juin 2011, at 18:58, Daniel Fisher wrote:
> >>
> >>> Can anyone provide some sample code for using the paged results
> control?
> >>> This is basically what I'm doing now:
> >>>
> >>>   PagedResultsImpl prc = new PagedResultsImpl();
> >>>   prc.setCritical(true);
> >>>   prc.setSize(5);
> >>>
> >>>   SearchRequest request = new SearchRequestImpl();
> >>>   request.setScope(SearchScope.SUBTREE);
> >>>   request.setBase(new Dn("dc=vt,dc=edu"));
> >>>   request.setFilter("(uid=*)");
> >>>   request.addAllControls(new Control[] {prc, });
> >>>
> >>> OpenLDAP is reporting:
> >>>
> >>> conn=1014 op=1 SEARCH RESULT tag=101 err=2 nentries=0 text=paged
> results
> >>> control value is absent
> >>>
> >>> Thanks.
> >>>
> >>> --Daniel Fisher
> >>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message