[
https://issues.apache.org/jira/browse/DIRAPI-178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15196980#comment-15196980
]
Emmanuel Lecharny commented on DIRAPI-178:
------------------------------------------
We test it on ApacheDS and OpenLDAP, because both are open source. But this is
the trick : LDAP is a protocol, not an implementation. As soon as the protocol
is implemented correctly, there is no reason that a specific function does not
work as expected. Except if there is a bug in the implementation, which might
be on the client side or on the server side.
The {{PersistentSearch}} control is damn simple, there is no cookie or things
that would be sent back by the server and kept on the client, so if it does not
work, that means you may have some problem on the server.
For {{Mircrosoft}}, the usual suspect is "let's do it slightly differently so
that our competitors have it in the butt"... And here you are :
{{The smart guys in Microsoft support Persistent Search Control in a clever way
using OID "1.2.840.113556.1.4.528" instead of the standard OID
"2.16.840.1.113730.3.4.3". Definitely, they have a name for it:
NotifyControl.}}
[http://www.forumeasy.com/forums/archive/ldappro/200703/p117381285598.html]. We
could define a new control for that.
For {{eDirectory}}, I don't know (yet).
> How to use Apache Directory API to do persistent search
> -------------------------------------------------------
>
> Key: DIRAPI-178
> URL: https://issues.apache.org/jira/browse/DIRAPI-178
> Project: Directory Client API
> Issue Type: Question
> Affects Versions: 1.0.0-M20
> Reporter: Robert Hou
>
> Persistent search in Directory Client API seems not work, the code I write as
> below: I refer to the code under DIRSERVER-1908 to complete following code.
> After the code run, it will print all the entries it searched, but the
> printed entries are not changed entries. In the while block, I clear the list
> of entries after first print, then I want to it print the entires I modified
> later, but it doesn't print.
> {code}
> @Test
> public void testPsearchMove() throws Exception
> {
> LdapNetworkConnection connection = new LdapNetworkConnection(
> "192.168.80.223", 50001);
> connection.bind("cn=robert,cn=roles,dc=tibco,dc=com", "robert");
> // Entry newOu = new DefaultEntry("uid=persist,
> ou=users,ou=system");
> // newOu.add("objectClass", "inetOrgPerson");
> // newOu.add("cn", "persist_cn");
> // newOu.add("sn", "persist_sn");
> // connection.add(newOu);
> SearchRequest sr = new SearchRequestImpl();
> sr.setBase(new Dn("dc=tibco,dc=com"));
> sr.setFilter("(objectClass=inetorgperson)");
> sr.setScope(SearchScope.SUBTREE);
> sr.addControl(new PersistentSearchImpl());
> final SearchCursor cursor = connection.search(sr);
> final List<Entry> entryList = new ArrayList<Entry>();
> Runnable r = new Runnable() {
> @Override
> public void run() {
> try {
> while (cursor.next()) {
>
> entryList.add(cursor.getEntry());
> //
> System.out.println(cursor.getEntry());
> }
> } catch (Exception e) {
> throw new RuntimeException(e);
> }
> }
> };
> new Thread(r).start();
> // connection.move(newOu.getDn(),
> newOu.getDn().getParent().getParent());
> while(true){
> Thread.sleep(1000);
> if(!entryList.isEmpty()){
> System.out.println(entryList);
> entryList.clear();
> }
> }
>
> // assertFalse(entryList.isEmpty());
> // assertEquals(1, entryList.size());
> // assertEquals("uid=persist,ou=system", entryList.get(0).getDn()
> // .getName());
> // connection.close();
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)