[ https://issues.apache.org/jira/browse/DIRAPI-178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Emmanuel Lecharny updated DIRAPI-178: ------------------------------------- Description: 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} was: 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. @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(); } > 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)